#include <genericdata.h>
GenericData wraps an object of arbitary type. Therefore it's similar to Data, but it supports less operations:
The advantage is that you don't need to register the type of the wrapped object as a DataType.
Public Member Functions | |
GenericData ()=default | |
GenericData (GenericData &&src) | |
MAXON_OPERATOR_MOVE_ASSIGNMENT (GenericData) | |
void | Reset () |
~GenericData () | |
template<typename T > | |
Result< void > | Set (T &&value) |
Bool | IsEmpty () const |
Bool | IsPopulated () const |
template<typename T > | |
const T & | Get () const |
template<typename T > | |
T & | Get () |
template<typename T > | |
Result< T & > | GetOrCreate () |
const void * | GetPointer () const |
void * | GetPointer () |
Static Private Member Functions | |
template<typename T > | |
static void | Free (GenericData *v) |
Private Attributes | |
void * | _ptr |
void(* | _free )(GenericData *) |
|
default |
Constructs an empty GenericData.
GenericData | ( | GenericData && | src | ) |
Constructs a GenericData by moving the contents of src to the new GenericData. src will be an empty GenericData afterwards.
[in,out] | src | The source object. |
~GenericData | ( | ) |
Destructs this GenericData. This frees any previously set value.
MAXON_OPERATOR_MOVE_ASSIGNMENT | ( | GenericData | ) |
void Reset | ( | void | ) |
Resets this GenericData to an empty object. This frees any previously set value.
Result<void> Set | ( | T && | value | ) |
Initializes this GenericData with value. This frees any previously set value at first.
[in] | value | The value to wrap. |
Bool IsEmpty | ( | ) | const |
Checks if this GenericData is empty.
Bool IsPopulated | ( | void | ) | const |
Checks if this GenericData has a wrapped value.
const T& Get | ( | void | ) | const |
Returns the wrapped value. The type T has to match the exact type of the wrapped value, otherwise the behaviour is undetermined. There is no check that the type matches.
T | The type of the wrapped value. |
T& Get | ( | void | ) |
Returns the wrapped value. The type T has to match the exact type of the wrapped value, otherwise the behaviour is undetermined. There is no check that the type matches.
T | The type of the wrapped value. |
Result<T&> GetOrCreate | ( | ) |
const void* GetPointer | ( | ) | const |
Returns a pointer to the wrapped value.
void* GetPointer | ( | ) |
Returns a pointer to the wrapped value.
|
staticprivate |
|
private |
|
private |