25#define CREATE_HASH_CLASS(ClassName) \
26class ClassName { \
27public: \
28 ClassName() : m_data(UINT_MAX) {}; \
29 explicit ClassName( unsigned int dat ) : m_data(dat) {} \
30 operator unsigned int () const { \
31 return m_data; \
32 } \
33 const ClassName& operator=( const ClassName& rhs ) { \
34 m_data = rhs.m_data; \
35 return *this; \
36 } \
37 const ClassName& operator=( unsigned int rhs ) { \
38 m_data = rhs; \
39 return *this; \
40 } \
41 bool isValid() const { \
42 return m_data != UINT_MAX; \
43 } \
44private: \
45 unsigned int m_data; \
46};