template <typename T>
class singleton
{
- static T* ptr;
+ static T* ptr_;
public:
singleton()
{
- if (!ptr)
+ if (!ptr_)
{
// This hack is from Game Programming Gems.
long long offset = (long long)(T*)1 - (long long)(singleton<T>*)(T*)1;
- ptr = (T*)((long long)this + offset);
+ ptr_ = (T*)((long long)this + offset);
}
}
~singleton()
{
long long offset = (long long)(T*)1 - (long long)(singleton<T>*)(T*)1;
- if (ptr == (T*)((long long)this + offset))
+ if (ptr_ == (T*)((long long)this + offset))
{
- ptr = 0;
+ ptr_ = 0;
}
}
static T& instance()
{
- if (!ptr)
+ if (!ptr_)
{
throw std::runtime_error("accessing uninstantiated singleton");
}
- return *ptr;
+ return *ptr_;
}
- static T* instancePtr()
+ static T* instance__ptr()
{
- return ptr;
+ return ptr_;
}
};
-template <typename T> T* singleton<T>::ptr = 0;
+template <typename T> T* singleton<T>::ptr_ = 0;
#endif // _SINGLETON_HH_