+ add new class ParameterSerializer to load and save parameter files
This commit is contained in:
@@ -957,6 +957,34 @@ void ParameterGrp::NotifyAll()
|
||||
Notify(It5->first.c_str());
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
//**************************************************************************
|
||||
// ParameterSerializer
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
ParameterSerializer::ParameterSerializer(const std::string& fn)
|
||||
: filename(fn)
|
||||
{
|
||||
}
|
||||
|
||||
ParameterSerializer::~ParameterSerializer()
|
||||
{
|
||||
}
|
||||
|
||||
void ParameterSerializer::SaveDocument(const ParameterManager& mgr)
|
||||
{
|
||||
mgr.SaveDocument(filename.c_str());
|
||||
}
|
||||
|
||||
int ParameterSerializer::LoadDocument(ParameterManager& mgr)
|
||||
{
|
||||
return mgr.LoadDocument(filename.c_str());
|
||||
}
|
||||
|
||||
bool ParameterSerializer::LoadOrCreateDocument(ParameterManager& mgr)
|
||||
{
|
||||
return mgr.LoadOrCreateDocument(filename.c_str());
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
//**************************************************************************
|
||||
// ParameterManager
|
||||
@@ -970,7 +998,7 @@ static XercesDOMParser::ValSchemes gValScheme = XercesDOMParser::Val_Au
|
||||
/** Default construction
|
||||
*/
|
||||
ParameterManager::ParameterManager()
|
||||
: ParameterGrp(), _pDocument(0)
|
||||
: ParameterGrp(), _pDocument(0), paramSerializer(0)
|
||||
{
|
||||
// initialize the XML system
|
||||
Init();
|
||||
@@ -1036,6 +1064,7 @@ ParameterManager::ParameterManager()
|
||||
ParameterManager::~ParameterManager()
|
||||
{
|
||||
delete _pDocument;
|
||||
delete paramSerializer;
|
||||
}
|
||||
|
||||
void ParameterManager::Init(void)
|
||||
@@ -1069,6 +1098,43 @@ void ParameterManager::Terminate(void)
|
||||
XMLPlatformUtils::Terminate();
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// Serializer handling
|
||||
|
||||
void ParameterManager::SetSerializer(ParameterSerializer* ps)
|
||||
{
|
||||
if (paramSerializer != ps)
|
||||
delete paramSerializer;
|
||||
paramSerializer = ps;
|
||||
}
|
||||
|
||||
bool ParameterManager::HasSerializer() const
|
||||
{
|
||||
return (paramSerializer != 0);
|
||||
}
|
||||
|
||||
int ParameterManager::LoadDocument()
|
||||
{
|
||||
if (paramSerializer)
|
||||
return paramSerializer->LoadDocument(*this);
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool ParameterManager::LoadOrCreateDocument()
|
||||
{
|
||||
if (paramSerializer)
|
||||
return paramSerializer->LoadOrCreateDocument(*this);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
void ParameterManager::SaveDocument() const
|
||||
{
|
||||
if (paramSerializer)
|
||||
paramSerializer->SaveDocument(*this);
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// Document handling
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
#ifndef BASE__PARAMETER_H
|
||||
#define BASE__PARAMETER_H
|
||||
|
||||
|
||||
// (re-)defined in pyconfig.h
|
||||
#if defined (_POSIX_C_SOURCE)
|
||||
# undef _POSIX_C_SOURCE
|
||||
@@ -264,13 +264,33 @@ protected:
|
||||
|
||||
};
|
||||
|
||||
/** The parameter serializer class
|
||||
* This is a helper class to serialize a parameter XML document.
|
||||
* Does loading and saving the DOM document from and to files.
|
||||
* In sub-classes the load and saving of XML documents can be
|
||||
* customized.
|
||||
* @see ParameterManager
|
||||
*/
|
||||
class BaseExport ParameterSerializer
|
||||
{
|
||||
public:
|
||||
ParameterSerializer(const std::string& fn);
|
||||
virtual ~ParameterSerializer();
|
||||
|
||||
virtual void SaveDocument(const ParameterManager&);
|
||||
virtual int LoadDocument(ParameterManager&);
|
||||
virtual bool LoadOrCreateDocument(ParameterManager&);
|
||||
|
||||
protected:
|
||||
std::string filename;
|
||||
};
|
||||
|
||||
/** The parameter manager class
|
||||
* This class manages a parameter XML document.
|
||||
* Does loding, saving and handling the DOM document.
|
||||
* Does loading, saving and handling the DOM document.
|
||||
* @see ParameterGrp
|
||||
*/
|
||||
class BaseExport ParameterManager : public ParameterGrp
|
||||
class BaseExport ParameterManager : public ParameterGrp
|
||||
{
|
||||
public:
|
||||
ParameterManager();
|
||||
@@ -286,9 +306,24 @@ public:
|
||||
void CreateDocument(void);
|
||||
void CheckDocument() const;
|
||||
|
||||
/** @name Parameter serialization */
|
||||
//@{
|
||||
/// Sets a serializer. The ParameterManager takes ownership of the serializer.
|
||||
void SetSerializer(ParameterSerializer*);
|
||||
/// Returns true if a serializer is set, otherwise false is returned.
|
||||
bool HasSerializer() const;
|
||||
/// Loads an XML document by calling the serializer's load method.
|
||||
int LoadDocument();
|
||||
/// Loads or creates an XML document by calling the serializer's load method.
|
||||
bool LoadOrCreateDocument();
|
||||
/// Saves an XML document by calling the serializer's save method.
|
||||
void SaveDocument() const;
|
||||
//@}
|
||||
|
||||
private:
|
||||
|
||||
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *_pDocument;
|
||||
ParameterSerializer * paramSerializer;
|
||||
|
||||
bool gDoNamespaces ;
|
||||
bool gDoSchema ;
|
||||
|
||||
Reference in New Issue
Block a user