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 *defaultValue, 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 *defaultValue, 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 *defaultValue, 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 *defaultValue, 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 Id & GetId () const
 
String ToString (const FormatStatement *formatStatement=nullptr) const
 
Int GetSize () const
 
Int GetAlignment () const
 
VALUEKIND GetValueKind () const
 
Bool CheckValueKind (VALUEKIND test) const
 
const DataTypeImpl * GetUnqualifiedType () const
 
const DataType & GetUnderlyingType () const
 
const DataType & GetElementType () const
 
const DataTypeImpl * GetDecayedType () const
 
Bool HasTypeArguments () const
 
const TypeArguments & GetTypeArguments () const
 
const ParametricTypeInterface * GetParametricType () const
 
const SimdInfo & GetSimdInfo () const
 
const NonvirtualInterfaceImplementation * GetImplementation () const
 
const InterfaceDefinition *const * GetInterfaces () const
 
const Generic * GetDefaultValue () 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 > InitializeDefaultValue ()
 

Additional Inherited Members

- Protected Types inherited from DataTypeImpl
enum class  FLAGS {
  NONE ,
  GLOBALLY_REFERENCED ,
  OWNS_DEFAULT_VALUE
}
 
- Protected Member Functions inherited from DataTypeImpl
enum maxon::DataTypeImpl::FLAGS MAXON_ENUM_FLAGS_CLASS (FLAGS)
 
 ~DataTypeImpl ()
 
void ResetRefs ()
 
void ResetDefaultValue ()
 
 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 * _defaultValue
 
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]defaultValuePointer 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]defaultValuePointer 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]