/*!**************************************************************************** @file PVRTSingleton.h @copyright Copyright (c) Imagination Technologies Limited. @brief Singleton template. @details Pattern Usage: Inherit from CPVRTSingleton class like this: class Foo : public CPVRTSingleton<Foo> { ... }; ******************************************************************************/ #ifndef __PVRTSINGLETON__ #define __PVRTSINGLETON__ /*!**************************************************************************** @class CPVRTSingleton @brief Singleton template. @details Pattern Usage: Inherit from CPVRTSingleton class like this: class Foo : public CPVRTSingleton<Foo> { ... }; ******************************************************************************/ template<typename T> class CPVRTSingleton { private: /*! @brief Constructor. */ CPVRTSingleton(const CPVRTSingleton&); /*! @brief Deconstructor. */ CPVRTSingleton & operator=(const CPVRTSingleton&); public: static T& inst() { static T object; return object; } static T* ptr() { return &inst(); } protected: CPVRTSingleton() {}; virtual ~CPVRTSingleton() {}; }; #endif // __PVRTSINGLETON__ /***************************************************************************** End of file (PVRTSingleton.h) *****************************************************************************/