(Initializer) Added explicit (un)initialisation

Former-commit-id: 198287ca1cc4e8a53531263a90bcffbcab1ef2b2
This commit is contained in:
Lynix 2015-04-07 17:23:18 +02:00
parent a1280a6af3
commit aedf416949
2 changed files with 23 additions and 6 deletions

View File

@ -13,10 +13,12 @@ template<typename... Args>
class NzInitializer class NzInitializer
{ {
public: public:
NzInitializer(); NzInitializer(bool initialize = true);
~NzInitializer(); ~NzInitializer();
bool Initialize();
bool IsInitialized() const; bool IsInitialized() const;
void Uninitialize();
operator bool() const; operator bool() const;

View File

@ -43,16 +43,24 @@ struct NzImplInitializer<>
}; };
template<typename... Args> template<typename... Args>
NzInitializer<Args...>::NzInitializer() NzInitializer<Args...>::NzInitializer(bool initialize) :
m_initialized(false)
{ {
m_initialized = NzImplInitializer<Args...>::Init(); if (initialize)
Initialize();
} }
template<typename... Args> template<typename... Args>
NzInitializer<Args...>::~NzInitializer() NzInitializer<Args...>::~NzInitializer()
{ {
if (m_initialized) Uninitialize();
NzImplInitializer<Args...>::Uninit(); }
template<typename... Args>
bool NzInitializer<Args...>::Initialize()
{
if (!m_initialized)
m_initialized = NzImplInitializer<Args...>::Init();
} }
template<typename... Args> template<typename... Args>
@ -61,10 +69,17 @@ bool NzInitializer<Args...>::IsInitialized() const
return m_initialized; return m_initialized;
} }
template<typename... Args>
void NzInitializer<Args...>::Uninitialize()
{
if (m_initialized)
NzImplInitializer<Args...>::Uninit();
}
template<typename... Args> template<typename... Args>
NzInitializer<Args...>::operator bool() const NzInitializer<Args...>::operator bool() const
{ {
return m_initialized; return IsInitialized();
} }
#include <Nazara/Core/DebugOff.hpp> #include <Nazara/Core/DebugOff.hpp>