From 8b3f3b11f09ac90e108004e0a41062d9da1bdd0e Mon Sep 17 00:00:00 2001 From: BenDol Date: Wed, 2 Apr 2014 02:34:12 +1300 Subject: [PATCH] Can now unload a Config by config:unload() --- src/framework/core/config.cpp | 4 +++- src/framework/core/configmanager.cpp | 6 +++++- src/framework/core/configmanager.h | 2 ++ src/framework/luafunctions.cpp | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/framework/core/config.cpp b/src/framework/core/config.cpp index f4524b60..95bbeb08 100644 --- a/src/framework/core/config.cpp +++ b/src/framework/core/config.cpp @@ -22,6 +22,7 @@ #include "config.h" #include "resourcemanager.h" +#include "configmanager.h" #include @@ -54,6 +55,7 @@ bool Config::unload() if(isLoaded()) { m_confsDoc = nullptr; m_fileName = ""; + g_configs.remove(this); return true; } return false; @@ -148,7 +150,7 @@ OTMLNodePtr Config::getNode(const std::string& key) bool Config::isLoaded() { - return !m_fileName.empty(); + return !m_fileName.empty() && m_confsDoc; } std::string Config::getFileName() diff --git a/src/framework/core/configmanager.cpp b/src/framework/core/configmanager.cpp index b11fc382..12f0fa73 100644 --- a/src/framework/core/configmanager.cpp +++ b/src/framework/core/configmanager.cpp @@ -117,9 +117,13 @@ bool ConfigManager::unload(const std::string& file) ConfigPtr config = get(file); if(config) { config->unload(); - m_configs.remove(config); config = nullptr; return true; } return false; } + +void ConfigManager::remove(const ConfigPtr config) +{ + m_configs.remove(config); +} diff --git a/src/framework/core/configmanager.h b/src/framework/core/configmanager.h index fea43dac..772983e8 100644 --- a/src/framework/core/configmanager.h +++ b/src/framework/core/configmanager.h @@ -38,7 +38,9 @@ public: ConfigPtr create(const std::string& file); ConfigPtr loadSettings(const std::string file); ConfigPtr load(const std::string& file); + bool unload(const std::string& file); + void remove(const ConfigPtr config); protected: ConfigPtr m_settings; diff --git a/src/framework/luafunctions.cpp b/src/framework/luafunctions.cpp index 9f23f549..27433a89 100644 --- a/src/framework/luafunctions.cpp +++ b/src/framework/luafunctions.cpp @@ -194,6 +194,7 @@ void Application::registerLuaFunctions() // Config g_lua.registerClass(); g_lua.bindClassMemberFunction("save", &Config::save); + g_lua.bindClassMemberFunction("unload", &Config::unload); g_lua.bindClassMemberFunction("setValue", &Config::setValue); g_lua.bindClassMemberFunction("setList", &Config::setList); g_lua.bindClassMemberFunction("getValue", &Config::getValue);