From aedf41694936511ec6d053483265c6a6938f2aac Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 7 Apr 2015 17:23:18 +0200 Subject: [PATCH] (Initializer) Added explicit (un)initialisation Former-commit-id: 198287ca1cc4e8a53531263a90bcffbcab1ef2b2 --- include/Nazara/Core/Initializer.hpp | 4 +++- include/Nazara/Core/Initializer.inl | 25 ++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/include/Nazara/Core/Initializer.hpp b/include/Nazara/Core/Initializer.hpp index 3737593df..64081f891 100644 --- a/include/Nazara/Core/Initializer.hpp +++ b/include/Nazara/Core/Initializer.hpp @@ -13,10 +13,12 @@ template class NzInitializer { public: - NzInitializer(); + NzInitializer(bool initialize = true); ~NzInitializer(); + bool Initialize(); bool IsInitialized() const; + void Uninitialize(); operator bool() const; diff --git a/include/Nazara/Core/Initializer.inl b/include/Nazara/Core/Initializer.inl index 732a12418..091831521 100644 --- a/include/Nazara/Core/Initializer.inl +++ b/include/Nazara/Core/Initializer.inl @@ -43,16 +43,24 @@ struct NzImplInitializer<> }; template -NzInitializer::NzInitializer() +NzInitializer::NzInitializer(bool initialize) : +m_initialized(false) { - m_initialized = NzImplInitializer::Init(); + if (initialize) + Initialize(); } template NzInitializer::~NzInitializer() { - if (m_initialized) - NzImplInitializer::Uninit(); + Uninitialize(); +} + +template +bool NzInitializer::Initialize() +{ + if (!m_initialized) + m_initialized = NzImplInitializer::Init(); } template @@ -61,10 +69,17 @@ bool NzInitializer::IsInitialized() const return m_initialized; } +template +void NzInitializer::Uninitialize() +{ + if (m_initialized) + NzImplInitializer::Uninit(); +} + template NzInitializer::operator bool() const { - return m_initialized; + return IsInitialized(); } #include