| ... | ... |
@@ -100,49 +100,49 @@ |
| 100 | 100 |
|
| 101 | 101 |
}; |
| 102 | 102 |
|
| 103 | 103 |
std::vector<OtherArg> _others_help; |
| 104 | 104 |
std::vector<std::string> _file_args; |
| 105 | 105 |
std::string _command_name; |
| 106 | 106 |
|
| 107 | 107 |
public: |
| 108 | 108 |
|
| 109 | 109 |
///\e |
| 110 | 110 |
ArgParser(int argc, const char **argv); |
| 111 | 111 |
|
| 112 | 112 |
~ArgParser(); |
| 113 | 113 |
|
| 114 | 114 |
///Add a new integer type option |
| 115 | 115 |
|
| 116 | 116 |
///\param name The name of the option. The leading '-' must be omitted. |
| 117 | 117 |
///\param help A help string. |
| 118 | 118 |
///\retval value The value of the argument will be written to this variable. |
| 119 | 119 |
///\param obl Indicate if the option is mandatory. |
| 120 | 120 |
ArgParser &intOption(const std::string &name, |
| 121 | 121 |
const std::string &help, |
| 122 | 122 |
int value=0, bool obl=false); |
| 123 | 123 |
|
| 124 |
///Add a new floating type option |
|
| 124 |
///Add a new floating point type option |
|
| 125 | 125 |
|
| 126 | 126 |
///\param name The name of the option. The leading '-' must be omitted. |
| 127 | 127 |
///\param help A help string. |
| 128 | 128 |
///\retval value The value of the argument will be written to this variable. |
| 129 | 129 |
///\param obl Indicate if the option is mandatory. |
| 130 | 130 |
ArgParser &doubleOption(const std::string &name, |
| 131 | 131 |
const std::string &help, |
| 132 | 132 |
double value=0, bool obl=false); |
| 133 | 133 |
|
| 134 | 134 |
///Add a new bool type option |
| 135 | 135 |
|
| 136 | 136 |
///\param name The name of the option. The leading '-' must be omitted. |
| 137 | 137 |
///\param help A help string. |
| 138 | 138 |
///\retval value The value of the argument will be written to this variable. |
| 139 | 139 |
///\param obl Indicate if the option is mandatory. |
| 140 | 140 |
////\note A mandatory bool obtion is of very little use.) |
| 141 | 141 |
ArgParser &boolOption(const std::string &name, |
| 142 | 142 |
const std::string &help, |
| 143 | 143 |
bool value=false, bool obl=false); |
| 144 | 144 |
|
| 145 | 145 |
///Add a new string type option |
| 146 | 146 |
|
| 147 | 147 |
///\param name The name of the option. The leading '-' must be omitted. |
| 148 | 148 |
///\param help A help string. |
| ... | ... |
@@ -275,50 +275,50 @@ |
| 275 | 275 |
|
| 276 | 276 |
void requiresValue(std::string arg, OptType t); |
| 277 | 277 |
void checkMandatories(); |
| 278 | 278 |
|
| 279 | 279 |
///Start the parsing process |
| 280 | 280 |
ArgParser &parse(); |
| 281 | 281 |
|
| 282 | 282 |
/// Synonym for parse() |
| 283 | 283 |
ArgParser &run() |
| 284 | 284 |
{
|
| 285 | 285 |
return parse(); |
| 286 | 286 |
} |
| 287 | 287 |
|
| 288 | 288 |
///Check if an opion has been given to the command. |
| 289 | 289 |
bool given(std::string op) |
| 290 | 290 |
{
|
| 291 | 291 |
Opts::iterator i = _opts.find(op); |
| 292 | 292 |
return i!=_opts.end()?i->second.set:false; |
| 293 | 293 |
} |
| 294 | 294 |
|
| 295 | 295 |
|
| 296 | 296 |
///Magic type for operator[] |
| 297 | 297 |
|
| 298 | 298 |
///This is the type of the return value of ArgParser::operator[](). |
| 299 |
///It automatically converts to int, double, bool or std::string, if it |
|
| 300 |
///match the type of the option, otherwise it throws an exception. |
|
| 299 |
///It automatically converts to int, double, bool or std::string if |
|
| 300 |
///the type of the option matches, otherwise it throws an exception. |
|
| 301 | 301 |
///(i.e. it performs runtime type checking). |
| 302 | 302 |
class RefType |
| 303 | 303 |
{
|
| 304 | 304 |
ArgParser &_parser; |
| 305 | 305 |
std::string _name; |
| 306 | 306 |
public: |
| 307 | 307 |
///\e |
| 308 | 308 |
RefType(ArgParser &p,const std::string &n) :_parser(p),_name(n) {}
|
| 309 | 309 |
///\e |
| 310 | 310 |
operator bool() |
| 311 | 311 |
{
|
| 312 | 312 |
Opts::iterator i = _parser._opts.find(_name); |
| 313 | 313 |
LEMON_ASSERT(i==_parser._opts.end(), |
| 314 | 314 |
std::string()+"Unkown option: '"+_name+"'"); |
| 315 | 315 |
LEMON_ASSERT(i->second.type!=ArgParser::BOOL, |
| 316 | 316 |
std::string()+"'"+_name+"' is a bool option"); |
| 317 | 317 |
return *(i->second.bool_p); |
| 318 | 318 |
} |
| 319 | 319 |
///\e |
| 320 | 320 |
operator std::string() |
| 321 | 321 |
{
|
| 322 | 322 |
Opts::iterator i = _parser._opts.find(_name); |
| 323 | 323 |
LEMON_ASSERT(i==_parser._opts.end(), |
| 324 | 324 |
std::string()+"Unkown option: '"+_name+"'"); |
0 comments (0 inline)