3 #ifndef INCLUDE_NN_NLIB_SINGLETON_H_
4 #define INCLUDE_NN_NLIB_SINGLETON_H_
18 T* ptr =
reinterpret_cast<T*
>(&m_Memory[0]);
21 static T& GetInstance() {
return Instance(); }
25 static int32_t m_Flag;
28 NLIB_ALIGNAS(8) static
unsigned char m_Memory[sizeof(T)];
36 void Singleton<T>::Init() {
44 int32_t Singleton<T>::m_Flag = 0;
48 #if !defined(NN_PLATFORM_CTR)
49 NLIB_ALIGNAS(8) unsigned
char Singleton<T>::m_Memory[sizeof(T)];
51 unsigned char Singleton<T>::m_Memory[
sizeof(T)];
57 #endif // INCLUDE_NN_NLIB_SINGLETON_H_
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
最初に利用されるときにオブジェクトが初期化されるシングルトンです。
#define NLIB_ALIGNAS(x)
alignas(x)又は同等の定義がされます。
static T & Instance()
T のシングルトンインスタンスを取得します。