37 #ifndef Alembic_Util_PlainOldDataType_h
38 #define Alembic_Util_PlainOldDataType_h
44 #if !defined(_MSC_VER) || _MSC_VER >= 1600
81 m_byte =
static_cast<byte_t>( tf );
93 return bool_t( m_byte == 0 );
96 bool asBool()
const {
return ( m_byte != 0 ); }
97 operator bool()
const {
return ( m_byte != 0 ); }
139 #if !defined(_MSC_VER) || _MSC_VER >= 1600
149 typedef unsigned char uint8_t;
150 typedef signed char int8_t;
151 typedef unsigned short uint16_t;
152 typedef signed short int16_t;
153 typedef unsigned int uint32_t;
155 typedef unsigned long long uint64_t;
156 typedef long long int64_t;
232 template <PlainOldDataType PODT,
class T >
struct PODTraits {};
238 #define DECLARE_TRAITS( PENUM, PTYPE, PNAME, DFLT, PTDEF ) \
240 struct PODTraits< PENUM , PTYPE > \
242 static const PlainOldDataType pod_enum = PENUM ; \
243 typedef PTYPE value_type ; \
244 static const char * name() { return PNAME ; } \
245 static PTYPE default_value() \
246 { return ( DFLT ) ; } \
247 static size_t numBytes() \
248 { return sizeof( PTYPE ) ; } \
250 typedef PODTraits< PENUM , PTYPE > PTDEF
269 #undef DECLARE_TRAITS
282 template <PlainOldDataType PENUM>
307 template <
class PTYPE>
336 case kBooleanPOD:
return BooleanPODTraits::numBytes();
337 case kUint8POD:
return Uint8PODTraits::numBytes();
338 case kInt8POD:
return Int8PODTraits::numBytes();
339 case kUint16POD:
return Uint16PODTraits::numBytes();
340 case kInt16POD:
return Int16PODTraits::numBytes();
341 case kUint32POD:
return Uint32PODTraits::numBytes();
342 case kInt32POD:
return Int32PODTraits::numBytes();
343 case kUint64POD:
return Uint64PODTraits::numBytes();
344 case kInt64POD:
return Int64PODTraits::numBytes();
345 case kFloat16POD:
return Float16PODTraits::numBytes();
346 case kFloat32POD:
return Float32PODTraits::numBytes();
347 case kFloat64POD:
return Float64PODTraits::numBytes();
348 case kStringPOD:
return StringPODTraits::numBytes();
349 case kWstringPOD:
return WstringPODTraits::numBytes();
406 template <PlainOldDataType POD>
410 value_type *valPtr =
reinterpret_cast<value_type*
>( addr );
419 case kBooleanPOD: PODSetDefaultPOD<kBooleanPOD>( bytes );
return;
420 case kUint8POD: PODSetDefaultPOD<kUint8POD>( bytes );
return;
421 case kInt8POD: PODSetDefaultPOD<kInt8POD>( bytes );
return;
422 case kUint16POD: PODSetDefaultPOD<kUint16POD>( bytes );
return;
423 case kInt16POD: PODSetDefaultPOD<kInt16POD>( bytes );
return;
424 case kUint32POD: PODSetDefaultPOD<kUint32POD>( bytes );
return;
425 case kInt32POD: PODSetDefaultPOD<kInt32POD>( bytes );
return;
426 case kUint64POD: PODSetDefaultPOD<kUint64POD>( bytes );
return;
427 case kInt64POD: PODSetDefaultPOD<kInt64POD>( bytes );
return;
428 case kFloat16POD: PODSetDefaultPOD<kFloat16POD>( bytes );
return;
429 case kFloat32POD: PODSetDefaultPOD<kFloat32POD>( bytes );
return;
430 case kFloat64POD: PODSetDefaultPOD<kFloat64POD>( bytes );
return;
433 case kStringPOD: PODSetDefaultPOD<kStringPOD>( bytes );
return;
434 case kWstringPOD: PODSetDefaultPOD<kWstringPOD>( bytes );
return;
Header file containing class definition for class Alembic::Util::Exception.
imath_half_bits_t half
if we're in a C-only context, alias the half bits type to half
GLsizei const GLchar *const * string
size_t PODNumBytes(PlainOldDataType pod)
GLboolean GLboolean GLboolean GLboolean a
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
PlainOldDataType PODFromName(const std::string &n)
DECLARE_TRAITS(kBooleanPOD, bool_t,"bool_t", false, BooleanPODTraits)
void PODSetDefaultPOD(void *addr)
This actually does work with strings!
GLuint const GLchar * name
GLboolean GLboolean GLboolean b
const char * PODName(PlainOldDataType pod)
void PODSetDefault(PlainOldDataType pod, void *bytes)
bool_t & operator=(byte_t b)
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
bool_t & operator=(bool tf)
#define ALEMBIC_VERSION_NS