17b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens/*!**************************************************************************** 27b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 37b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @file PVRTSingleton.h 47b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @copyright Copyright (c) Imagination Technologies Limited. 57b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @brief Singleton template. 67b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @details Pattern Usage: Inherit from CPVRTSingleton 77b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens class like this: class Foo : public CPVRTSingleton<Foo> { ... }; 87b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 97b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens******************************************************************************/ 107b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens#ifndef __PVRTSINGLETON__ 117b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens#define __PVRTSINGLETON__ 127b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 137b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens/*!**************************************************************************** 147b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @class CPVRTSingleton 157b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @brief Singleton template. 167b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens @details Pattern Usage: Inherit from CPVRTSingleton class like this: 177b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens class Foo : public CPVRTSingleton<Foo> { ... }; 187b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens******************************************************************************/ 197b21f276fa91ad62fd2055844688b07829f12205Nicolas Capenstemplate<typename T> class CPVRTSingleton 207b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens{ 217b21f276fa91ad62fd2055844688b07829f12205Nicolas Capensprivate: 227b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens /*! @brief Constructor. */ 237b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens CPVRTSingleton(const CPVRTSingleton&); 247b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 257b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens /*! @brief Deconstructor. */ 267b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens CPVRTSingleton & operator=(const CPVRTSingleton&); 277b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 287b21f276fa91ad62fd2055844688b07829f12205Nicolas Capenspublic: 297b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens static T& inst() 307b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens { 317b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens static T object; 327b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens return object; 337b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens } 347b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 357b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens static T* ptr() 367b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens { 377b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens return &inst(); 387b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens } 397b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 407b21f276fa91ad62fd2055844688b07829f12205Nicolas Capensprotected: 417b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens CPVRTSingleton() {}; 427b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens virtual ~CPVRTSingleton() {}; 437b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens}; 447b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 457b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 467b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens#endif // __PVRTSINGLETON__ 477b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 487b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens/***************************************************************************** 497b21f276fa91ad62fd2055844688b07829f12205Nicolas CapensEnd of file (PVRTSingleton.h) 507b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens*****************************************************************************/ 517b21f276fa91ad62fd2055844688b07829f12205Nicolas Capens 52