GeData Class Reference

#include <c4d_gedata.h>

Detailed Description

The GeData class can hold values of many different types, including custom data types.
It is used by many parts of the API, and can be stored in BaseContainer objects.

Private Member Functions

 GeData (DEFAULTVALUETYPE)=delete
 

Private Attributes

Int32 Type
 
Int32 dummy
 
union {
   Int32   DInteger
 
   Float   DReal
 
   void *   Ddata
 
   Int64   DLLong
 
}; 
 

Constructor/Destructor

 GeData ()
 
 GeData (double n)
 
 GeData (const GeData &n)
 
 GeData (GeData &&n)
 
 GeData (Int32 n)
 
 GeData (Float32 n)
 
 GeData (void *v, VOIDVALUETYPE xdummy)
 
 GeData (Int64 v, LLONGVALUETYPE xdummy)
 
 GeData (const Vector &n)
 
 GeData (const C4DUuid &n)
 
 GeData (const Matrix &n)
 
 GeData (const Char *n)
 
 GeData (const maxon::String &n)
 
 GeData (void *mem, Int count)
 
 GeData (const Filename &n)
 
 GeData (const BaseTime &n)
 
 GeData (const BaseContainer &n)
 
 GeData (const BaseLink *n)
 
 GeData (BaseList2D *bl)
 
 GeData (const maxon::Data &n)
 
 GeData (maxon::Data &&n)
 
template<typename DATATYPE , size_t = sizeof(DATATYPE::DATATYPEID)>
 GeData (const DATATYPE &data)
 
 GeData (const CustomDataType &data, Int32 type)
 
 GeData (Int32 type, DEFAULTVALUETYPE v)
 
void Free ()
 
 ~GeData ()
 

Operator

const GeDataoperator= (const GeData &n)
 
const GeDataoperator= (GeData &&n)
 
Bool operator== (const GeData &d) const
 
Bool operator!= (const GeData &d) const
 

Type

Bool SetDefault (Int32 type)
 
Int32 GetType () const
 

Get Data

Bool GetBool () const
 
Int32 GetInt32 () const
 
Int64 GetInt64 () const
 
Float GetFloat () const
 
const void * GetVoid () const
 
void * GetVoid ()
 
const VectorGetVector () const
 
const MatrixGetMatrix () const
 
const StringGetString () const
 
const C4DUuidGetUuid () const
 
const FilenameGetFilename () const
 
const BaseTimeGetTime () const
 
const BaseContainerGetContainer () const
 
BaseContainerGetContainerWritable ()
 
const BaseLinkGetBaseLink () const
 
const maxon::DataGetData () const
 
template<typename DATATYPE >
const DATATYPE * GetCustomDataType () const
 
template<typename DATATYPE >
DATATYPE * GetCustomDataTypeWritable ()
 
const CustomDataTypeGetCustomDataTypeI (Int32 datatype) const
 
CustomDataTypeGetCustomDataTypeWritableI (Int32 datatype)
 
const BaseList2DGetLink (const BaseDocument *doc, Int32 instanceof=0) const
 
BaseList2DGetLink (BaseDocument *doc, Int32 instanceof=0) const
 
BaseList2DGetLink (std::nullptr_t doc, Int32 instanceof=0) const
 
const C4DAtomGoalGetLinkAtom (const BaseDocument *doc, Int32 instanceof=0) const
 
C4DAtomGoalGetLinkAtom (BaseDocument *doc, Int32 instanceof=0) const
 
C4DAtomGoalGetLinkAtom (std::nullptr_t doc, Int32 instanceof=0) const
 
void * GetMemoryAndRelease (Int &count)
 
void * GetMemory (Int &count)
 

Set Data

void CopyData (GeData *dest, AliasTrans *aliastrans) const
 
void SetFloat (Float v)
 
void SetInt32 (Int32 v)
 
void SetInt64 (const Int64 &v)
 
void SetVoid (void *v)
 
void SetMemory (void *data, Int count)
 
void SetVector (const Vector &v)
 
void SetMatrix (const Matrix &v)
 
void SetString (const maxon::String &v)
 
void SetUuid (const C4DUuid &v)
 
void SetTristate ()
 
void SetData (const maxon::Data &v)
 
void SetData (maxon::Data &&v)
 
void SetFilename (const Filename &v)
 
void SetBaseTime (const BaseTime &v)
 
void SetContainer (const BaseContainer &v)
 
void SetBaseLink (const BaseLink &v)
 
void SetBaseList2D (BaseList2D *bl)
 
void SetCustomDataTypeI (Int32 datatype, const CustomDataType &v)
 
template<typename DATATYPE , size_t = sizeof(DATATYPE::DATATYPEID)>
void SetCustomDataType (const DATATYPE &v)
 

Constructor & Destructor Documentation

◆ GeData() [1/25]

GeData ( DEFAULTVALUETYPE  )
privatedelete

◆ GeData() [2/25]

GeData ( )

Creates a DA_NIL data with no value.

◆ GeData() [3/25]

GeData ( double  n)

Creates a float data.

Parameters
[in]nThe initial value.

◆ GeData() [4/25]

GeData ( const GeData n)

Copy constructor.

Parameters
[in]nThe data to copy.

◆ GeData() [5/25]

GeData ( GeData &&  n)

◆ GeData() [6/25]

GeData ( Int32  n)

Creates an Int32 data.

Parameters
[in]nThe initial value.

◆ GeData() [7/25]

GeData ( Float32  n)

Creates a Float32 data.

Parameters
[in]nThe initial value.

◆ GeData() [8/25]

GeData ( void *  v,
VOIDVALUETYPE  xdummy 
)

Creates a void* data.

Parameters
[in]vThe initial void* value.
[in]xdummyThe dummy parameter. Should always be VOIDVALUE.

◆ GeData() [9/25]

GeData ( Int64  v,
LLONGVALUETYPE  xdummy 
)

Creates a long long (64-bit integer) data.

Parameters
[in]vThe initial value.
[in]xdummyThe dummy parameter. Should always be LLONGVALUE.

◆ GeData() [10/25]

GeData ( const Vector n)

Creates a Vector data.

Parameters
[in]nThe initial value.

◆ GeData() [11/25]

GeData ( const C4DUuid n)

Creates a C4DUuid data.

Parameters
[in]nThe initial value.

◆ GeData() [12/25]

GeData ( const Matrix n)

Creates a Matrix data.

Parameters
[in]nThe initial value.

◆ GeData() [13/25]

GeData ( const Char n)

Creates a String data from a character buffer.

Parameters
[in]nThe initial value.

◆ GeData() [14/25]

GeData ( const maxon::String n)

Creates a String data.

Parameters
[in]nThe initial value.

◆ GeData() [15/25]

GeData ( void *  mem,
Int  count 
)

Creates a memory buffer data.

Parameters
[in]memThe initial memory buffer value.
[in]countThe number of bytes in the initial buffer.

◆ GeData() [16/25]

GeData ( const Filename n)

Creates a Filename data.

Parameters
[in]nThe initial value.

◆ GeData() [17/25]

GeData ( const BaseTime n)

Creates a BaseTime data.

Parameters
[in]nThe initial value.

◆ GeData() [18/25]

GeData ( const BaseContainer n)

Creates a BaseContainer data.

Parameters
[in]nThe initial value.

◆ GeData() [19/25]

GeData ( const BaseLink n)

Creates a BaseLink data.

Parameters
[in]nThe initial value.

◆ GeData() [20/25]

GeData ( BaseList2D bl)

Creates a BaseList2D data.

Parameters
[in]blThe initial value.

◆ GeData() [21/25]

GeData ( const maxon::Data n)

Creates a maxon::Data data.

Parameters
[in]nThe initial value.

◆ GeData() [22/25]

GeData ( maxon::Data &&  n)

◆ GeData() [23/25]

GeData ( const DATATYPE &  data)
explicit

Creates a data with a custom data type.

Parameters
[in]dataThe custom data.

◆ GeData() [24/25]

GeData ( const CustomDataType data,
Int32  type 
)

◆ GeData() [25/25]

GeData ( Int32  type,
DEFAULTVALUETYPE  v 
)

Creates a custom data type with the default value for the type.
The second parameter is simply a typing trick so that the compiler chooses this constructor:

@ DEFAULTVALUE
Dummy value for the default value GeData constructor.
Definition: c4d_gedata.h:65
Definition: c4d_gedata.h:83
#define DATETIME_DATA
DateTime custom data ID.
Definition: customgui_datetime.h:23
Parameters
[in]typeThe custom data type ID.
[in]vThe dummy parameter. Should always be DEFAULTVALUE.

◆ ~GeData()

~GeData ( )

Destructor.

Member Function Documentation

◆ Free()

void Free ( )

Deletes the internal data and sets the type to DA_NIL.

◆ operator=() [1/2]

const GeData& operator= ( const GeData n)

Assignment operator.

Parameters
[in]nThe data to assign.
Returns
The assigned data.

◆ operator=() [2/2]

const GeData& operator= ( GeData &&  n)

◆ operator==()

Bool operator== ( const GeData d) const

Equality operator.

Parameters
[in]dThe data to compare with.
Returns
true if the data are equal, otherwise false.

◆ operator!=()

Bool operator!= ( const GeData d) const

Inequality operator.

Parameters
[in]dThe data to compare with.
Returns
true if the data are different, otherwise false.

◆ SetDefault()

Bool SetDefault ( Int32  type)

Sets the default value for the data type.

Parameters
[in]typeThe type ID: DA
Returns
true if successful, otherwise false.

◆ GetType()

Int32 GetType ( ) const

Retrieves the type of the data.

Returns
The data type: DA

◆ GetBool()

Bool GetBool ( ) const

Retrieves the value of Bool data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetInt32()

Int32 GetInt32 ( ) const

Retrieves the value of Int32 data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetInt64()

Int64 GetInt64 ( ) const

Retrieves the value of Int64 data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetFloat()

Float GetFloat ( ) const

Retrieves the value of Float data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetVoid() [1/2]

const void* GetVoid ( ) const

Retrieves the value of void* data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetVoid() [2/2]

void* GetVoid ( )

Retrieves the value of void* data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetVector()

const Vector& GetVector ( ) const

Retrieves the value of Vector data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetMatrix()

const Matrix& GetMatrix ( ) const

Retrieves the value of Matrix data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetString()

const String& GetString ( ) const

Retrieves the value of String data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetUuid()

const C4DUuid& GetUuid ( ) const

Retrieves the value of C4DUuid data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetFilename()

const Filename& GetFilename ( ) const

Retrieves the value of Filename data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetTime()

const BaseTime& GetTime ( ) const

Retrieves the value of BaseTime data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetContainer()

const BaseContainer* GetContainer ( ) const

Retrieves the value of BaseContainer data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetContainerWritable()

BaseContainer* GetContainerWritable ( )

◆ GetBaseLink()

const BaseLink* GetBaseLink ( ) const

Retrieves the value of BaseLink data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetData()

const maxon::Data& GetData ( ) const

Retrieves the value of maxon::Data data objects. Forbidden for other data.

Returns
The value. Only valid as long as the GeData value exists.

◆ GetCustomDataType()

const DATATYPE* GetCustomDataType ( ) const

Retrieves the value of a CustomDataType, or nullptr if the wrong data type was specified. Forbidden for other data types.

Returns
The custom data type value, or nullptr if the types do not match. The data owns the pointed value.
Only valid as long as the GeData value exists.

◆ GetCustomDataTypeWritable()

DATATYPE* GetCustomDataTypeWritable ( )

◆ GetCustomDataTypeI()

const CustomDataType* GetCustomDataTypeI ( Int32  datatype) const

Retrieves the value of a CustomDataType, or nullptr if the wrong data type was specified. Forbidden for other data types.

Parameters
[in]datatypeThe data type ID.
Returns
The custom data type value, or nullptr if the types do not match. The data owns the pointed value.
Only valid as long as the GeData value exists.

◆ GetCustomDataTypeWritableI()

CustomDataType* GetCustomDataTypeWritableI ( Int32  datatype)

Retrieves the value of a CustomDataType, or nullptr if the wrong data type was specified. Forbidden for other data types.

Parameters
[in]datatypeThe data type ID.
Returns
The custom data type value, or nullptr if the types do not match. The data owns the pointed value.
Only valid as long as the GeData value exists.

◆ GetLink() [1/3]

const BaseList2D* GetLink ( const BaseDocument doc,
Int32  instanceof = 0 
) const

Evaluates the link of DA_ALIASLINK data objects. Equivalent to GetBaseLink()->GetLink().
If instanceof is specified, nullptr is returned if the object is not of this type. Forbidden for other data.

Parameters
[in]docThe document to evaluate the link in. The caller owns the pointed document.
[in]instanceofSet this to a node type to only return the link if it is of this type.
Returns
The evaluated link. Cinema 4D owns the pointed link.
Only valid as long as the GeData value exists.

◆ GetLink() [2/3]

BaseList2D* GetLink ( BaseDocument doc,
Int32  instanceof = 0 
) const

Evaluates the link of DA_ALIASLINK data objects. Equivalent to GetBaseLink()->GetLink().
If instanceof is specified, nullptr is returned if the object is not of this type. Forbidden for other data.

Parameters
[in]docThe document to evaluate the link in. The caller owns the pointed document.
[in]instanceofSet this to a node type to only return the link if it is of this type.
Returns
The evaluated link. Cinema 4D owns the pointed link.
Only valid as long as the GeData value exists.

◆ GetLink() [3/3]

BaseList2D* GetLink ( std::nullptr_t  doc,
Int32  instanceof = 0 
) const

◆ GetLinkAtom() [1/3]

const C4DAtomGoal* GetLinkAtom ( const BaseDocument doc,
Int32  instanceof = 0 
) const

Evaluates the atom link of DA_ALIASLINK data objects. Equivalent to GetBaseLink()->GetLinkAtom().
If instanceof is specified, nullptr is returned if the object is not of this type. Forbidden for other data.

Parameters
[in]docThe document to evaluate the atom link in. The caller owns the pointed document.
[in]instanceofSet this to a node type to only return the atom link if it is of this type.
Returns
The evaluated atom link. Cinema 4D owns the pointed atom link.
Only valid as long as the GeData value exists.

◆ GetLinkAtom() [2/3]

C4DAtomGoal* GetLinkAtom ( BaseDocument doc,
Int32  instanceof = 0 
) const

Evaluates the atom link of DA_ALIASLINK data objects. Equivalent to GetBaseLink()->GetLinkAtom().
If instanceof is specified, nullptr is returned if the object is not of this type. Forbidden for other data.

Parameters
[in]docThe document to evaluate the atom link in. The caller owns the pointed document.
[in]instanceofSet this to a node type to only return the atom link if it is of this type.
Returns
The evaluated atom link. Cinema 4D owns the pointed atom link.
Only valid as long as the GeData value exists.

◆ GetLinkAtom() [3/3]

C4DAtomGoal* GetLinkAtom ( std::nullptr_t  doc,
Int32  instanceof = 0 
) const

◆ GetMemoryAndRelease()

void* GetMemoryAndRelease ( Int count)

Retrieves the value of memory buffer data objects. Forbidden for other data.

Note
In this version of GetMemory() the caller takes over the ownership of the memory block.
The memory block must be allocated with NewMem() and deallocated with DeleteMem().
Parameters
[in]countAssigned the number of bytes in the returned memory buffer.
Returns
The memory buffer. The caller takes over the ownership of the memory block.
Only valid as long as the GeData value exists.

◆ GetMemory()

void* GetMemory ( Int count)

Retrieves the value of memory buffer data objects. Forbidden for other data.

Note
The memory block must be allocated with NewMem() and deallocated with DeleteMem().
Parameters
[in]countAssigned the number of bytes in the returned memory buffer.
Returns
The memory buffer. The data owns the pointed memory block.
Only valid as long as the GeData value exists.

◆ CopyData()

void CopyData ( GeData dest,
AliasTrans aliastrans 
) const

Copies the data to another with an alias translator for the links.

Parameters
[in]destThe destination data. The caller owns the pointed data.
[in]aliastransAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.

◆ SetFloat()

void SetFloat ( Float  v)

Sets the Float value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetInt32()

void SetInt32 ( Int32  v)

Sets the Int32 value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetInt64()

void SetInt64 ( const Int64 v)

Sets the Int64 value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetVoid()

void SetVoid ( void *  v)

Sets the void* value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetMemory()

void SetMemory ( void *  data,
Int  count 
)

Sets the memory buffer value and changes the data type accordingly.

Parameters
[in]dataThe new memory buffer value.
[in]countThe number of bytes in the memory buffer.

◆ SetVector()

void SetVector ( const Vector v)

Sets the Vector value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetMatrix()

void SetMatrix ( const Matrix v)

Sets the Matrix value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetString()

void SetString ( const maxon::String v)

Sets the String value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetUuid()

void SetUuid ( const C4DUuid v)

Sets the C4DUuid value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetTristate()

void SetTristate ( )

Sets data type accordingly (and clears the internal value)

◆ SetData() [1/2]

void SetData ( const maxon::Data v)

Sets the maxon::Data value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetData() [2/2]

void SetData ( maxon::Data &&  v)

◆ SetFilename()

void SetFilename ( const Filename v)

Sets the Filename value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetBaseTime()

void SetBaseTime ( const BaseTime v)

Sets the BaseTime value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetContainer()

void SetContainer ( const BaseContainer v)

Sets the BaseContainer value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetBaseLink()

void SetBaseLink ( const BaseLink v)

Sets the BaseLink value and changes the data type accordingly.

Parameters
[in]vThe new value.

◆ SetBaseList2D()

void SetBaseList2D ( BaseList2D bl)

Sets the BaseList2D value and changes the data type accordingly.

Parameters
[in]blThe new value.

◆ SetCustomDataTypeI()

void SetCustomDataTypeI ( Int32  datatype,
const CustomDataType v 
)

Sets the value for custom data type and changes the data type accordingly.

Parameters
[in]datatypeThe custom data type ID.
[in]vThe new custom data type value.

◆ SetCustomDataType()

void SetCustomDataType ( const DATATYPE &  v)

Sets the value for custom data type and changes the data type accordingly.

Parameters
[in]vThe new custom data type value.

Member Data Documentation

◆ Type

Int32 Type
private

◆ dummy

Int32 dummy
private

◆ DInteger

Int32 DInteger

◆ DReal

Float DReal

◆ Ddata

void* Ddata

◆ DLLong

Int64 DLLong

◆ 

union { ... }