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; };
180 template<>
inline const char* typeNameAsString<std::string>() {
return "string"; }
199 template<
typename ValueType>
206 mAValPtr(NULL), mBValPtr(NULL), mResultValPtr(&mResultVal),
207 mAIsActive(false), mBIsActive(false), mResultIsActive(false)
211 CombineArgs(
const ValueType& a,
const ValueType& b, ValueType& result,
212 bool aOn =
false,
bool bOn =
false):
213 mAValPtr(&a), mBValPtr(&b), mResultValPtr(&result),
214 mAIsActive(aOn), mBIsActive(bOn)
215 { updateResultActive(); }
218 CombineArgs(
const ValueType& a,
const ValueType& b,
bool aOn =
false,
bool bOn =
false):
219 mAValPtr(&a), mBValPtr(&b), mResultValPtr(&mResultVal),
220 mAIsActive(aOn), mBIsActive(bOn)
221 { updateResultActive(); }
224 const ValueType&
a()
const {
return *mAValPtr; }
226 const ValueType&
b()
const {
return *mBValPtr; }
228 const ValueType& result()
const {
return *mResultValPtr; }
230 ValueType&
result() {
return *mResultValPtr; }
274 template<
typename ValueType,
typename CombineOp>
324 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
325 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
326 #define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
327 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
328 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
329 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
333 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
334 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
335 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
336 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
337 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
338 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
341 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \
342 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710))
343 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \
344 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711))
345 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \
346 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712))
348 #else // GCC does not support these compiler warnings
350 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE
351 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE
352 #define OPENVDB_START_THREADSAFE_STATIC_WRITE
353 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE
354 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS
355 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS
357 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE
358 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE
359 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE
360 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE
361 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS
362 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS
364 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE
365 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE
366 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE
368 #endif // defined(__ICC)
370 #endif // OPENVDB_TYPES_HAS_BEEN_INCLUDED