(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
{
public:
NzInitializer();
NzInitializer(bool initialize = true);
~NzInitializer();
bool Initialize();
bool IsInitialized() const;
void Uninitialize();
operator bool() const;

View File

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