00001 #ifndef Singleton_I2abdb221m12355049952mm400b_H
00002 #define Singleton_I2abdb221m12355049952mm400b_H
00004 template <class T>
00005 class Singleton{
00006
00007 public:
00008 virtual ~Singleton(){ }
00009 inline static T* instance(){
00010 if (!t)
00011 t = new T;
00012 return t;
00013 }
00014 static void deleteInstance(){
00015 delete t;
00016 t = 0;
00017 }
00018
00019 protected:
00020 Singleton() { }
00021
00022 private:
00023 static T *t;
00024 };
00025 template <class T>
00026 T *Singleton<T>::t = 0;
00027 #endif //Singleton_I2abdb221m12355049952mm400b_H