Colobot
|
A CBot class definition. More...
#include <src/CBot/CBotClass.h>
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)) |
Add a function that can be called from CBot. 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... | |
const std::string & | GetName () |
GetName Gives the name of the class. More... | |
CBotClass * | GetParent () |
GetParent Gives the parent class (or nullptr). More... | |
bool | IsChildOf (CBotClass *pClass) |
IsChildOf True if a class is derived (Extends) of another. More... | |
CBotVar * | GetVar () |
GetVar Return the list of variables. More... | |
CBotVar * | GetItem (const std::string &name) |
GetItem One of the variables according to its name. More... | |
CBotVar * | GetItemRef (int nIdent) |
GetItemRef. More... | |
bool | CheckVar (const std::string &name) |
Check whether a variable is already defined in a class. More... | |
CBotTypResult | CompileMethode (CBotToken *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, CBotVar *pThis, CBotVar **ppParams, CBotTypResult pResultType, CBotStack *&pStack, CBotToken *pToken) |
ExecuteMethode Executes a method. More... | |
void | RestoreMethode (long &nIdent, CBotToken *name, CBotVar *pThis, CBotVar **ppParams, CBotStack *&pStack) |
RestoreMethode Restored the execution stack. More... | |
const std::list< CBotFunction * > & | GetFunctions () const |
Get the list of user-defined methods in this class. 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) |
Static Public Member Functions | |
static CBotClass * | Create (const std::string &name, CBotClass *parent, bool intrinsic=false) |
Create. More... | |
static CBotClass * | Find (CBotToken *&pToken) |
Find Trouve une classe d'après son nom. More... | |
static CBotClass * | Find (const std::string &name) |
Find. More... | |
static CBotClass * | Compile (CBotToken *&p, CBotCStack *pStack) |
Compile Compiles a class declared by the user. More... | |
static CBotClass * | Compile1 (CBotToken *&p, CBotCStack *pStack) |
Pre-compile a new class. More... | |
static void | DefineClasses (std::list< CBotClass * > pClassList, CBotCStack *pStack) |
DefineClasses Calls CompileDefItem for each class in a list of classes, defining fields and pre-compiling methods. More... | |
static void | ClearPublic () |
Free. More... | |
static bool | SaveStaticState (std::ostream &ostr) |
Save all static variables from each public class. More... | |
static bool | RestoreStaticState (std::istream &istr) |
Restore all static variables in each public class. More... | |
static void | FreeLock (CBotProgram *prog) |
Release all locks in all classes held by this program. More... | |
A CBot class definition.
Define class "point":
Define readonly class "object" with members of type "point" and some methods:
Define class "robot" derrived from "object":
Create instance of the "robot" class:
Access members of the "point" class:
CBot::CBotClass::CBotClass | ( | const std::string & | name, |
CBotClass * | parent, | ||
bool | bIntrinsic = false |
||
) |
CBot::CBotClass::~CBotClass | ( | ) |
CBotClass Destructor.
|
static |
Create.
name | |
parent | |
intrinsic |
bool CBot::CBotClass::AddFunction | ( | const std::string & | name, |
bool | rExecCBotVar *pThis, CBotVar *pVar, CBotVar *pResult, int &Exception, void *user, | ||
CBotTypResult | rCompileCBotVar *pThis, CBotVar *&pVar | ||
) |
Add a function that can be called from CBot.
bool CBot::CBotClass::SetUpdateFunc | ( | void | rUpdateCBotVar *thisVar, void *user | ) |
SetUpdateFunc Defines routine to be called to update the elements of the class.
rUpdate |
bool CBot::CBotClass::AddItem | ( | std::string | name, |
CBotTypResult | type, | ||
CBotVar::ProtectionLevel | mPrivate = CBotVar::ProtectionLevel::Public |
||
) |
AddItem Adds an element to the class.
name | |
type | |
mPrivate |
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.
pVar |
const std::string & CBot::CBotClass::GetName | ( | ) |
GetName Gives the name of the class.
CBotClass * CBot::CBotClass::GetParent | ( | ) |
GetParent Gives the parent class (or nullptr).
bool CBot::CBotClass::IsChildOf | ( | CBotClass * | pClass | ) |
IsChildOf True if a class is derived (Extends) of another.
pClass |
Find Trouve une classe d'après son nom.
pToken |
|
static |
Find.
name |
CBotVar * CBot::CBotClass::GetVar | ( | ) |
GetVar Return the list of variables.
CBotVar * CBot::CBotClass::GetItem | ( | const std::string & | name | ) |
GetItem One of the variables according to its name.
name |
CBotVar * CBot::CBotClass::GetItemRef | ( | int | nIdent | ) |
GetItemRef.
nIdent |
bool CBot::CBotClass::CheckVar | ( | const std::string & | name | ) |
Check whether a variable is already defined in a class.
name | Name of the variable |
CBotTypResult CBot::CBotClass::CompileMethode | ( | CBotToken * | 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.
name | |
pThis | |
ppParams | |
pStack | |
nIdent |
bool CBot::CBotClass::ExecuteMethode | ( | long & | nIdent, |
CBotVar * | pThis, | ||
CBotVar ** | ppParams, | ||
CBotTypResult | pResultType, | ||
CBotStack *& | pStack, | ||
CBotToken * | pToken | ||
) |
ExecuteMethode Executes a method.
nIdent | |
name | |
pThis | |
ppParams | |
pResultType | |
pStack | |
pToken |
void CBot::CBotClass::RestoreMethode | ( | long & | nIdent, |
CBotToken * | name, | ||
CBotVar * | pThis, | ||
CBotVar ** | ppParams, | ||
CBotStack *& | pStack | ||
) |
RestoreMethode Restored the execution stack.
nIdent | |
name | |
pThis | |
ppParams | |
pStack |
|
static |
Compile Compiles a class declared by the user.
p | |
pStack |
|
static |
Pre-compile a new class.
p[in,out] | Pointer to first token of the class, will be updated to point to first token after the class definition |
pStack | Compile stack |
This function is used to find the beginning and end of class definition.
If any errors in the code are detected, this function will set the error on compile stack and return nullptr.
|
static |
DefineClasses Calls CompileDefItem for each class in a list of classes, defining fields and pre-compiling methods.
pClassList | List of classes |
pStack |
const std::list< CBotFunction * > & CBot::CBotClass::GetFunctions | ( | ) | const |
Get the list of user-defined methods in this class.
bool CBot::CBotClass::CompileDefItem | ( | CBotToken *& | p, |
CBotCStack * | pStack, | ||
bool | bSecond | ||
) |
CompileDefItem.
p | |
pStack | |
bSecond |
bool CBot::CBotClass::IsIntrinsic | ( | ) |
IsIntrinsic.
void CBot::CBotClass::Purge | ( | ) |
Purge.
|
static |
Free.
|
static |
Save all static variables from each public class.
ostr | Output stream |
|
static |
Restore all static variables in each public class.
istr | Input stream |
bool CBot::CBotClass::Lock | ( | CBotProgram * | prog | ) |
Request a lock on this class (for "synchronized" keyword)
prog | Program that requests the lock |
void CBot::CBotClass::Unlock | ( | ) |
|
static |
Release all locks in all classes held by this program.
prog | Program 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.
program | |
pToken | |
pParam |