update singleton
This commit is contained in:
		
							parent
							
								
									a794894452
								
							
						
					
					
						commit
						f786ab67ef
					
				|  | @ -68,11 +68,11 @@ public: | ||||||
| 
 | 
 | ||||||
|     void DestroyModule() override; |     void DestroyModule() override; | ||||||
| 
 | 
 | ||||||
|  |     ~AudioModule(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     AudioModule(); |     AudioModule(); | ||||||
| 
 | 
 | ||||||
|     ~AudioModule(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|     IXAudio2*               x_audio2_; |     IXAudio2*               x_audio2_; | ||||||
|     IXAudio2MasteringVoice* mastering_voice_; |     IXAudio2MasteringVoice* mastering_voice_; | ||||||
|  |  | ||||||
|  | @ -102,11 +102,11 @@ public: | ||||||
| 
 | 
 | ||||||
|     void HandleEvent(Event* evt) override; |     void HandleEvent(Event* evt) override; | ||||||
| 
 | 
 | ||||||
|  |     virtual ~Director(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     Director(); |     Director(); | ||||||
| 
 | 
 | ||||||
|     virtual ~Director(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|     bool            render_border_enabled_; |     bool            render_border_enabled_; | ||||||
|     Stack<StagePtr> stages_; |     Stack<StagePtr> stages_; | ||||||
|  |  | ||||||
|  | @ -19,12 +19,13 @@ | ||||||
| // THE SOFTWARE.
 | // THE SOFTWARE.
 | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
|  | #include <memory> | ||||||
| 
 | 
 | ||||||
| namespace kiwano | namespace kiwano | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
| template <typename _Ty> | template <typename _Ty> | ||||||
| struct Singleton | class Singleton | ||||||
| { | { | ||||||
| protected: | protected: | ||||||
|     Singleton()                 = default; |     Singleton()                 = default; | ||||||
|  | @ -32,29 +33,47 @@ protected: | ||||||
|     Singleton& operator=(const Singleton&) = delete; |     Singleton& operator=(const Singleton&) = delete; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     struct ObjectCreator |     struct InstanceCreator | ||||||
|     { |     { | ||||||
|         ObjectCreator() |         InstanceCreator() | ||||||
|         { |         { | ||||||
|             (void)Singleton<_Ty>::GetInstance(); |             (void)Singleton<_Ty>::GetInstancePtr(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         inline void Dummy() const {} |         inline void Dummy() const {} | ||||||
|     }; |     }; | ||||||
|     static ObjectCreator creator_; |     static InstanceCreator creator_; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     using object_type = _Ty; |     using object_type = _Ty; | ||||||
| 
 | 
 | ||||||
|  |     static std::unique_ptr<object_type> instance_ptr_; | ||||||
|  | 
 | ||||||
|     static inline object_type& GetInstance() |     static inline object_type& GetInstance() | ||||||
|     { |     { | ||||||
|         static object_type instance; |         return *GetInstancePtr(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     static inline object_type* GetInstancePtr() | ||||||
|  |     { | ||||||
|         creator_.Dummy(); |         creator_.Dummy(); | ||||||
|         return instance; |         if (!instance_ptr_) | ||||||
|  |         { | ||||||
|  |             instance_ptr_.reset(new object_type); | ||||||
|  |         } | ||||||
|  |         return instance_ptr_.get(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     static inline void DestroyInstance() | ||||||
|  |     { | ||||||
|  |         instance_ptr_.reset(); | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template <typename _Ty> | template <typename _Ty> | ||||||
| typename Singleton<_Ty>::ObjectCreator Singleton<_Ty>::creator_; | typename Singleton<_Ty>::InstanceCreator Singleton<_Ty>::creator_; | ||||||
|  | 
 | ||||||
|  | template <typename _Ty> | ||||||
|  | typename std::unique_ptr<_Ty> Singleton<_Ty>::instance_ptr_; | ||||||
| 
 | 
 | ||||||
| }  // namespace kiwano
 | }  // namespace kiwano
 | ||||||
|  |  | ||||||
|  | @ -102,11 +102,11 @@ public: | ||||||
|      */ |      */ | ||||||
|     bool ExtractResourceToFile(const Resource& res, const String& dest_file_name) const; |     bool ExtractResourceToFile(const Resource& res, const String& dest_file_name) const; | ||||||
| 
 | 
 | ||||||
|  |     ~FileSystem(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     FileSystem(); |     FileSystem(); | ||||||
| 
 | 
 | ||||||
|     ~FileSystem(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|     Vector<String>                       search_paths_; |     Vector<String>                       search_paths_; | ||||||
|     UnorderedMap<String, String>         file_lookup_dict_; |     UnorderedMap<String, String>         file_lookup_dict_; | ||||||
|  |  | ||||||
|  | @ -112,11 +112,11 @@ public: | ||||||
| 
 | 
 | ||||||
|     void HandleEvent(Event* evt) override; |     void HandleEvent(Event* evt) override; | ||||||
| 
 | 
 | ||||||
|  |     ~Input(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     Input(); |     Input(); | ||||||
| 
 | 
 | ||||||
|     ~Input(); |  | ||||||
| 
 |  | ||||||
|     void UpdateKey(KeyCode key, bool down); |     void UpdateKey(KeyCode key, bool down); | ||||||
| 
 | 
 | ||||||
|     void UpdateButton(MouseButton btn, bool down); |     void UpdateButton(MouseButton btn, bool down); | ||||||
|  |  | ||||||
|  | @ -74,11 +74,11 @@ public: | ||||||
|     /// @brief 헌왕뻠닸
 |     /// @brief 헌왕뻠닸
 | ||||||
|     void Clear(); |     void Clear(); | ||||||
| 
 | 
 | ||||||
|  |     virtual ~TextureCache(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     TextureCache(); |     TextureCache(); | ||||||
| 
 | 
 | ||||||
|     virtual ~TextureCache(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|     using TextureMap = UnorderedMap<size_t, TexturePtr>; |     using TextureMap = UnorderedMap<size_t, TexturePtr>; | ||||||
|     TextureMap texture_cache_; |     TextureMap texture_cache_; | ||||||
|  |  | ||||||
|  | @ -126,11 +126,11 @@ public: | ||||||
|     /// @note 此操作会重定向输出流到标准输出流
 |     /// @note 此操作会重定向输出流到标准输出流
 | ||||||
|     void ShowConsole(bool show); |     void ShowConsole(bool show); | ||||||
| 
 | 
 | ||||||
|  |     ~Logger(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     Logger(); |     Logger(); | ||||||
| 
 | 
 | ||||||
|     ~Logger(); |  | ||||||
| 
 |  | ||||||
|     void Prepare(Level level, StringStream& sstream); |     void Prepare(Level level, StringStream& sstream); | ||||||
| 
 | 
 | ||||||
|     void Output(Level level, StringStream& sstream); |     void Output(Level level, StringStream& sstream); | ||||||
|  |  | ||||||
|  | @ -88,11 +88,11 @@ public: | ||||||
|     /// @brief 清空所有资源
 |     /// @brief 清空所有资源
 | ||||||
|     void Clear(); |     void Clear(); | ||||||
| 
 | 
 | ||||||
|  |     virtual ~ResourceCache(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     ResourceCache(); |     ResourceCache(); | ||||||
| 
 | 
 | ||||||
|     virtual ~ResourceCache(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|     UnorderedMap<String, ObjectBasePtr> object_cache_; |     UnorderedMap<String, ObjectBasePtr> object_cache_; | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue