00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "paramreader.h"
00023 #include "paramstorer.h"
00024 #include <zeitgeist/logserver/logserver.h>
00025 #include <zeitgeist/scriptserver/scriptserver.h>
00026 #include <sstream>
00027
00028 using namespace zeitgeist;
00029 using namespace oxygen;
00030 using namespace boost;
00031 using namespace std;
00032
00033 ParamReader::ParamReader()
00034 : zeitgeist::Leaf(), spades::EngineParam()
00035 {
00036 addParamStorer(new oxygen::ParamStorer(this));
00037 }
00038
00039 int ParamReader::readCmdLineArgs(const std::string& key,
00040 int argc, const char* const* argv)
00041 {
00042
00043 if (argc < 2)
00044 {
00045 return spades::ParamReader::ParamStorer::RR_None;
00046 }
00047
00048
00049 if (! GetScript()->ExistsVariable(key))
00050 {
00051 GetLog()->Warning() << "WARNING: (ParamReader) Unknown variable '" << key << "'\n";
00052 return spades::ParamReader::ParamStorer::RR_FormatErr;
00053 }
00054
00055
00056 std::string value = * (argv + 1);
00057
00058
00059 stringstream ss;
00060 ss << key << "=" << value;
00061
00062 if (GetScript()->Eval(ss.str()))
00063 {
00064 GetLog()->Normal() << "(ParamReader) set '" << key
00065 << "' to " << value << "\n";
00066 }
00067
00068 return 1;
00069 }
00070
00071