37#ifndef Alembic_Abc_TypedPropertyTraits_h
38#define Alembic_Abc_TypedPropertyTraits_h
40#include <Alembic/Abc/Foundation.h>
48namespace ALEMBIC_VERSION_NS {
54#define ALEMBIC_ABC_DECLARE_TYPE_TRAITS( VAL, POD, EXTENT, INTERP, PTDEF ) \
57 static const PlainOldDataType pod_enum = POD; \
58 static const int extent = EXTENT; \
59 typedef VAL value_type; \
60 static const char * interpretation() { return ( INTERP ) ; } \
61 static const char * name() { return #PTDEF; } \
62 static AbcA::DataType dataType() \
63 { return AbcA::DataType( POD, EXTENT ) ; } \
64 static value_type defaultValue() \
65 { value_type v; return v; } \
70#define DECLARE_POD_TRAITS( POD_TYPE , PTDEF ) \
73 static const PlainOldDataType pod_enum = \
74 PODTraitsFromType< POD_TYPE >::pod_enum; \
75 static const int extent = 1; \
76 typedef POD_TYPE value_type; \
77 static const char * interpretation() { return ""; } \
78 static const char * name() { return #PTDEF; } \
79 static AbcA::DataType dataType() \
80 { return AbcA::DataType( PODTraitsFromType< POD_TYPE >::pod_enum, 1 ); } \
81 static value_type defaultValue() \
82 { return PODTraitsFromType< POD_TYPE >::default_value(); } \
86DECLARE_POD_TRAITS( bool_t, BooleanTPTraits );
87DECLARE_POD_TRAITS( uint8_t, Uint8TPTraits );
88DECLARE_POD_TRAITS( int8_t, Int8TPTraits );
89DECLARE_POD_TRAITS( uint16_t, Uint16TPTraits );
90DECLARE_POD_TRAITS( int16_t, Int16TPTraits );
91DECLARE_POD_TRAITS( uint32_t, Uint32TPTraits );
92DECLARE_POD_TRAITS( int32_t, Int32TPTraits );
93DECLARE_POD_TRAITS( uint64_t, Uint64TPTraits );
94DECLARE_POD_TRAITS( int64_t, Int64TPTraits );
95DECLARE_POD_TRAITS( float16_t, Float16TPTraits );
96DECLARE_POD_TRAITS( float32_t, Float32TPTraits );
97DECLARE_POD_TRAITS( float64_t, Float64TPTraits );
98DECLARE_POD_TRAITS(
string, StringTPTraits );
99DECLARE_POD_TRAITS( wstring, WstringTPTraits );
101#undef DECLARE_POD_TRAITS
104ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2s, kInt16POD, 2,
"vector", V2sTPTraits );
105ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2i, kInt32POD, 2,
"vector", V2iTPTraits );
106ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2f, kFloat32POD, 2,
"vector", V2fTPTraits );
107ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2d, kFloat64POD, 2,
"vector", V2dTPTraits );
109ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3s, kInt16POD, 3,
"vector", V3sTPTraits );
110ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3i, kInt32POD, 3,
"vector", V3iTPTraits );
111ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3f, kFloat32POD, 3,
"vector", V3fTPTraits );
112ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3d, kFloat64POD, 3,
"vector", V3dTPTraits );
114ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2s, kInt16POD, 2,
"point", P2sTPTraits );
115ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2i, kInt32POD, 2,
"point", P2iTPTraits );
116ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2f, kFloat32POD, 2,
"point", P2fTPTraits );
117ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2d, kFloat64POD, 2,
"point", P2dTPTraits );
119ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3s, kInt16POD, 3,
"point", P3sTPTraits );
120ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3i, kInt32POD, 3,
"point", P3iTPTraits );
121ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3f, kFloat32POD, 3,
"point", P3fTPTraits );
122ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V3d, kFloat64POD, 3,
"point", P3dTPTraits );
124ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box2s, kInt16POD, 4,
"box", Box2sTPTraits );
125ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box2i, kInt32POD, 4,
"box", Box2iTPTraits );
126ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box2f, kFloat32POD, 4,
"box", Box2fTPTraits );
127ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box2d, kFloat64POD, 4,
"box", Box2dTPTraits );
129ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box3s, kInt16POD, 6,
"box", Box3sTPTraits );
130ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box3i, kInt32POD, 6,
"box", Box3iTPTraits );
131ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box3f, kFloat32POD, 6,
"box", Box3fTPTraits );
132ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Box3d, kFloat64POD, 6,
"box", Box3dTPTraits );
134ALEMBIC_ABC_DECLARE_TYPE_TRAITS( M33f, kFloat32POD, 9,
"matrix", M33fTPTraits );
135ALEMBIC_ABC_DECLARE_TYPE_TRAITS( M33d, kFloat64POD, 9,
"matrix", M33dTPTraits );
136ALEMBIC_ABC_DECLARE_TYPE_TRAITS( M44f, kFloat32POD, 16,
"matrix", M44fTPTraits );
137ALEMBIC_ABC_DECLARE_TYPE_TRAITS( M44d, kFloat64POD, 16,
"matrix", M44dTPTraits );
139ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Quatf, kFloat32POD, 4,
"quat", QuatfTPTraits );
140ALEMBIC_ABC_DECLARE_TYPE_TRAITS( Quatd, kFloat64POD, 4,
"quat", QuatdTPTraits );
144ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C3h, kFloat16POD, 3,
"rgb", C3hTPTraits );
145ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C3f, kFloat32POD, 3,
"rgb", C3fTPTraits );
146ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C3c, kUint8POD, 3,
"rgb", C3cTPTraits );
148ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C4h, kFloat16POD, 4,
"rgba", C4hTPTraits );
149ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C4f, kFloat32POD, 4,
"rgba", C4fTPTraits );
150ALEMBIC_ABC_DECLARE_TYPE_TRAITS( C4c, kUint8POD, 4,
"rgba", C4cTPTraits );
154ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2f, kFloat32POD, 2,
"normal", N2fTPTraits );
155ALEMBIC_ABC_DECLARE_TYPE_TRAITS( V2d, kFloat64POD, 2,
"normal", N2dTPTraits );
158ALEMBIC_ABC_DECLARE_TYPE_TRAITS( N3f, kFloat32POD, 3,
"normal", N3fTPTraits );
159ALEMBIC_ABC_DECLARE_TYPE_TRAITS( N3d, kFloat64POD, 3,
"normal", N3dTPTraits );
163using namespace ALEMBIC_VERSION_NS;
Alembic namespace ...
Definition ArchiveInfo.cpp:39