54 return options[*i].values.front();
77 options[*i].values.push_back(value);
104 return options[*i].values.front();
111 const std::string &option)
const 123 for(std::size_t i=0; i<
options.size(); i++)
132 for(std::size_t i=0; i<
options.size(); i++)
133 if(
options[i].optstring==option)
143 while(optstring[0]!=0)
148 optstring[0] !=
':',
"cmdlinet::parse: Invalid option string\n");
150 if(optstring[0]==
'(')
157 for(optstring++; optstring[0]!=
')' && optstring[0]!=0; optstring++)
160 if(optstring[0]==
')')
173 if(optstring[0]==
':')
184 for(
int i=1; i<argc; i++)
187 args.push_back(argv[i]);
192 if(argv[i][1]!=0 && argv[i][2]==0)
194 else if(argv[i][1]==
'-')
202 if(!optnr.has_value())
206 if(!optnr.has_value())
216 if(argv[i][2]==0 ||
options[*optnr].islong)
221 if(argv[i][0]==
'-' && argv[i][1]!=0)
223 options[*optnr].values.push_back(argv[i]);
226 options[*optnr].values.push_back(argv[i]+2);
const std::list< std::string > & get_values(const std::string &option) const
std::string get_value(char option) const
virtual bool parse(int argc, const char **argv, const char *optstring)
virtual bool isset(char option) const
static std::list< std::string > immutable_empty_list
nonstd::optional< T > optionalt
virtual void set(const std::string &option)
optionalt< std::size_t > getoptnr(char option) const
#define DATA_INVARIANT(CONDITION, REASON)
std::vector< optiont > options