Open Search
    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