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