mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Hadrons: function to save an application as an XML file
This commit is contained in:
parent
3af663e17b
commit
34df71e755
@ -79,12 +79,17 @@ void Application::setPar(const Application::GlobalPar &par)
|
|||||||
env_.setSeed(strToVec<int>(par_.seed));
|
env_.setSeed(strToVec<int>(par_.seed));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Application::GlobalPar & Application::getPar(void)
|
||||||
|
{
|
||||||
|
return par_;
|
||||||
|
}
|
||||||
|
|
||||||
// execute /////////////////////////////////////////////////////////////////////
|
// execute /////////////////////////////////////////////////////////////////////
|
||||||
void Application::run(void)
|
void Application::run(void)
|
||||||
{
|
{
|
||||||
if (!parameterFileName_.empty())
|
if (!parameterFileName_.empty())
|
||||||
{
|
{
|
||||||
parseParameterFile();
|
parseParameterFile(parameterFileName_);
|
||||||
}
|
}
|
||||||
schedule();
|
schedule();
|
||||||
configLoop();
|
configLoop();
|
||||||
@ -99,13 +104,13 @@ public:
|
|||||||
std::string, type);
|
std::string, type);
|
||||||
};
|
};
|
||||||
|
|
||||||
void Application::parseParameterFile(void)
|
void Application::parseParameterFile(const std::string parameterFileName)
|
||||||
{
|
{
|
||||||
XmlReader reader(parameterFileName_);
|
XmlReader reader(parameterFileName);
|
||||||
GlobalPar par;
|
GlobalPar par;
|
||||||
ObjectId id;
|
ObjectId id;
|
||||||
|
|
||||||
LOG(Message) << "Reading '" << parameterFileName_ << "'..." << std::endl;
|
LOG(Message) << "Reading '" << parameterFileName << "'..." << std::endl;
|
||||||
read(reader, "parameters", par);
|
read(reader, "parameters", par);
|
||||||
setPar(par);
|
setPar(par);
|
||||||
push(reader, "modules");
|
push(reader, "modules");
|
||||||
@ -119,6 +124,28 @@ void Application::parseParameterFile(void)
|
|||||||
pop(reader);
|
pop(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::saveParameterFile(const std::string parameterFileName)
|
||||||
|
{
|
||||||
|
XmlWriter writer(parameterFileName);
|
||||||
|
ObjectId id;
|
||||||
|
const unsigned int nMod = env_.getNModule();
|
||||||
|
|
||||||
|
LOG(Message) << "Writing '" << parameterFileName << "'..." << std::endl;
|
||||||
|
write(writer, "parameters", getPar());
|
||||||
|
push(writer, "modules");
|
||||||
|
for (unsigned int i = 0; i < nMod; ++i)
|
||||||
|
{
|
||||||
|
push(writer, "module");
|
||||||
|
id.name = env_.getModuleName(i);
|
||||||
|
id.type = env_.getModule(i)->getRegisteredName();
|
||||||
|
write(writer, "id", id);
|
||||||
|
env_.getModule(i)->saveParameters(writer, "options");
|
||||||
|
pop(writer);
|
||||||
|
}
|
||||||
|
pop(writer);
|
||||||
|
pop(writer);
|
||||||
|
}
|
||||||
|
|
||||||
// schedule computation ////////////////////////////////////////////////////////
|
// schedule computation ////////////////////////////////////////////////////////
|
||||||
#define MEM_MSG(size)\
|
#define MEM_MSG(size)\
|
||||||
sizeString((size)*locVol_) << " (" << sizeString(size) << "/site)"
|
sizeString((size)*locVol_) << " (" << sizeString(size) << "/site)"
|
||||||
|
@ -77,7 +77,8 @@ public:
|
|||||||
// destructor
|
// destructor
|
||||||
virtual ~Application(void) = default;
|
virtual ~Application(void) = default;
|
||||||
// access
|
// access
|
||||||
void setPar(const GlobalPar &par);
|
void setPar(const GlobalPar &par);
|
||||||
|
const GlobalPar & getPar(void);
|
||||||
// module creation
|
// module creation
|
||||||
template <typename M>
|
template <typename M>
|
||||||
void createModule(const std::string name);
|
void createModule(const std::string name);
|
||||||
@ -85,8 +86,9 @@ public:
|
|||||||
void createModule(const std::string name, const typename M::Par &par);
|
void createModule(const std::string name, const typename M::Par &par);
|
||||||
// execute
|
// execute
|
||||||
void run(void);
|
void run(void);
|
||||||
// parse parameter file
|
// XML parameter file I/O
|
||||||
void parseParameterFile(void);
|
void parseParameterFile(const std::string parameterFileName);
|
||||||
|
void saveParameterFile(const std::string parameterFileName);
|
||||||
// schedule computation
|
// schedule computation
|
||||||
void schedule(void);
|
void schedule(void);
|
||||||
// loop on configurations
|
// loop on configurations
|
||||||
|
@ -190,6 +190,11 @@ void Environment::pushModule(Environment::ModPt &pt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int Environment::getNModule(void) const
|
||||||
|
{
|
||||||
|
return module_.size();
|
||||||
|
}
|
||||||
|
|
||||||
void Environment::createModule(const std::string name, const std::string type,
|
void Environment::createModule(const std::string name, const std::string type,
|
||||||
XmlReader &reader)
|
XmlReader &reader)
|
||||||
{
|
{
|
||||||
|
@ -117,6 +117,7 @@ public:
|
|||||||
void createModule(const std::string name,
|
void createModule(const std::string name,
|
||||||
const std::string type,
|
const std::string type,
|
||||||
XmlReader &reader);
|
XmlReader &reader);
|
||||||
|
unsigned int getNModule(void) const;
|
||||||
ModuleBase * getModule(const unsigned int address) const;
|
ModuleBase * getModule(const unsigned int address) const;
|
||||||
ModuleBase * getModule(const std::string name) const;
|
ModuleBase * getModule(const std::string name) const;
|
||||||
template <typename M>
|
template <typename M>
|
||||||
|
@ -107,6 +107,7 @@ public:
|
|||||||
virtual std::vector<std::string> getOutput(void) = 0;
|
virtual std::vector<std::string> getOutput(void) = 0;
|
||||||
// parse parameters
|
// parse parameters
|
||||||
virtual void parseParameters(XmlReader &reader, const std::string name) = 0;
|
virtual void parseParameters(XmlReader &reader, const std::string name) = 0;
|
||||||
|
virtual void saveParameters(XmlWriter &writer, const std::string name) = 0;
|
||||||
// setup
|
// setup
|
||||||
virtual void setup(void) {};
|
virtual void setup(void) {};
|
||||||
// execution
|
// execution
|
||||||
@ -130,6 +131,7 @@ public:
|
|||||||
virtual ~Module(void) = default;
|
virtual ~Module(void) = default;
|
||||||
// parse parameters
|
// parse parameters
|
||||||
virtual void parseParameters(XmlReader &reader, const std::string name);
|
virtual void parseParameters(XmlReader &reader, const std::string name);
|
||||||
|
virtual void saveParameters(XmlWriter &writer, const std::string name);
|
||||||
// parameter access
|
// parameter access
|
||||||
const P & par(void) const;
|
const P & par(void) const;
|
||||||
void setPar(const P &par);
|
void setPar(const P &par);
|
||||||
@ -150,6 +152,11 @@ public:
|
|||||||
virtual ~Module(void) = default;
|
virtual ~Module(void) = default;
|
||||||
// parse parameters (do nothing)
|
// parse parameters (do nothing)
|
||||||
virtual void parseParameters(XmlReader &reader, const std::string name) {};
|
virtual void parseParameters(XmlReader &reader, const std::string name) {};
|
||||||
|
virtual void saveParameters(XmlWriter &writer, const std::string name)
|
||||||
|
{
|
||||||
|
push(writer, "options");
|
||||||
|
pop(writer);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@ -166,6 +173,12 @@ void Module<P>::parseParameters(XmlReader &reader, const std::string name)
|
|||||||
read(reader, name, par_);
|
read(reader, name, par_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename P>
|
||||||
|
void Module<P>::saveParameters(XmlWriter &writer, const std::string name)
|
||||||
|
{
|
||||||
|
write(writer, name, par_);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename P>
|
template <typename P>
|
||||||
const P & Module<P>::par(void) const
|
const P & Module<P>::par(void) const
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user