Colobot
Public Member Functions | Static Public Member Functions | List of all members
CBot::CBotClass Class Reference

A CBot class definition. More...

#include <CBotClass.h>

Inheritance diagram for CBot::CBotClass:
Inheritance graph
[legend]

Public Member Functions

 CBotClass (const std::string &name, CBotClass *parent, bool bIntrinsic=false)
 CBotClass Constructor. Once a class is created, it is known around CBot intrinsic mode gives a class that is not managed by pointers. More...
 
 ~CBotClass ()
 CBotClass Destructor. More...
 
bool AddFunction (const std::string &name, bool rExec(CBotVar *pThis, CBotVar *pVar, CBotVar *pResult, int &Exception, void *user), CBotTypResult rCompile(CBotVar *pThis, CBotVar *&pVar))
 AddFunction This call allows to add as external new method used by the objects of this class. See (**) at end of this file for more details. More...
 
bool SetUpdateFunc (void rUpdate(CBotVar *thisVar, void *user))
 SetUpdateFunc Defines routine to be called to update the elements of the class. More...
 
bool AddItem (std::string name, CBotTypResult type, CBotVar::ProtectionLevel mPrivate=CBotVar::ProtectionLevel::Public)
 AddItem Adds an element to the class. More...
 
bool AddItem (CBotVar *pVar)
 AddItem Adds an item by passing the pointer to an instance of a variable the object is taken as is, so do not destroyed. More...
 
std::string GetName ()
 GetName Gives the name of the class. More...
 
CBotClassGetParent ()
 GetParent Gives the parent class (or nullptr). More...
 
bool IsChildOf (CBotClass *pClass)
 IsChildOf True if a class is derived (Extends) of another. More...
 
CBotVarGetVar ()
 GetVar Return the list of variables. More...
 
CBotVarGetItem (const std::string &name)
 GetItem One of the variables according to its name. More...
 
CBotVarGetItemRef (int nIdent)
 GetItemRef. More...
 
CBotTypResult CompileMethode (const std::string &name, CBotVar *pThis, CBotVar **ppParams, CBotCStack *pStack, long &nIdent)
 CompileMethode Compiles a method associated with an instance of class the method can be declared by the user or AddFunction. More...
 
bool ExecuteMethode (long &nIdent, const std::string &name, CBotVar *pThis, CBotVar **ppParams, CBotVar *&pResult, CBotStack *&pStack, CBotToken *pToken)
 ExecuteMethode Executes a method. More...
 
void RestoreMethode (long &nIdent, const std::string &name, CBotVar *pThis, CBotVar **ppParams, CBotStack *&pStack)
 RestoreMethode Restored the execution stack. More...
 
bool CompileDefItem (CBotToken *&p, CBotCStack *pStack, bool bSecond)
 CompileDefItem. More...
 
bool IsIntrinsic ()
 IsIntrinsic. More...
 
void Purge ()
 Purge. More...
 
bool Lock (CBotProgram *prog)
 Request a lock on this class (for "synchronized" keyword) More...
 
void Unlock ()
 Release the lock acquired in Lock() If you call Lock() multiple times for the same program, you have to call Unlock() multiple times too. More...
 
bool CheckCall (CBotProgram *program, CBotDefParam *pParam, CBotToken *&pToken)
 CheckCall Test if a procedure name is already defined somewhere. More...
 
void Update (CBotVar *var, void *user)
 
- Public Member Functions inherited from CBot::CBotLinkedList< CBotClass >
virtual ~CBotLinkedList ()
 Destructor. Be careful, destroys the whole linked list! More...
 
CBotClassGetNext ()
 Returns the next variable in the linked list. More...
 
void AddNext (CBotClass *elem)
 Appends a new element at the end of the linked list. More...
 

Static Public Member Functions

static CBotClassCreate (const std::string &name, CBotClass *parent, bool intrinsic=false)
 Create. More...
 
static CBotClassFind (CBotToken *&pToken)
 Find Trouve une classe d'après son nom. More...
 
static CBotClassFind (const std::string &name)
 Find. More...
 
static CBotClassCompile (CBotToken *&p, CBotCStack *pStack)
 Compile Compiles a class declared by the user. More...
 
static CBotClassCompile1 (CBotToken *&p, CBotCStack *pStack)
 Compile1. More...
 
static void ClearPublic ()
 Free. More...
 
static bool SaveStaticState (FILE *pf)
 SaveStaticState. More...
 
static bool RestoreStaticState (FILE *pf)
 RestoreStaticState. More...
 
static void FreeLock (CBotProgram *prog)
 Release all locks in all classes held by this program. More...
 

Additional Inherited Members

- Protected Attributes inherited from CBot::CBotLinkedList< CBotClass >
CBotClassm_next
 

Detailed Description

A CBot class definition.

Usage examples

Define class "point":

CBotClass* classPoint = new CBotClass("CPoint", nullptr);
classPoint->AddItem("x", CBotTypResult(CBotTypFloat)); // add ".x"
classPoint->AddItem("y", CBotTypResult(CBotTypFloat)); // add ".y"
// This class can be used in CBot like so:
// point position;
// position.x = 12;
// position.y = -13.6

Define readonly class "object" with members of type "point" and some methods:

CBotClass* classObject = new CBotClass("object", nullptr);
classObject->AddItem("category", CBotTypResult(CBotTypInt), CBotVar::ProtectionType::ReadOnly);
classObject->AddItem("position", CBotTypResult(CBotTypClass, classPoint), CBotVar::ProtectionType::ReadOnly);
classObject->AddFunction("func", rFunc, cFunc); // TODO: Document function format for class methods (different from standard CBotProgram::AddFunction()!)
// This class can be used in CBot like so:
// object item = radar(Me);
// goto(item.position);
// item.func();

Define class "robot" derrived from "object":

CBotClass* classRobot = new CBotClass("object", classObject);
classRobot->AddItem("velocity", CBotTypResult(CBotTypClass, classPoint), CBotVar::ProtectionType::ReadOnly);
classRobot->AddFunction("func2", rFunc2, cFunc2);
// This class can be used in CBot like so:
// robot item = something();
// goto(item.position); // can still access base class
// item.func(); // can still call base class
// item.func2(); // but also the derrived class

Create instance of the "robot" class:

CBotVar* var = new CBotVar("variableName", classRobot);

Access members of the "point" class:

CBotVar* varX = classInstance->GetItem("x");
float x = varX->GetValFloat();
CBotVar* varY = classInstance->GetItem("y");
float y = varX->GetValFloat();
// OR
CBotVar* var = classInstance->GetItemList();
float x = var->GetValFloat();
var->GetNext();
float y = var->GetValFloat();

Constructor & Destructor Documentation

CBot::CBotClass::CBotClass ( const std::string &  name,
CBotClass parent,
bool  bIntrinsic = false 
)

CBotClass Constructor. Once a class is created, it is known around CBot intrinsic mode gives a class that is not managed by pointers.

Parameters
name
parent
bIntrinsic
CBot::CBotClass::~CBotClass ( )

CBotClass Destructor.

Member Function Documentation

CBotClass * CBot::CBotClass::Create ( const std::string &  name,
CBotClass parent,
bool  intrinsic = false 
)
static

Create.

Parameters
name
parent
intrinsic
Returns
bool CBot::CBotClass::AddFunction ( const std::string &  name,
bool   rExecCBotVar *pThis, CBotVar *pVar, CBotVar *pResult, int &Exception, void *user,
CBotTypResult   rCompileCBotVar *pThis, CBotVar *&pVar 
)

AddFunction This call allows to add as external new method used by the objects of this class. See (**) at end of this file for more details.

Parameters
name
rExec
rCompile
Returns
bool CBot::CBotClass::SetUpdateFunc ( void   rUpdateCBotVar *thisVar, void *user)

SetUpdateFunc Defines routine to be called to update the elements of the class.

Parameters
rUpdate
Returns
bool CBot::CBotClass::AddItem ( std::string  name,
CBotTypResult  type,
CBotVar::ProtectionLevel  mPrivate = CBotVar::ProtectionLevel::Public 
)

AddItem Adds an element to the class.

Parameters
name
type
mPrivate
Returns

pVar->SetUniqNum(CBotVar::NextUniqNum());

bool CBot::CBotClass::AddItem ( CBotVar pVar)

AddItem Adds an item by passing the pointer to an instance of a variable the object is taken as is, so do not destroyed.

Parameters
pVar
Returns
std::string CBot::CBotClass::GetName ( )

GetName Gives the name of the class.

Returns
CBotClass * CBot::CBotClass::GetParent ( )

GetParent Gives the parent class (or nullptr).

Returns
bool CBot::CBotClass::IsChildOf ( CBotClass pClass)

IsChildOf True if a class is derived (Extends) of another.

Parameters
pClass
Returns
true also if the classes are identical
CBotClass * CBot::CBotClass::Find ( CBotToken *&  pToken)
static

Find Trouve une classe d'après son nom.

Parameters
pToken
Returns
A class by it's its name.
CBotClass * CBot::CBotClass::Find ( const std::string &  name)
static

Find.

Parameters
name
Returns
CBotVar * CBot::CBotClass::GetVar ( )

GetVar Return the list of variables.

Returns
CBotVar * CBot::CBotClass::GetItem ( const std::string &  name)

GetItem One of the variables according to its name.

Parameters
name
Returns
CBotVar * CBot::CBotClass::GetItemRef ( int  nIdent)

GetItemRef.

Parameters
nIdent
Returns
CBotTypResult CBot::CBotClass::CompileMethode ( const std::string &  name,
CBotVar pThis,
CBotVar **  ppParams,
CBotCStack pStack,
long &  nIdent 
)

CompileMethode Compiles a method associated with an instance of class the method can be declared by the user or AddFunction.

Parameters
name
pThis
ppParams
pStack
nIdent
Returns
bool CBot::CBotClass::ExecuteMethode ( long &  nIdent,
const std::string &  name,
CBotVar pThis,
CBotVar **  ppParams,
CBotVar *&  pResult,
CBotStack *&  pStack,
CBotToken pToken 
)

ExecuteMethode Executes a method.

Parameters
nIdent
name
pThis
ppParams
pResult
pStack
pToken
Returns
void CBot::CBotClass::RestoreMethode ( long &  nIdent,
const std::string &  name,
CBotVar pThis,
CBotVar **  ppParams,
CBotStack *&  pStack 
)

RestoreMethode Restored the execution stack.

Parameters
nIdent
name
pThis
ppParams
pStack
CBotClass * CBot::CBotClass::Compile ( CBotToken *&  p,
CBotCStack pStack 
)
static

Compile Compiles a class declared by the user.

Parameters
p
pStack
Returns
CBotClass * CBot::CBotClass::Compile1 ( CBotToken *&  p,
CBotCStack pStack 
)
static

Compile1.

Parameters
p
pStack
Returns
bool CBot::CBotClass::CompileDefItem ( CBotToken *&  p,
CBotCStack pStack,
bool  bSecond 
)

CompileDefItem.

Parameters
p
pStack
bSecond
Returns
bool CBot::CBotClass::IsIntrinsic ( )

IsIntrinsic.

Returns
void CBot::CBotClass::Purge ( )

Purge.

void CBot::CBotClass::ClearPublic ( )
static

Free.

bool CBot::CBotClass::SaveStaticState ( FILE *  pf)
static

SaveStaticState.

Parameters
pf
Returns
bool CBot::CBotClass::RestoreStaticState ( FILE *  pf)
static

RestoreStaticState.

Parameters
pf
Returns
bool CBot::CBotClass::Lock ( CBotProgram prog)

Request a lock on this class (for "synchronized" keyword)

Parameters
progProgram that requests the lock
Returns
true if lock was acquired, false if the lock is already taken
void CBot::CBotClass::Unlock ( )

Release the lock acquired in Lock() If you call Lock() multiple times for the same program, you have to call Unlock() multiple times too.

void CBot::CBotClass::FreeLock ( CBotProgram prog)
static

Release all locks in all classes held by this program.

Parameters
progProgram to release the locks from
bool CBot::CBotClass::CheckCall ( CBotProgram program,
CBotDefParam pParam,
CBotToken *&  pToken 
)

CheckCall Test if a procedure name is already defined somewhere.

Parameters
program
pToken
pParam
Returns

The documentation for this class was generated from the following files: