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