+ add new class ParameterSerializer to load and save parameter files

This commit is contained in:
wmayer
2016-04-29 17:43:07 +02:00
parent 1736901e92
commit 62ef3dd923
5 changed files with 151 additions and 26 deletions

View File

@@ -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