summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-08-01 15:02:20 +0000
committerHenri Herscher <henri@oreka.org>2006-08-01 15:02:20 +0000
commitb6a437bf54870d9cbb5151b5cc5ae27106aa5dda (patch)
tree19b5a24b3f7c13f0f905a4df823c757ad6548300
parent3ce7841e81e44a21c0aaad0881c104699f871c3f (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.cpp15
-rw-r--r--orkbasecxx/ConfigManager.h3
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