| /*!**************************************************************************** | |
| @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) | |
| *****************************************************************************/ | |