DataTypeImpl::Instantiated Class Reference

#include <datatypebase.h>

Inheritance diagram for DataTypeImpl::Instantiated:

Public Member Functions

template<typename T , typename C >
 DataTypeImpl (const Id &type, const DataTypeImpl *underlying, const DataTypeImpl *element, const T *nullValue, const C *dummy, VALUEKIND flags=VALUEKIND::NONE, const NonvirtualInterfaceImplementation *impl=nullptr, VALUEKIND kind=ValueKindHelper< T, GetDirectlyReferencedType< T >::value >::KIND, const ParametricTypeInterface *pt=nullptr, const DataTypeImpl *extra=nullptr)
 
template<typename C >
 DataTypeImpl (const Id &type, const DataTypeImpl *underlying, const DataTypeImpl *element, const void *nullValue, Int size, Int alignment, const C *dummy, VALUEKIND kind, const ParametricTypeInterface *pt=nullptr, const DataTypeImpl *extra=nullptr)
 
 DataTypeImpl ()
 
 DataTypeImpl (const DataTypeImpl &src, const Id &typeId, VALUEKIND qualification, const ParametricTypeInterface *pt, VALUEKIND remove=VALUEKIND::NONE, Bool copyTypeArgs=true, const DataTypeImpl *element=nullptr)
 
- Public Member Functions inherited from DataTypeImpl
template<typename T , typename C >
 DataTypeImpl (const Id &type, const DataTypeImpl *underlying, const DataTypeImpl *element, const T *nullValue, const C *dummy, VALUEKIND flags=VALUEKIND::NONE, const NonvirtualInterfaceImplementation *impl=nullptr, VALUEKIND kind=ValueKindHelper< T, GetDirectlyReferencedType< T >::value >::KIND, const ParametricTypeInterface *pt=nullptr, const DataTypeImpl *extra=nullptr)
 
template<typename C >
 DataTypeImpl (const Id &type, const DataTypeImpl *underlying, const DataTypeImpl *element, const void *nullValue, Int size, Int alignment, const C *dummy, VALUEKIND kind, const ParametricTypeInterface *pt=nullptr, const DataTypeImpl *extra=nullptr)
 
 DataTypeImpl ()
 
 DataTypeImpl (const DataTypeImpl &src, const Id &typeId, VALUEKIND qualification, const ParametricTypeInterface *pt, VALUEKIND remove=VALUEKIND::NONE, Bool copyTypeArgs=true, const DataTypeImpl *element=nullptr)
 
const IdGetId () const
 
String ToString (const FormatStatement *formatStatement=nullptr) const
 
Int GetSize () const
 
Int GetAlignment () const
 
VALUEKIND GetValueKind () const
 
Bool CheckValueKind (VALUEKIND test) const
 
const DataTypeImplGetUnqualifiedType () const
 
const DataTypeGetUnderlyingType () const
 
const DataTypeGetElementType () const
 
const DataTypeImplGetDecayedType () const
 
Bool HasTypeArguments () const
 
const TypeArgumentsGetTypeArguments () const
 
const ParametricTypeInterfaceGetParametricType () const
 
const SimdInfoGetSimdInfo () const
 
const NonvirtualInterfaceImplementation * GetImplementation () const
 
const InterfaceDefinition *const * GetInterfaces () const
 
const Generic * GetNullValue () const
 
Result< void * > Create () const
 
void Construct (void *dest) const
 
void Construct (void *dest, Int dstride, Int count) const
 
void Destruct (const void *dest) const
 
void Destruct (const void *dest, Int dstride, Int count) const
 
void MoveConstruct (void *dest, void *src) const
 
void MoveConstruct (void *dest, Int dstride, void *src, Int sstride, Int count) const
 
void MoveFrom (void *dest, void *src) const
 
void MoveFrom (void *dest, Int dstride, void *src, Int sstride, Int count) const
 
Result< void > CopyFrom (void *dest, const void *src) const
 
Result< void > CopyFrom (void *dest, Int dstride, const void *src, Int sstride, Int count) const
 
void AddReference (const void *obj) const
 
void RemoveReference (const void *obj) const
 
String ToString (const void *s, const FormatStatement *formatStatement) const
 
Bool IsEqual (const void *s1, const void *s2, EQUALITY equality) const
 
COMPARERESULT Compare (const void *s1, const void *s2) const
 
HashInt GetHashCode (const void *s1) const
 
UniqueHash GetUniqueHashCode (const void *s1) const
 
Result< void > DescribeIO (const DataSerializeInterface &stream) const
 
Result< void > PrivateRegister () const
 
void PrivateSetStructType (const TupleDataType &tupleType, const Int *offsets)
 
void PrivateSetTypeArgs (StrongRef< const TypeArguments > &&args)
 
const StrongRef< const DataTypeImpl > & PrivateGetExtraType () const
 
Result< void > InitializeNullValue ()
 

Additional Inherited Members

- Protected Types inherited from DataTypeImpl
enum class  FLAGS {
  NONE ,
  GLOBALLY_REFERENCED ,
  OWNS_NULL_VALUE
}
 
- Protected Member Functions inherited from DataTypeImpl
enum maxon::DataTypeImpl::FLAGS MAXON_ENUM_FLAGS_CLASS (FLAGS)
 
 ~DataTypeImpl ()
 
void ResetRefs ()
 
void ResetNullValue ()
 
 MAXON_DISALLOW_COPY_AND_ASSIGN (DataTypeImpl)
 
void AddReference () const
 
void RemoveReference () const
 
- Protected Attributes inherited from DataTypeImpl
const Id _id
 
const Int _size
 
const Int _alignment
 
VALUEKIND _valueKind
 
FLAGS _flags
 
StrongRef< const DataTypeImpl_underlying
 
StrongRef< const DataTypeImpl_elementType
 
StrongRef< const DataTypeImpl_extraType
 
const ParametricTypeInterface_parametricType
 
union {
   const NonvirtualInterfaceImplementation *   _implementation
 
   const InterfaceDefinition *const *   _interfaces
 
   const TypeArguments *   _typeArgs
 
MAXON_ENUM_FLAGS_CLASS
 
const void * _conversions [3]
 
const Generic * _nullValue
 
void(*const _construct )(const DataTypeImpl *type, void *dest, Int dstride, Int count)
 
void(*const _destruct )(const DataTypeImpl *type, const void *dest, Int dstride, Int count)
 
void(*const _moveConstruct )(const DataTypeImpl *type, void *dest, Int dstride, void *src, Int sstride, Int count)
 
void(*const _moveFrom )(const DataTypeImpl *type, void *dest, Int dstride, void *src, Int sstride, Int count)
 
Result< void >(*const _copyFrom )(const DataTypeImpl *type, void *dest, Int dstride, const void *src, Int sstride, Int count)
 
void(*const _addReference )(const DataTypeImpl *type, const void *obj)
 
void(*const _removeReference )(const DataTypeImpl *type, const void *obj)
 
String(*const _toString )(const DataTypeImpl *type, const void *s, const FormatStatement *formatStatement)
 
Bool(*const _isEqual )(const DataTypeImpl *type, const void *s1, const void *s2, EQUALITY equality)
 
COMPARERESULT(*const _compare )(const DataTypeImpl *type, const void *s1, const void *s2)
 
HashInt(*const _getHashCode )(const DataTypeImpl *type, const void *s1)
 
UniqueHash(*const _getUniqueHashCode )(const DataTypeImpl *type, const void *s1)
 
Result< void >(* _describeIO )(const DataTypeImpl *type, const DataSerializeInterface &stream)
 
Result< void * >(*const _newInstance )(const DataTypeImpl *type)
 
Result< void >(*const _initData )(const DataTypeImpl *type, DataMemBlock *mem)
 
void(*const _freeData )(const DataTypeImpl *type, DataMemBlock *mem)
 
Result< void >(*const _copyData )(const DataTypeImpl *type, DataMemBlock *d, const DataMemBlock *s)
 
Result< void >(*const _initCopyData )(const DataTypeImpl *type, DataMemBlock *d, const DataMemBlock *s)
 
void(*const _moveData )(const DataTypeImpl *type, DataMemBlock *d, DataMemBlock *s)
 
void(*const _initMoveData )(const DataTypeImpl *type, DataMemBlock *d, DataMemBlock *s)
 
const void *(*const _getPtr )(const DataTypeImpl *type, const DataMemBlock *s)
 
Bool(*const _isEqualData )(const DataTypeImpl *type, const DataMemBlock *s1, const DataMemBlock *s2, EQUALITY equality)
 

Member Function Documentation

◆ DataTypeImpl() [1/4]

DataTypeImpl ( typename T  ,
typename C   
)

Constructs a DataTypeImpl for T and sets the functions pointers to the implementations found in C.

Template Parameters
TType which this DataType shall represent.
CClass which implements the DataType functions as static functions.
Parameters
[in]typeUnique id of the data type.
[in]underlyingThe underlying, layout-compatible type, may be nullptr.
[in]elementThe element type (used e.g. for arrays or pointers), may be nullptr.
[in]nullValuePointer to a default-constructed object of type T. The lifetime needs to be longer than the lifetime of the constructed DataTypeImpl object.
[in]dummyDummy variable to determine C.
[in]flagsExtra flags for the VALUEKIND of the datatype.
[in]implPointer to the implementation if the datatype stands for a non-virtual interface, otherwise nullptr.
[in]kindThe VALUEKIND of the datatype, by default set to the value determined by ValueKindHelper.

◆ DataTypeImpl() [2/4]

DataTypeImpl ( typename C  )

Constructs a DataTypeImpl and sets the functions pointers to the implementations found in C.

Template Parameters
CClass which implements the DataType functions as static functions.
Parameters
[in]typeUnique id of the data type.
[in]underlyingThe underlying, layout-compatible type, may be nullptr.
[in]elementThe element type (used e.g. for arrays or pointers), may be nullptr.
[in]nullValuePointer to a default-constructed object of the type. The lifetime needs to be longer than the lifetime of the constructed DataTypeImpl object.
[in]sizeThe size of the type.
[in]alignmentThe alignment of the type.
[in]dummyDummy variable to determine C.
[in]kindThe complete VALUEKIND of the datatype.
[in]ptThe parametric type which instantiates the DataType, may be nullptr.

◆ DataTypeImpl() [3/4]

◆ DataTypeImpl() [4/4]