123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- //
- // C++ Implementation: wrappedoption_imp
- //
- // Description:
- //
- //
- // Author: Frank Michler,,, <frank@pc13365>, (C) 2010
- //
- // Copyright: See COPYING file that comes with this distribution
- //
- //
- #include "sys.hpp" // for libcwd
- #include "debug.hpp" // for libcwd
- #include <vector>
- #include <utility> // pair
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <stdexcept>
- #include <fstream>
- #include "wrappedoption_imp.hpp"
- #include "wrappedoption.hpp"
- #include "anyoptionwrapper-inl.hpp"
- using namespace std;
- floatWrappedOption::floatWrappedOption(const char* _OptionName, char _ShortCut, float *_Value, const float _Default, bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value)
- {
- *Value = _Default;
- }
- // void floatWrappedOption::setOption(AnyOption *opt)
- // {
- // opt->setOption(OptionName.c_str(), ShortCut);
- // }
- void floatWrappedOption::getOption(AnyOption *opt)
- {
- char* ValString = opt->getValue(OptionName.c_str());
- if (ValString != 0) {
- *Value = atof(ValString);
- Dout(dc::anyopt, "Set " << OptionName << " =" << *Value);
- }
- }
- void floatWrappedOption::Save(fstream &fw)
- {
- fw << OptionName << " : " << *Value << "\n";
- }
- ////////////////////////////
- floatVectWrappedOption::floatVectWrappedOption(const char* _OptionName,
- char _ShortCut,
- vector<float> *_Value,
- const vector<float> _Default,
- int _MinNumVals,
- bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value), MinNumVals(_MinNumVals)
- {
- *Value = _Default;
- }
- void floatVectWrappedOption::getOption(AnyOption *opt)
- {
- char* ValStr = opt->getValue(OptionName.c_str());
- if (ValStr != 0) {
- string ValString = string(ValStr);
- Dout(dc::anyopt, "ValString=" << ValString);
- vector<float> TmpVal;
- convStrToNumVect(ValString, " ,", &TmpVal);
- if (TmpVal.size()>=MinNumVals) {
- *Value=TmpVal;
- } else {
- Dout(dc::anyopt, "Number of values too low. Value not changed. Minimum=" << MinNumVals);
- }
- Dout(dc::anyopt, "Set " << OptionName << " =");
- for (vector<float>::iterator it=Value->begin();it!=Value->end();++it) {
- Dout(dc::anyopt, (*it) << " ");
- }
- }
- }
- void floatVectWrappedOption::Save(fstream &fw)
- {
- fw << OptionName << " : ";
- for (vector<float>::iterator it=Value->begin();it!=Value->end();++it) {
- fw << (*it) << " ";
- }
- fw << "\n";
- }
- ////////////////////////////
- intVectWrappedOption::intVectWrappedOption(const char* _OptionName, char _ShortCut, vector<int> *_Value, const vector<int> _Default, int _MinNumVals, bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value), MinNumVals(_MinNumVals)
- {
- *Value = _Default;
- }
- void intVectWrappedOption::getOption(AnyOption *opt)
- {
- char* ValStr = opt->getValue(OptionName.c_str());
- if (ValStr != 0) {
- string ValString = string(ValStr);
- vector<int> TmpVal;
- convStrToNumVect(ValString, " ,", &TmpVal);
- if (TmpVal.size()>=MinNumVals) {
- *Value = TmpVal;
- } else {
- Dout(dc::anyopt,
- "Number of values too low. Value not changed. Minimum="
- << MinNumVals);
- }
- Dout(dc::anyopt, "Set " << OptionName << " =");
- for (vector<int>::iterator it=Value->begin();
- it!=Value->end();
- ++it)
- {
- Dout(dc::anyopt, (*it) << " ");
- }
- }
- }
- void intVectWrappedOption::Save(fstream &fw)
- {
- fw << OptionName << " : ";
- for (vector<int>::iterator it=Value->begin();it!=Value->end();++it) {
- fw << (*it) << " ";
- }
- fw << "\n";
- }
- ///////////////////////////
- intWrappedOption::intWrappedOption(const char* _OptionName, char _ShortCut, int *_Value, const int _Default, bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value)
- {
- *Value = _Default;
- }
- void intWrappedOption::getOption(AnyOption *opt)
- {
- char* ValString = opt->getValue(OptionName.c_str());
- if (ValString != 0) {
- *Value = atoi(ValString);
- Dout(dc::anyopt, "Set " << OptionName << " =" << *Value);
- }
- }
- void intWrappedOption::Save(fstream &fw)
- {
- fw << OptionName << " : " << *Value << "\n";
- }
- ////////////////////////////
- stringWrappedOption::stringWrappedOption(const char* _OptionName, char _ShortCut, string *_Value, const char* _Default, bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value)
- {
- *Value = _Default;
- }
- void stringWrappedOption::getOption(AnyOption *opt)
- {
- char* ValString = opt->getValue(OptionName.c_str());
- if (ValString != 0) {
- *Value = ValString;
- Dout(dc::anyopt, "Set " << OptionName << " =" << *Value);
- }
- }
- void stringWrappedOption::Save(fstream &fw)
- {
- fw << OptionName << " : " << *Value << "\n";
- }
- /////////////////////////
- flagWrappedOption::flagWrappedOption(const char* _OptionName, char _ShortCut, bool *_Value, const bool _Default, bool _CmdLineOnly)
- : WrappedOption(_OptionName, _ShortCut, _CmdLineOnly), Value(_Value)
- {
- *Value = _Default;
- NoOptionName="No"+OptionName;
- }
- void flagWrappedOption::setOption(AnyOption *opt)
- {
- opt->setFlag(OptionName.c_str(), toupper(ShortCut));
- opt->setFlag(NoOptionName.c_str(), tolower(ShortCut));
- }
- void flagWrappedOption::getOption(AnyOption *opt)
- {
- if (*Value) {
- if (opt->getFlag(NoOptionName.c_str())) *Value=false;
- } else {
- if (opt->getFlag(OptionName.c_str())) *Value=true;
- }
- Dout(dc::anyopt, "Set " << OptionName << " =" << *Value);
- }
- void flagWrappedOption::Save(fstream &fw)
- {
- if (*Value) fw << OptionName << "\n";
- else fw << NoOptionName << "\n";
- }
|