11#ifndef INCGUARD_MGL_SINGLETON_H_1608105970
12#define INCGUARD_MGL_SINGLETON_H_1608105970
37 static inline std::unique_ptr<std::recursive_mutex> _mutex;
42template<typename T, class... Args>
54 auto &instance = T::GetInstanceRef();
56 if (instance.get() ==
nullptr)
58 instance = STL::make_unique<T>(args...);
59 if (instance.get() !=
nullptr)
65 return *(instance.get());
76 auto &instance = T::GetInstanceRef();
77 assert(instance.get());
78 return *(instance.get());
91 T::GetInstanceRef().reset();
104 return T::GetInstanceRef().get() !=
nullptr;
122template<typename T, class... Args>
136 _instance = STL::make_unique<T>(args...);
181 return _instance !=
nullptr;
197 static inline STL::unique_ptr<T> _instance =
nullptr;
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
static T & CreateInstance(Args... args) noexcept
インスタンスの生成
Definition mgl_singleton.h:52
static T & GetInstance() noexcept
インスタンスの取得
Definition mgl_singleton.h:74
static bool HasInstance() noexcept
有効なインスタンスを保持しているかを取得
Definition mgl_singleton.h:102
static void DestroyInstance() noexcept
インスタンスの破棄
Definition mgl_singleton.h:86
シングルトン解放クラス
Definition mgl_singleton.h:24
static void Unregister(FinalizeFunction function) noexcept
シングルトンクラスの登録解除
Definition mgl_singleton.cc:78
static void Register(FinalizeFunction function) noexcept
シングルトンクラスの登録
Definition mgl_singleton.cc:43
static void Finalize() noexcept
登録されたシングルトンクラスの解放
Definition mgl_singleton.cc:61
static bool Initialize() noexcept
シングルトン解放クラスの初期化
Definition mgl_singleton.cc:22
void(*)() FinalizeFunction
解放用の関数の型
Definition mgl_singleton.h:27
シングルトンテンプレート(アプリケーションまたは静的リンクライブラリのみ利用可能)
Definition mgl_singleton.h:124
static void DestroyInstance() noexcept
インスタンスの破棄
Definition mgl_singleton.h:163
static constexpr bool HasInstance() noexcept
有効なインスタンスを保持しているかを取得
Definition mgl_singleton.h:179
static constexpr T & GetInstance() noexcept
インスタンスの取得
Definition mgl_singleton.h:152
static T & CreateInstance(Args... args) noexcept
インスタンスの生成
Definition mgl_singleton.h:132