datatype.h File Reference

Classes

class  UnregisteredDataTypeErrorInterface
 
struct  IsSimdElementType< T, CHECK >
 
struct  IsSimdElementType< T, typename SFINAEHelper< void, typename T::VectorStrideType >::type >
 
struct  SimdInfo
 
struct  SimdInfo::Compact
 
class  SimdBlock< T >
 
struct  AInt
 
struct  AUInt
 
struct  AFloat
 
struct  CheckedGetDataType< T, POLICY, QUALIFIED >
 
class  DataTypeCache
 
class  DataTypeCacheInstance< T, POLICY, ELEMENTARY >
 
class  DataTypeCacheInstance< T, POLICY, true >
 
class  DataTypeCacheInstance< void, POLICY, true >
 
class  DataTypeCacheInstance< std::nullptr_t, POLICY, true >
 
class  DataTypeCacheInstance< InvalidType, POLICY, true >
 
struct  MemberTypeBase< T, complete, typename >
 
struct  MemberTypeBase< T, true, typename std::enable_if< std::is_base_of< InternedId, T >::value, typename SFINAEHelper< void, typename T::ValueType >::type >::type >
 
struct  MemberType< T, GENERIC_FOR_UNKNOWN_TYPE >
 
struct  MemberType< T &, GENERIC_FOR_UNKNOWN_TYPE >
 
struct  MemberType< T &&, GENERIC_FOR_UNKNOWN_TYPE >
 
struct  SubstituteReferenceByPointer< T >
 
struct  SubstituteReferenceByPointer< T & >
 
struct  SubstituteReferenceByPointer< T && >
 
struct  NamedTupleMembers
 
class  NamedTuple< T >
 
struct  NamedTuple< T >::Helper
 
struct  NamedTuple< T >::HelperStorage
 
class  TupleValue
 
class  FunctionDataType
 
struct  CheckedGetDataType< T, POLICY, false >
 

Namespaces

 maxon
 
 maxon::details
 

Macros

#define PRIVATE_MAXON_DATATYPE_A(type, id)
 
#define PRIVATE_MAXON_DATATYPE(type, id)
 
#define MAXON_DATATYPE(type, id)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER(T, ret, flags)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER_ENUM(enumtype, cppname, id, size, flags, names, ...)
 
#define MAXON_DATATYPE_REGISTER(type)
 
#define PRIVATE_MAXON_DATATYPE_LOCAL_STATIC
 
#define MAXON_DATATYPE_LOCAL(type, id)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER_STRUCT_INIT(x, i, a)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER_STRUCT_OFFSETS(x, i, a)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER_STRUCT_B(Type, line, count, ...)
 
#define PRIVATE_MAXON_DATATYPE_REGISTER_STRUCT_A(type, line, count, ...)
 
#define MAXON_DATATYPE_REGISTER_STRUCT(type, ...)
 

Functions

template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (GenericArithmetic **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (void **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (std::nullptr_t **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (InvalidType **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
SFINAEHelper< Result< const DataType & >, typename T::NonvirtualInterfaceMarker >::type PrivateGetDataType (T **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
SFINAEHelper< Result< const DataType & >, typename T::InterfaceMarker >::type PrivateGetDataType (T **, OverloadRank1)
 
template<GET_DATATYPE_POLICY POLICY>
Result< const DataType & > PrivateGetDataType (void *, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (DataType **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (DataType::Primary **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (TupleDataType **, OverloadRank0)
 
template<typename T >
void PrivateDataTypeMarker (T *)
 
 MAXON_REGISTRY (DataType, DataTypes, "net.maxon.registry.datatypes")
 
void * PrivateDataTypeMarker (Char *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Char, "char")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Char **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Char)
 
void * PrivateDataTypeMarker (UChar *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UChar, "uchar")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UChar **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UChar)
 
void * PrivateDataTypeMarker (Int16 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Int16, "int16")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Int16 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Int16)
 
void * PrivateDataTypeMarker (UInt16 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UInt16, "uint16")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UInt16 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UInt16)
 
void * PrivateDataTypeMarker (Int32 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Int32, "int32")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Int32 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Int32)
 
void * PrivateDataTypeMarker (UInt32 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UInt32, "uint32")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UInt32 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UInt32)
 
void * PrivateDataTypeMarker (Int64 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Int64, "int64")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Int64 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Int64)
 
void * PrivateDataTypeMarker (UInt64 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UInt64, "uint64")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UInt64 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UInt64)
 
void * PrivateDataTypeMarker (Utf16Char *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Utf16Char, "utf16char")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Utf16Char **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Utf16Char)
 
void * PrivateDataTypeMarker (Utf32Char *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Utf32Char, "utf32char")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Utf32Char **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Utf32Char)
 
void * PrivateDataTypeMarker (Float32 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Float32, "float32")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Float32 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Float32)
 
void * PrivateDataTypeMarker (Float64 *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Float64, "float64")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Float64 **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Float64)
 
void * PrivateDataTypeMarker (Bool *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Bool, "bool")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Bool **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Bool)
 
void * PrivateDataTypeMarker (Byte *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Byte, "byte")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Byte **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Byte)
 
void * PrivateDataTypeMarker (AInt *)
 
 MAXON_DECLARATION (maxon::DataType, DT_AInt, "int")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (AInt **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (AInt)
 
void * PrivateDataTypeMarker (AUInt *)
 
 MAXON_DECLARATION (maxon::DataType, DT_AUInt, "uint")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (AUInt **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (AUInt)
 
void * PrivateDataTypeMarker (AFloat *)
 
 MAXON_DECLARATION (maxon::DataType, DT_AFloat, "float")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (AFloat **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (AFloat)
 
void * PrivateDataTypeMarker (UniqueHash *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UniqueHash, "net.maxon.datatype.hash")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UniqueHash **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UniqueHash)
 
void * PrivateDataTypeMarker (Id *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Id, "net.maxon.datatype.id")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Id **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Id)
 
void * PrivateDataTypeMarker (LiteralId *)
 
 MAXON_DECLARATION (maxon::DataType, DT_LiteralId, "net.maxon.datatype.literalid")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (LiteralId **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (LiteralId)
 
void * PrivateDataTypeMarker (InternedId *)
 
 MAXON_DECLARATION (maxon::DataType, DT_InternedId, "net.maxon.datatype.internedid")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (InternedId **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (InternedId)
 
void * PrivateDataTypeMarker (Data *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Data, "net.maxon.datatype.data")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Data **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Data)
 
void * PrivateDataTypeMarker (UnitType *)
 
 MAXON_DECLARATION (maxon::DataType, DT_UnitType, "net.maxon.datatype.unittype")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (UnitType **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (UnitType)
 
void * PrivateDataTypeMarker (SourceLocation *)
 
 MAXON_DECLARATION (maxon::DataType, DT_SourceLocation, "net.maxon.datatype.sourcelocation")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (SourceLocation **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (SourceLocation)
 
void * PrivateDataTypeMarker (DelegateBase *)
 
 MAXON_DECLARATION (maxon::DataType, DT_DelegateBase, "net.maxon.datatype.delegatebase")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (DelegateBase **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (DelegateBase)
 
template<Bool , typename T >
ResultOk< const DataType & > PrivateGetEnumDataType (T *, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
std::enable_if< STD_IS_REPLACEMENT(enum, T), ResultOk< const DataType & > >::type PrivateGetDataType (T **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (long **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (unsigned long **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (ParametricType **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (ComponentDescriptor **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
std::enable_if< GetDirectlyReferencedType< T >::value, Result< DataType > >::type PrivateGetDataType (T **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (T ***, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Block< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (StridedBlock< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
SFINAEHelper< Result< DataType >, typename T::VectorStrideType >::type PrivateGetDataType (T **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Opt< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Result< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY>
Result< DataType > PrivateGetDataType (AtomicBool **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Atomic8< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Atomic16< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Atomic32< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (Atomic64< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (AtomicPtr< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (AtomicFloatType< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T >
Result< DataType > PrivateGetDataType (BaseArray< T > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename... T>
Result< TupleDataType > PrivateGetDataType (Tuple< T... > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T , typename = typename T::StructTupleType>
Result< TupleDataType > PrivateGetDataType (T **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename R , typename... ARGS>
Result< DelegateDataType > PrivateGetDataType (Delegate< R(ARGS...)> **, OverloadRank2)
 
template<typename T , GET_DATATYPE_POLICY POLICY>
const auto & GetDataType ()
 
template<GET_DATATYPE_POLICY POLICY>
ResultOk< const DataType & > PrivateGetDataType (Generic **, OverloadRank0)
 
void * PrivateDataTypeMarker (ConstDataPtr *)
 
 MAXON_DECLARATION (maxon::DataType, DT_ConstDataPtr, "net.maxon.datatype.constdataptr")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (ConstDataPtr **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (ConstDataPtr)
 
void * PrivateDataTypeMarker (TrivialDataPtr *)
 
 MAXON_DECLARATION (maxon::DataType, DT_TrivialDataPtr, "net.maxon.datatype.trivialdataptr")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (TrivialDataPtr **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (TrivialDataPtr)
 
void * PrivateDataTypeMarker (DataPtr *)
 
 MAXON_DECLARATION (maxon::DataType, DT_DataPtr, "net.maxon.datatype.dataptr")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (DataPtr **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (DataPtr)
 
void * PrivateDataTypeMarker (MoveDataPtr *)
 
 MAXON_DECLARATION (maxon::DataType, DT_MoveDataPtr, "net.maxon.datatype.movedataptr")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (MoveDataPtr **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (MoveDataPtr)
 
void * PrivateDataTypeMarker (ForwardingDataPtr *)
 
 MAXON_DECLARATION (maxon::DataType, DT_ForwardingDataPtr, "net.maxon.datatype.forwardingdataptr")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (ForwardingDataPtr **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (ForwardingDataPtr)
 
void * PrivateDataTypeMarker (Member *)
 
 MAXON_DECLARATION (maxon::DataType, DT_Member, "net.maxon.datatype.member")
 
template<maxon::GET_DATATYPE_POLICY >
maxon::ResultOk< const maxon::DataType & > PrivateGetDataType (Member **, maxon::OverloadRank2)
 
 MAXON_ASSERT_LEGAL_LAYOUT (Member)
 
template<GET_DATATYPE_POLICY POLICY, typename... T>
Result< TupleDataType > PrivateGetDataType (NamedTuple< T... > **, OverloadRank0)
 
template<GET_DATATYPE_POLICY POLICY, typename T , T C>
Result< DataType > PrivateGetDataType (std::integral_constant< T, C > **, OverloadRank0)
 
 MAXON_DATATYPE_EARLY_ENUM (WRITEMETA, "net.maxon.datatype.enum.writemeta")
 
 MAXON_DATATYPE_EARLY_ENUM (TARGETAUDIENCE, "net.maxon.datatype.enum.targetaudience")
 
 MAXON_DATATYPE_EARLY_ENUM (OUTPUT, "net.maxon.datatype.enum.output")
 
 MAXON_DATATYPE_EARLY_ENUM (VALUEKIND, "net.maxon.datatype.enum.valuekind")
 
 MAXON_DATATYPE_EARLY_ENUM (COMPARERESULT, "net.maxon.datatype.enum.compareresult")
 
 MAXON_DATATYPE_EARLY_ENUM (EQUALITY, "net.maxon.datatype.enum.equality")
 
 MAXON_DATATYPE_EARLY_ENUM (COLLECTION_RESIZE_FLAGS, "net.maxon.datatype.enum.collection_resize_flags")
 

Variables

template<typename T , GET_DATATYPE_POLICY POLICY, Bool ELEMENTARY>
const DataTypeCache DataTypeCacheInstance< T, POLICY, ELEMENTARY >::_instance & CheckedGetDataType