![]() |
3DCoat Core API
The 3DCoat API documentation.
|
The reference to the element derived from the BaseClass. This is the reference, element should be allocated elsewhere. More...
#include <classlist.h>
Public Member Functions | |
virtual bool | FullCopy (const void *SrcData, const void *SrcDataExtra, BaseClass *Dest, void *DestData, void *DestExtraPtr, CECopyContext *C) override |
Fast copy from one BaseClass to another. Names and types correspondence used to copy. | |
virtual void | SaveBin (void *Data, void *Extra, BinStream *Out, Enumerator *ExDictionary, Enumerator *SkipList) override |
Save in binaly form. Use only for temporary storage in memory!!! | |
virtual void | LoadBin (void *Data, void *Extra, BinStream *In, Enumerator *ExDictionary) override |
Load the class from the memory. Use only for temporary storage in memory!!! | |
X * | Get () |
void | Set (X *x) |
virtual void | reset_class (void *p) |
Clearing all registered content of the class. If DataPtr is nullptr, this class will be cleared. | |
void | Clear () |
const char * | GetClassName () const override |
return class name there if need. Usually you don't need, if you are using AUTONEW or SERIALIZE | |
int | GetAmountOfElements () override |
return complete amount of elements. Even invisible, masked and non-serialized elements will be counted | |
virtual bool | GetElement (BaseClassElement &res, int idx, const void *Ptr, const void *Extra) override |
virtual int | ExpandWith (const char *ElmName, void *base) |
Expand array with class ElmName. | |
virtual bool | DelElement (int index) |
removes element if the operation supported | |
virtual bool | CheckDirectCasting () const override |
virtual bool | MayBeParent () override |
virtual bool | ForceProperty () |
virtual void | CountObjects (int &required_index, int *counter, HashSummator *hash, BaseClassElement *result, const std::function< bool(BaseClassElement *)> *ForEachElem, bool OnlyPointersMode) override |
This is the main function used for the access to class members. Each class that has SERIALIZE section creates this function automatically. It may count members, return hash, give element-wise access to any member. Instead of keeping registered fields that routine gives fast dynamic access to any member. If you making own container, you should create this function as well, othervice your class will not be serialized correctly even if you will make GetElement(...) function. | |
AUTONEW (ClassRef) | |
![]() | |
BaseClass * | GetRoot () |
BaseClass is like a tree, and you always can get the root of the tree using this function. | |
BaseClass (const BaseClass &) | |
virtual | ~BaseClass () |
virtual destructor | |
virtual DWORD | GetClassMask () |
Masking elements of class. Each member has mask. Element is serializable/visible only if (it's_mask & hosting_class_mask) != 0. | |
DWORD & | ClassMask () |
virtual void | reset_class (void *DataPtr=nullptr) |
Clearing all registered content of the class. If DataPtr is nullptr, this class will be cleared. | |
virtual void | CountObjects (int &required_index, int *counter, HashSummator *hash, BaseClassElement *result, const std::function< bool(BaseClassElement *)> *ForEachElem=nullptr, bool OnlyPointersMode=false) |
This is the main function used for the access to class members. Each class that has SERIALIZE section creates this function automatically. It may count members, return hash, give element-wise access to any member. Instead of keeping registered fields that routine gives fast dynamic access to any member. If you making own container, you should create this function as well, othervice your class will not be serialized correctly even if you will make GetElement(...) function. | |
void | ForEach (const std::function< bool(BaseClassElement *el)> &fn, bool OnlyPointsers=false) |
Calls function for each class member. This function used in _EACH ... _EACH_END cycle. | |
virtual bool | CopyBaseClass (BaseClass *Dest, bool Add=false) |
Copy base class to other class uning names correspondence. | |
virtual void | Save (TagsList &xml, void *ClassPtr, void *Extra=NULL) |
Save class to the XML structure. | |
virtual bool | Load (TagsList &xml, void *ClassPtr, void *Extra=NULL) |
Load the class from the XML structure. | |
virtual bool | FullCopy (const void *SrcData, const void *SrcDataExtra, BaseClass *Dest, void *DestData, void *DstDataExtra, CECopyContext *C) |
Fast copy from one BaseClass to another. Names and types correspondence used to copy. | |
virtual void | SaveBin (void *Data, void *Extra, BinStream *Out, Enumerator *ExDictionary, Enumerator *SkipList) |
Save in binaly form. Use only for temporary storage in memory!!! | |
virtual void | LoadBin (void *Data, void *Extra, BinStream *In, Enumerator *ExDictionary) |
Load the class from the memory. Use only for temporary storage in memory!!! | |
virtual void | UpdateHash (HashSummator &S, void *data=nullptr, void *extra=nullptr) |
returns hash value dependent on data fields of this class | |
virtual int | GetAmountOfElementsInUI () |
return amount of elements represented in UI | |
virtual int | GetAmountOfElementsInXML () |
return amount of elements taht will be stored in XML | |
virtual const char * | GetClassName () const |
return class name there if need. Usually you don't need, if you are using AUTONEW or SERIALIZE | |
virtual void | RegisterMembers () |
Reload this function to register members. Usually you don't need to do this if you are using any of SERIALIZE methods of registration. | |
virtual int | GetAmountOfElements () |
return complete amount of elements. Even invisible, masked and non-serialized elements will be counted | |
virtual bool | CheckDirectCasting () const |
virtual int | GetClassSize () const |
return actual size of this class | |
virtual BaseClass * | new_element () const |
construct pointer to class of the same type like this. Elements will not be copied into the new place | |
virtual bool | GetElement (BaseClassElement &res, int idx, const void *Ptr=nullptr, const void *Extra=nullptr) |
bool | GetElementByName (const char *Name, void *Ptr, void *Extra, BaseClassElement &res, bool UI=false, bool Serialize=true) |
The function returns complete information about the member by it's name. | |
bool | GetElementByNameAndType (const char *Name, const char *Type, void *Ptr, void *Extra, BaseClassElement &res, bool UI=false, bool Serialize=true) |
void | DeleteDefaultSubFields (TagsList &xml, void *ClassPtr, void *Extra=NULL) |
Short form saving. Fields that are unchanged in comparison to default will be skipped in XML. | |
virtual bool | ShouldSaveInShortForm () |
Return true if class should be saved in short form mandatory. | |
virtual int | ExpandWith (const char *ElmName, void *base) |
Expand array with class ElmName. | |
virtual bool | DelElement (int Index) |
removes element if the operation supported | |
template<class Type = BaseClass> | |
bool | valid () const |
call it to check if this BaseClass pointer is valid | |
template<> | |
bool | valid () const |
BaseClass * | auto_cast (void *ptr) const |
if class is directly castable the function returns ptr cased to BaseClass, othervice this pointrer returned. If NULL returned - something is wrong. | |
virtual bool | ReadFromFile (const char *Name, bool very_safe_with_backup=false) |
Save the object to file or binary stream. Example. | |
virtual bool | WriteToFile (const char *Name) |
virtual bool | WriteToFileIfChanged (const char *Name) |
virtual void | ToBS (BinStream &bs, bool IncludeLength) |
virtual void | FromBS (BinStream &bs) |
virtual void | ToBS (BinStream &bs, void *data, void *extra, bool IncludeLength) |
virtual void | FromBS (BinStream &bs, void *data, void *extra) |
virtual void | ToStr (comms::cStr &bs) |
virtual void | FromStr (const comms::cStr &bs) |
virtual bool | CheckIfFunction () const |
Special function for integrating in editor. | |
virtual int | condition_call (void *ptr) |
return -1 to do nothing, 0 if you want to hide everything after this registered member, 1 if you want to show | |
virtual BaseClass * | GetParent () const |
template<typename type > | |
type * | FindParent () |
virtual void | SetParent (BaseClass *Parent) |
set parent recursively | |
virtual void | SimplySetParent (BaseClass *Parent) |
set parent directly to this, not affecting members | |
virtual bool | MayBeParent () |
virtual bool | CheckCompartabilityWith (const char *TypeName, int TypeSize) |
Checking for errors of registration. | |
virtual bool | ProcessInEditor (BaseClass *Parent) |
Editor will call next function always when it is visible in tree. Return true if overriden. | |
virtual bool | RenderInScene (BaseClass *Parent) |
Editor will call next function to render in-scene controls always when it is visible in tree. Return true if overriden. | |
virtual bool | HandleKey (int code) |
Editor will call next function when key pressed. | |
virtual bool | OnChangeMember (BaseClass *MembClass, void *MembPtr, void *MembExtra, const char *MembName) |
Editor will call it every time when member changes and editor is able to recognise it. | |
virtual void | BeforeChangeMember (BaseClass *MembClass, void *MembPtr, void *MembExtra, const char *MembName) |
Editor will call it every time before the changes. | |
virtual int | GetElementLevel (const char *EName) |
virtual BaseWidget * | OnCreateControlFromScratch (const ClassEditorContext &Context, Rct &Rect) |
Create completely own control for ClassEditor. | |
virtual void | OnModifyControl (const char *FieldName, BaseWidget *W, ClassEditorContext &Context) |
Call for every member of registered class registered class. | |
virtual bool | CanBeDragged (const char *MemberID, int &dx, int &dy) |
Use it for build a Drag & Drop element. | |
virtual bool | CanAcceptDrag (const char *MemberID) |
virtual bool | OnStartDrag (const char *MemberID) |
virtual bool | OnEndDrag (const char *MemberID) |
virtual bool | OnAcceptDrag (BaseClass *DraggedItemParent, const char *DraggedMemberID, const char *AcceptorMemberID, iRct MyRect) |
virtual bool | UsePointerInHashCalculation () |
virtual bool | SkipHash () |
virtual const char * | GetCmdID () |
void | SetParents () |
set parents to this for all child members | |
void | SetParentsSafe () |
set parents to this for all child members, each child will be tested for validity | |
virtual void | UpdateClassMembersAndMask (bool recursive) |
virtual bool | CallFromScript () const |
virtual void | CallFromScript (const bool &b) |
Additional Inherited Members | |
![]() | |
static const char * | GetCurrentSaveFile () |
static bool & | UI_definition () |
static bool & | Serialization () |
![]() | |
static const char * | CurrentSaveFile |
If user triggers saving class to file, last filename stored there. | |
static bool | SaveInShortForm |
![]() | |
void | test_presence_integrity () |
void | register_this () |
void | remove_this () |
![]() | |
BaseClass * | ParentBC |
pointer to the parent class in the tree | |
DWORD | _ClassMask |
Result of GetClassMask() written there. GetClassMask() is not const, so can't use it in const functions. The field introduced to use masking in const functions. | |
bool | bCallFromScript |
![]() | |
static std::mutex * | pmutex |
mutex for register_this / remove_this | |
static uni_hash< _empty, cPtrDiff,(1<< 18), 2048 > * | presence |
each BaseClass registered in this list | |
The reference to the element derived from the BaseClass. This is the reference, element should be allocated elsewhere.
X |
|
inlineoverridevirtual |
BaseClass corresponds to some other data type. For example _int correctonds to int, etc... In this case you can't cast pointer to data to BaseClass*. But in some cases BaseClass may be directlt castable, for example if it has registered members, or it is ClassArray. This function is to define if class is directly castable.
Reimplemented from BaseClass.
|
inlineoverridevirtual |
This is the main function used for the access to class members. Each class that has SERIALIZE section creates this function automatically.
It may count members, return hash, give element-wise access to any member. Instead of keeping registered fields that routine gives fast dynamic access to any member.
If you making own container, you should create this function as well, othervice your class will not be serialized correctly even if you will make GetElement(...) function.
required_index | Index of required element if result != nullptr |
counter | if nonzero, the elements count returned there. |
hash | if nonzero, returns hash value for this class. |
result | if nonzero, gives access to the member with index required_index. |
ForEachElem | if nonzero, the function will be called for each class element. |
OnlyPointersMode | If true, the field name will not be filled for speed purposes. |
Reimplemented from BaseClass.
|
inlinevirtual |
removes element if the operation supported
Reimplemented from BaseClass.
|
inlinevirtual |
Expand array with class ElmName.
Reimplemented from BaseClass.
|
inlineoverridevirtual |
return complete amount of elements. Even invisible, masked and non-serialized elements will be counted
Reimplemented from BaseClass.
|
inlineoverridevirtual |
return class name there if need. Usually you don't need, if you are using AUTONEW or SERIALIZE
Reimplemented from BaseClass.
|
inlineoverridevirtual |
\briefThe The function returns complete information about the member by it's index. If you want to walk through all members use _EACH ... _EACH_END loop.
res | All data gathered there |
idx | Index of the member |
Ptr | Pointer to data (if class is direcly castable it is equal to this, othervice it points to placement of data in memory). If NULL passed, this will be used |
Extra | Extra data, used for enumerators and sliders (mostly) |
Reimplemented from BaseClass.
|
inlineoverridevirtual |
Load the class from the memory. Use only for temporary storage in memory!!!
Data | Pointer to the class data |
Extra | Extra data |
In | binary stream to read data from |
ExDictionary | Additional dictionary |
Reimplemented from BaseClass.
|
inlineoverridevirtual |
Reimplemented from BaseClass.
|
inlinevirtual |
Clearing all registered content of the class. If DataPtr is nullptr, this class will be cleared.
Reimplemented from BaseClass.
|
inlineoverridevirtual |
Save in binaly form. Use only for temporary storage in memory!!!
Data | data pointer |
Extra | extra pointer |
Out | Output stream |
ExDictionary | Dictionary for enumerators |
SkipList | Skip list for enumerators |
Reimplemented from BaseClass.