21 #ifndef _cvc3__command_line_flags_h_
22 #define _cvc3__command_line_flags_h_
62 std::vector<std::pair<std::string,bool> >*
sv;
82 d_data.s =
new std::string(s);
87 d_data.s =
new std::string((
char*)s);
90 CLFlag(
const std::vector<std::pair<std::string,bool> >&
sv,
91 const std::string& help,
bool display =
true)
93 d_data.sv =
new std::vector<std::pair<std::string,bool> >(
sv);
99 : d_tp(f.d_tp), d_modified(f.d_modified), d_help(f.d_help), d_display(f.d_display) {
104 d_data.sv =
new std::vector<std::pair<std::string,bool> >(*f.
d_data.
sv);
break;
118 if(
this == &f)
return *
this;
135 d_data.sv=
new std::vector<std::pair<std::string,bool> >(*f.
d_data.
sv);
221 "CLFlag::getString: not a string flag");
225 const std::vector<std::pair<std::string,bool> >&
getStrVec()
const {
227 "CLFlag::getStrVec: not a string vector flag");
248 typedef std::map<std::string, CLFlag>
CharMap;
257 "getFlag0("+name+
"): there are no flags with this name");
258 return (*d_map.find(name)).second;
268 size_t res(0), len(name.size());
269 for(CharMap::const_iterator i=d_map.begin(), iend=d_map.end();
271 if(std::strncmp(name.c_str(), (*i).first.c_str(), len) == 0) res++;
277 std::vector<std::string>& names)
const {
278 size_t res(0), len(name.size());
279 for(CharMap::const_iterator i=d_map.begin(), iend=d_map.end();
281 if(std::strncmp(name.c_str(), (*i).first.c_str(), len) == 0) {
282 names.push_back((*i).first);
292 "getFlag("+name+
"): there are no flags with this name");
293 return (*d_map.find(name)).second;
305 "setFlag("+name+
"): flag type doesn't match");
312 void setFlag(
const std::string& name,
const std::string& s)
314 void setFlag(
const std::string& name,
const char* s)
316 void setFlag(
const std::string& name,
const std::pair<std::string,bool>& p)
319 const std::vector<std::pair<std::string,bool> >& sv)
std::vector< std::pair< std::string, bool > > * sv
Description: Collection of debugging macros and functions.
const std::vector< std::pair< std::string, bool > > & getStrVec() const
CLFlag(const CLFlag &f)
Copy constructor.
CLFlag(int i, const std::string &help, bool display=true)
Constructor for an integer flag.
bool display() const
Return true if flag should be displayed in regular help.
void setFlag(const std::string &name, const CLFlag &f)
void setFlag(const std::string &name, const std::pair< std::string, bool > &p)
const CLFlag & getFlag(const std::string &name) const
CLFlag(const char *s, const std::string &help, bool display=true)
Constructor for a string flag from char*.
bool d_display
Whether to display this flag when user invokes cvc3 -h.
size_t countFlags(const std::string &name, std::vector< std::string > &names) const
void setFlag(const std::string &name, int i)
CLFlagType
Different types of command line flags.
#define DebugAssert(cond, str)
CLFlag & operator=(const CLFlag &f)
Assignment from another flag.
CLFlag & operator=(bool b)
Assignment of a boolean value.
void addFlag(const std::string &name, const CLFlag &f)
const CLFlag & operator[](const std::string &name) const
bool d_modified
This tag is set to true when the flag is assigned a new value.
CLFlag & operator=(const char *s)
Assignment of an string value from char*.
CLFlagType d_tp
Type of the argument.
CLFlag & getFlag0(const std::string &name)
void setFlag(const std::string &name, bool b)
CLFlag & operator=(const std::string &s)
Assignment of a string value.
void setFlag(const std::string &name, const std::string &s)
CLFlag()
Default constructor.
std::string d_help
Help string.
const std::string & getHelp() const
union CVC3::CLFlag::@0 d_data
The argument.
bool modified() const
Return true if the flag was modified from the default value (e.g. set on the command line) ...
CLFlag & operator=(const std::vector< std::pair< std::string, bool > > &sv)
Assignment of a vector value.
const std::string & getString() const
CLFlag(bool b, const std::string &help, bool display=true)
Constructor for a boolean flag.
const int & getInt() const
CLFlag(const std::vector< std::pair< std::string, bool > > &sv, const std::string &help, bool display=true)
Constructor for a vector flag.
const bool & getBool() const
std::map< std::string, CLFlag > CharMap
CLFlag(const std::string &s, const std::string &help, bool display=true)
Constructor for a string flag.
void setFlag(const std::string &name, const std::vector< std::pair< std::string, bool > > &sv)
size_t countFlags(const std::string &name) const
void setFlag(const std::string &name, const char *s)
CLFlag & operator=(int i)
Assignment of an integer value.
CLFlagType getType() const
Return the type of the flag.
CLFlag & operator=(const std::pair< std::string, bool > &p)
Assignment of a string value with a boolean tag to a vector flag.