diff options
author | Henri Herscher <henri@oreka.org> | 2006-08-01 15:02:20 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-08-01 15:02:20 +0000 |
commit | b6a437bf54870d9cbb5151b5cc5ae27106aa5dda (patch) | |
tree | 19b5a24b3f7c13f0f905a4df823c757ad6548300 | |
parent | 3ce7841e81e44a21c0aaad0881c104699f871c3f (diff) |
Applying changeset 306 from 0.5 to trunk:
A reference to the Xerces parser is now held by ConfigManager so that we don't forget to free it if we ever want to reload the config file dynamically.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@325 09dcff7a-b715-0410-9601-b79a96267cd0
-rw-r--r-- | orkbasecxx/ConfigManager.cpp | 15 | ||||
-rw-r--r-- | orkbasecxx/ConfigManager.h | 3 |
2 files changed, 15 insertions, 3 deletions
diff --git a/orkbasecxx/ConfigManager.cpp b/orkbasecxx/ConfigManager.cpp index e92312e..50bc39f 100644 --- a/orkbasecxx/ConfigManager.cpp +++ b/orkbasecxx/ConfigManager.cpp @@ -53,10 +53,19 @@ void ConfigManager::Initialize() } XMLPlatformUtils::Initialize(); - XercesDOMParser *parser = new XercesDOMParser; - parser->parse(cfgFilename); + + // By default, the DOM document generated by the parser will be free() by the parser. + // If we ever need to free the parser and the document separately, we need to do this: + // DOMNode *doc = parser->getDocument(); + // ... + // parser->adoptDocument(); + // doc->release(); + // ... + // delete parser; + XercesDOMParser *m_parser = new XercesDOMParser; + m_parser->parse(cfgFilename); DOMNode *doc = NULL; - doc = parser->getDocument(); + doc = m_parser->getDocument(); if (doc) { diff --git a/orkbasecxx/ConfigManager.h b/orkbasecxx/ConfigManager.h index 47efcae..a899b05 100644 --- a/orkbasecxx/ConfigManager.h +++ b/orkbasecxx/ConfigManager.h @@ -15,6 +15,8 @@ #define __CONFIGMANAGER_H__ #include <list> +#include <xercesc/parsers/XercesDOMParser.hpp> +#include "ace/Singleton.h" #include "Config.h" #include "AudioCapturePlugin.h" @@ -32,6 +34,7 @@ private: static ConfigManager m_singleton; std::list<ConfigureFunction> m_configureFunctions; DOMNode* m_configTopNode; + XercesDOMParser *m_parser; }; #define CONFIG ConfigManager::Instance()->m_config |