Colobot
Public Member Functions | Friends | List of all members
CBot::CBotVarClass Class Reference

CBotVar subclass for managing classes (CBotTypClass, CBotTypIntrinsic) More...

#include <CBotVarClass.h>

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

Public Member Functions

 CBotVarClass (const CBotToken &name, const CBotTypResult &type)
 Constructor. Do not call directly, use CBotVar::Create() More...
 
 ~CBotVarClass ()
 Destructor. Do not call directly, use CBotVar::Destroy() More...
 
void Copy (CBotVar *pSrc, bool bName=true) override
 Copy from another variable. More...
 
void SetClass (CBotClass *pClass) override
 Set class this variable is instance of. More...
 
CBotClassGetClass () override
 Return class this variable is instance of. More...
 
CBotVarGetItem (const std::string &name) override
 Returns class member by name. More...
 
CBotVarGetItemRef (int nIdent) override
 Returns class member by unique ID. More...
 
CBotVarGetItem (int n, bool bExtend) override
 Returns element of the array by index. More...
 
CBotVarGetItemList () override
 Return all elements of this variable as a linked list. Works for both classes and arrays. More...
 
std::string GetValString () override
 Get value as string. More...
 
bool Save1State (FILE *pf) override
 Save variable data. More...
 
void Update (void *pUser) override
 Call the class update function. More...
 
CBotVarClassGetPointer () override
 Get value for pointer types. More...
 
bool Eq (CBotVar *left, CBotVar *right) override
 left == right More...
 
bool Ne (CBotVar *left, CBotVar *right) override
 left != right More...
 
void ConstructorSet () override
 Called after constructor has been called. More...
 
- Public Member Functions inherited from CBot::CBotVar
CBotVarGetStaticVar ()
 If this is a static class variable, return the static var from the class. More...
 
void SetUniqNum (long n)
 Set unique identifier of this variable Note: For classes, this is unique within the class only - see CBotClass:AddItem. More...
 
long GetUniqNum ()
 Return unique identifier of this variable Note: For classes, this is unique within the class only - see CBotClass:AddItem. More...
 
 CBotVar ()
 Constructor. Do not call directly, use CBotVar::Create() More...
 
 CBotVar (const CBotToken &name)
 Constructor. Do not call directly, use CBotVar::Create() More...
 
virtual ~CBotVar ()
 Destructor. Do not call directly, use CBotVar::Destroy() More...
 
void SetUserPtr (void *pUser)
 Set a custom pointer associated with this variable. More...
 
void * GetUserPtr ()
 Returns the custom pointer associated with this variable. More...
 
std::string GetName ()
 Returns the name of the variable. More...
 
void SetName (const std::string &name)
 SetName Changes the name of the variable. More...
 
CBotTokenGetToken ()
 Returns the CBotToken this variable is associated with. More...
 
CBotType GetType (GetTypeMode mode=GetTypeMode::NORMAL)
 GetType Returns the base type of the variable (CBotType) More...
 
CBotTypResult GetTypResult (GetTypeMode mode=GetTypeMode::NORMAL)
 Returns the complete type of the variable (CBotTypResult) More...
 
void SetType (CBotTypResult &type)
 Change type of this variable. More...
 
void SetInit (InitType initType)
 Changes variable init status. More...
 
InitType GetInit () const
 Returns the current init state of the variable. More...
 
bool IsUndefined () const
 Checks if the variable is currently "undefined". More...
 
bool IsDefined () const
 Checks if the variable is currently "defined". More...
 
bool IsNAN () const
 Checks if the variable is currently NAN. More...
 
void SetStatic (bool bStatic)
 Marks the variable as "static". More...
 
bool IsStatic ()
 Checks if the variable is static. More...
 
void SetPrivate (ProtectionLevel mPrivate)
 Sets variable protection level. More...
 
bool IsPrivate (ProtectionLevel level=ProtectionLevel::Protected)
 Checks if the variable is accessible at the given protection level. More...
 
ProtectionLevel GetPrivate ()
 Get variable protection level. More...
 
bool IsElemOfClass (const std::string &name)
 Check if a variable belongs to a class with a given name. More...
 
 operator int ()
 
 operator float ()
 
 operator std::string ()
 
void operator= (const CBotVar &var)
 
void operator= (int x)
 
void operator= (float x)
 
void operator= (const std::string &x)
 
void SetVal (CBotVar *var)
 Set the value. More...
 
virtual void SetValInt (int val, const std::string &name="")
 Set value as an integer. More...
 
virtual void SetValFloat (float val)
 Set value as float. More...
 
virtual void SetValString (const std::string &val)
 Set value as string. More...
 
virtual int GetValInt ()
 Get value as integer. More...
 
virtual float GetValFloat ()
 Get value as float. More...
 
virtual void SetPointer (CBotVar *p)
 Set value for pointer types. More...
 
virtual void Add (CBotVar *left, CBotVar *right)
 Addition. More...
 
virtual void Sub (CBotVar *left, CBotVar *right)
 Subtraction. More...
 
virtual void Mul (CBotVar *left, CBotVar *right)
 Multiplication. More...
 
virtual CBotError Div (CBotVar *left, CBotVar *right)
 Division. More...
 
virtual CBotError Modulo (CBotVar *left, CBotVar *right)
 Modulo (remainder of division) More...
 
virtual void Power (CBotVar *left, CBotVar *right)
 Power. More...
 
virtual bool Lo (CBotVar *left, CBotVar *right)
 left < right More...
 
virtual bool Hi (CBotVar *left, CBotVar *right)
 left > right More...
 
virtual bool Ls (CBotVar *left, CBotVar *right)
 left <= right More...
 
virtual bool Hs (CBotVar *left, CBotVar *right)
 left >= right More...
 
virtual void And (CBotVar *left, CBotVar *right)
 left && right or left & right More...
 
virtual void Or (CBotVar *left, CBotVar *right)
 left || right or left | right More...
 
virtual void XOr (CBotVar *left, CBotVar *right)
 left ^ right (also for boolean!) More...
 
virtual void Not ()
 !this or ~this More...
 
virtual void ASR (CBotVar *left, CBotVar *right)
 left >> right More...
 
virtual void SR (CBotVar *left, CBotVar *right)
 left >>> right More...
 
virtual void SL (CBotVar *left, CBotVar *right)
 left << right More...
 
virtual void Neg ()
 -this More...
 
virtual void Inc ()
 ++this More...
 
virtual void Dec ()
 –this More...
 
virtual bool Save0State (FILE *pf)
 Save common variable header (name, type, etc.) More...
 
- Public Member Functions inherited from CBot::CBotLinkedList< CBotVar >
virtual ~CBotLinkedList ()
 Destructor. Be careful, destroys the whole linked list! More...
 
CBotVarGetNext ()
 Returns the next variable in the linked list. More...
 
void AddNext (CBotVar *elem)
 Appends a new element at the end of the linked list. More...
 

Friends

class CBotVar
 
class CBotVarPointer
 

Reference counter

void IncrementUse ()
 Increment reference counter. More...
 
void DecrementUse ()
 Decrement reference counter. More...
 

Unique instance identifier

void SetIdent (long n) override
 Associates an unique identifier to class instance. More...
 
static CBotVarClassFind (long id)
 Finds a class instance by unique identifier. More...
 

Additional Inherited Members

- Public Types inherited from CBot::CBotVar
enum  GetTypeMode { NORMAL = 0, CLASS_AS_POINTER = 1, CLASS_AS_INTRINSIC = 2 }
 Mode for GetType() and GetTypResult() More...
 
enum  InitType : int { InitType::UNDEF = 0, InitType::DEF = 1, InitType::IS_POINTER = 2, InitType::IS_NAN = 999 }
 Variable initialization status. More...
 
enum  ProtectionLevel { ProtectionLevel::Public = 0, ProtectionLevel::ReadOnly = 1, ProtectionLevel::Protected = 2, ProtectionLevel::Private = 3 }
 Class member protection level (public/protected/private) More...
 
- Static Public Member Functions inherited from CBot::CBotVar
static long NextUniqNum ()
 Generate next unique identifier. More...
 
static CBotVarCreate (const std::string &name, CBotTypResult type)
 Creates a new variable from a type described by CBotTypResult. More...
 
static CBotVarCreate (const std::string &name, CBotClass *pClass)
 Creates a new variable of a given class type. More...
 
static CBotVarCreate (const CBotToken &name, CBotType type)
 Creates a new variable of a given type. More...
 
static CBotVarCreate (const CBotToken &name, CBotTypResult type)
 Create a new variable of a given type described by CBotTypResult. More...
 
static CBotVarCreate (const std::string &name, CBotType type, CBotClass *pClass)
 Create a new variable of a given type of given class instance. More...
 
static CBotVarCreate (CBotVar *pVar)
 Create a new variable of the same type and name as another one. More...
 
static void Destroy (CBotVar *var)
 Destroy a variable. More...
 
static bool RestoreState (FILE *pf, CBotVar *&pVar)
 Restore variable. More...
 
- Protected Attributes inherited from CBot::CBotVar
CBotTokenm_token
 The corresponding token, defines the variable name. More...
 
CBotTypResult m_type
 Type of value. More...
 
InitType m_binit
 Initialization status. More...
 
CBotVarClassm_pMyThis
 Corresponding this element (TODO: ?) More...
 
void * m_pUserPtr
 User pointer if specified. More...
 
bool m_bStatic
 true if the variable is static (for classes) More...
 
ProtectionLevel m_mPrivate
 Element protection level - public, protected or private (for classes) More...
 
CBotInstrm_InitExpr
 Expression describing initial value. More...
 
CBotInstrm_LimExpr
 Expression describing array limit. More...
 
long m_ident
 Identifier. More...
 
- Protected Attributes inherited from CBot::CBotLinkedList< CBotVar >
CBotVarm_next
 
- Static Protected Attributes inherited from CBot::CBotVar
static long m_identcpt = 0
 TODO: ? More...
 

Detailed Description

CBotVar subclass for managing classes (CBotTypClass, CBotTypIntrinsic)

Constructor & Destructor Documentation

CBot::CBotVarClass::CBotVarClass ( const CBotToken name,
const CBotTypResult type 
)

Constructor. Do not call directly, use CBotVar::Create()

CBot::CBotVarClass::~CBotVarClass ( )

Destructor. Do not call directly, use CBotVar::Destroy()

Member Function Documentation

void CBot::CBotVarClass::Copy ( CBotVar pSrc,
bool  bName = true 
)
overridevirtual

Copy from another variable.

Parameters
pSrcVariable to copy from
bNametrue if you want to also copy the name

Reimplemented from CBot::CBotVar.

void CBot::CBotVarClass::SetClass ( CBotClass pClass)
overridevirtual

Set class this variable is instance of.

Used by instance variables, NOT class members

Reimplemented from CBot::CBotVar.

CBotClass * CBot::CBotVarClass::GetClass ( )
overridevirtual

Return class this variable is instance of.

Used by instance variables, NOT class members

Reimplemented from CBot::CBotVar.

CBotVar * CBot::CBotVarClass::GetItem ( const std::string &  name)
overridevirtual

Returns class member by name.

Parameters
nameName of member to get
Returns
CBotVar representing the class member

Reimplemented from CBot::CBotVar.

CBotVar * CBot::CBotVarClass::GetItemRef ( int  nIdent)
overridevirtual

Returns class member by unique ID.

Parameters
nIdentUnique ID of the class member to return
Returns
CBotVar representing the class member
See also
GetUniqNum()

Reimplemented from CBot::CBotVar.

CBotVar * CBot::CBotVarClass::GetItem ( int  index,
bool  grow 
)
overridevirtual

Returns element of the array by index.

TODO: Appears to be also implemented in CBotVarClass, but I'm not sure what is it used for there. Looks like CBotVarArray stores data internally in CBotVarClass or something like that. Needs futher investigation.

Parameters
indexIndex of the element to get
growtrue to grow the array automatically if the index is out of range
Returns
CBotVar representing the array element, or nullptr on error (for example going out of range)

Reimplemented from CBot::CBotVar.

CBotVar * CBot::CBotVarClass::GetItemList ( )
overridevirtual

Return all elements of this variable as a linked list. Works for both classes and arrays.

Returns
CBotVar representing the first object in the linked list. Use CBotVar::GetNext() to access next ones.

Reimplemented from CBot::CBotVar.

std::string CBot::CBotVarClass::GetValString ( )
overridevirtual

Get value as string.

This one is supported by most types of variables.

Automatically converts the value to string if needed.

Returns
Current value

Reimplemented from CBot::CBotVar.

bool CBot::CBotVarClass::Save1State ( FILE *  pf)
overridevirtual

Save variable data.

Overriden in child classes

Parameters
pffile pointer
Returns
false on write error

Reimplemented from CBot::CBotVar.

void CBot::CBotVarClass::Update ( void *  pUser)
overridevirtual

Call the class update function.

Parameters
pUserUser pointer to pass to the update function
See also
CBotClass::SetUpdateFunc()

Reimplemented from CBot::CBotVar.

void CBot::CBotVarClass::IncrementUse ( )

Increment reference counter.

void CBot::CBotVarClass::DecrementUse ( )

Decrement reference counter.

CBotVarClass * CBot::CBotVarClass::GetPointer ( )
overridevirtual

Get value for pointer types.

Returns
Variable that this variable points to

Reimplemented from CBot::CBotVar.

void CBot::CBotVarClass::SetIdent ( long  UniqId)
overridevirtual

Associates an unique identifier to class instance.

Used only by classes

Parameters
UniqIdNew unique identifier
See also
SetUniqNum() for another identifier, used for all variable types

Reimplemented from CBot::CBotVar.

CBotVarClass * CBot::CBotVarClass::Find ( long  id)
static

Finds a class instance by unique identifier.

Parameters
idIdentifier to find
Returns
Found class instance
bool CBot::CBotVarClass::Eq ( CBotVar left,
CBotVar right 
)
overridevirtual

left == right

Reimplemented from CBot::CBotVar.

bool CBot::CBotVarClass::Ne ( CBotVar left,
CBotVar right 
)
overridevirtual

left != right

Reimplemented from CBot::CBotVar.

void CBot::CBotVarClass::ConstructorSet ( )
overridevirtual

Called after constructor has been called.

This is used internally by the engine to mark the constructor as called.

This allows the destructor to be called later.

Reimplemented from CBot::CBotVar.


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