Loading [MathJax]/extensions/TeX/AMSmath.js
 |
Radium Engine
1.5.0
|
3 #include <Core/RaCore.hpp>
21 #define RA_SINGLETON_INTERFACE( TYPE ) \
23 TYPE( const TYPE& ) = delete; \
24 void operator=( const TYPE& ) = delete; \
26 void operator()( TYPE* p ) const { delete p; } \
28 static std::unique_ptr<TYPE, Deleter> s_instance; \
31 template <typename... Args> \
32 inline static TYPE* createInstance( const Args&... args ) { \
33 s_instance = std::unique_ptr<TYPE, Deleter>( new TYPE( args... ), Deleter() ); \
34 return getInstance(); \
36 inline static TYPE* getInstance() { return s_instance.get(); } \
37 inline static void destroyInstance() { s_instance.reset( nullptr ); }
42 #define RA_SINGLETON_IMPLEMENTATION( TYPE ) \
43 std::unique_ptr<TYPE, TYPE::Deleter> TYPE::s_instance = nullptr; \