tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*!****************************************************************************
 
 @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)
*****************************************************************************/