31 #ifndef OPENVDB_TYPES_HAS_BEEN_INCLUDED
32 #define OPENVDB_TYPES_HAS_BEEN_INCLUDED
36 #include <OpenEXR/half.h>
37 #include <openvdb/math/Math.h>
38 #include <openvdb/math/BBox.h>
39 #include <openvdb/math/Quat.h>
40 #include <openvdb/math/Vec2.h>
41 #include <openvdb/math/Vec3.h>
42 #include <openvdb/math/Vec4.h>
43 #include <openvdb/math/Mat3.h>
44 #include <openvdb/math/Mat4.h>
45 #include <openvdb/math/Coord.h>
46 #include <openvdb/math/Hermite.h>
62 typedef unsigned char Byte;
113 template<
typename T>
struct VecTraits {
static const bool IsVec =
false; };
114 template<
typename T>
struct VecTraits<math::Vec2<T> > {
static const bool IsVec =
true; };
115 template<
typename T>
struct VecTraits<math::Vec3<T> > {
static const bool IsVec =
true; };
116 template<
typename T>
struct VecTraits<math::Vec4<T> > {
static const bool IsVec =
true; };
228 template<>
inline const char* typeNameAsString<std::string>() {
return "string"; }
247 template<
typename ValueType>
254 mAValPtr(NULL), mBValPtr(NULL), mResultValPtr(&mResultVal),
255 mAIsActive(false), mBIsActive(false), mResultIsActive(false)
259 CombineArgs(
const ValueType& a,
const ValueType& b, ValueType& result,
260 bool aOn =
false,
bool bOn =
false):
261 mAValPtr(&a), mBValPtr(&b), mResultValPtr(&result),
262 mAIsActive(aOn), mBIsActive(bOn)
263 { updateResultActive(); }
266 CombineArgs(
const ValueType& a,
const ValueType& b,
bool aOn =
false,
bool bOn =
false):
267 mAValPtr(&a), mBValPtr(&b), mResultValPtr(&mResultVal),
268 mAIsActive(aOn), mBIsActive(bOn)
269 { updateResultActive(); }
272 const ValueType&
a()
const {
return *mAValPtr; }
274 const ValueType&
b()
const {
return *mBValPtr; }
277 const ValueType&
result()
const {
return *mResultValPtr; }
278 ValueType&
result() {
return *mResultValPtr; }
322 template<
typename ValueType,
typename CombineOp>
372 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
373 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
374 #define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
375 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
376 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
377 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
381 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
382 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
383 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
384 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
385 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
386 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
389 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \
390 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710))
391 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \
392 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711))
393 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \
394 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712))
396 #else // GCC does not support these compiler warnings
398 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE
399 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE
400 #define OPENVDB_START_THREADSAFE_STATIC_WRITE
401 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE
402 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS
403 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS
405 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE
406 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE
407 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE
408 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE
409 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS
410 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS
412 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE
413 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE
414 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE
416 #endif // defined(__ICC)
418 #endif // OPENVDB_TYPES_HAS_BEEN_INCLUDED