class TYPE \
{ \
public: \
TYPE() : myPtr(nullptr) { }
\
bool
operator==(
const TYPE&
x)
const {
return myPtr == x.myPtr; } \
bool
operator!=(
const TYPE&
x)
const {
return !(*
this ==
x); } \
size_t hash() const { return SYShash(myPtr); } \
protected: \
TYPE(void *p) : myPtr(p) { } \
friend struct FBX_Detail; \
}; \
inline
size_t hash_value(TYPE
id) {
return id.hash(); }
\
namespace UT { \
template <typename T> struct DefaultClearer; \
template <> \
struct DefaultClearer<TYPE> \
{ \
using VoidP = void*; \
static
void clear(TYPE&
v) { v.myPtr = VoidP(-1LL); } \
static
bool isClear(
const TYPE&
v) {
return v.myPtr==VoidP(-1LL); } \
static void clearConstruct(TYPE* p) { clear(*p); } \
static const bool clearNeedsDestruction = false; \
}; \
} \
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
#define SYS_DECLARE_IS_POD(T)
Declare a type as POD.
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
size_t hash_value(const CH_ChannelRef &ref)