00001 #ifndef __UT_Thing__ 00002 #define __UT_Thing__ 00003 00004 #include "UT_API.h" 00005 00006 class UT_API UT_Thing { 00007 public: 00008 UT_Thing() { } 00009 UT_Thing(void *v) { value.voidp = (void *)v; } 00010 UT_Thing(long v) { value.longv = v; } 00011 00012 operator void *() const { return value.voidp; } 00013 operator long () const { return value.longv; } 00014 00015 template <typename T> T *asPointer() const { return (T *)value.voidp; } 00016 long asLong() const { return value.longv; } 00017 00018 UT_Thing &operator=(void *v) { value.voidp = v; return *this; } 00019 UT_Thing &operator=(long v) { value.longv = v; return *this; } 00020 00021 UT_Thing &operator=(const UT_Thing &v) 00022 { 00023 value.voidp = v.value.voidp; 00024 return *this; 00025 } 00026 00027 union { 00028 void *voidp; 00029 long longv; 00030 } value; 00031 }; 00032 00033 #endif
1.5.9