Ticket #104: arg_parser_doc_1767a4db2b8c.patch
File arg_parser_doc_1767a4db2b8c.patch, 9.0 KB (added by , 16 years ago) |
---|
-
demo/arg_parser_demo.cc
# HG changeset patch # User Peter Kovacs <kpeter@inf.elte.hu> # Date 1215820053 -7200 # Node ID 1767a4db2b8cf3c2dec95c5d2a5f0500b6e2d17e # Parent a5ee729dc1e10eb45f0925d2956766671f1c3d63 Doc improvements related to ArgParser diff -r a5ee729dc1e1 -r 1767a4db2b8c demo/arg_parser_demo.cc
a b 29 29 using namespace lemon; 30 30 int main(int argc, const char **argv) 31 31 { 32 ArgParser ap(argc,argv); 32 // Initialize the argument parser 33 ArgParser ap(argc, argv); 33 34 int i; 34 35 std::string s; 35 double d; 36 bool b,sil; 37 bool g1,g2,g3; 38 ap.refOption("n", "An integer input.", i, true) 39 .refOption("val", "A double input.", d) 40 .doubleOption("val2", "A double input.", d) 41 .synonym("vals","val") 42 .refOption("name", "A string input.", s) 43 .refOption("f", "A switch.", b) 44 .refOption("nohelp", "", sil) 45 .refOption("gra","Choice A",g1) 46 .refOption("grb","Choice B",g2) 47 .refOption("grc","Choice C",g3) 48 .optionGroup("gr","gra") 49 .optionGroup("gr","grb") 50 .optionGroup("gr","grc") 51 .mandatoryGroup("gr") 52 .onlyOneGroup("gr") 53 .other("infile","The input file.") 36 double d = 1.0; 37 bool b, nh; 38 bool g1, g2, g3; 39 40 // Add a mandatory integer option with storage reference 41 ap.refOption("n", "An integer input.", i, true); 42 // Add a double option with storage reference (the default value is 1.0) 43 ap.refOption("val", "A double input.", d); 44 // Add a double option without storage reference (the default value is 3.14) 45 ap.doubleOption("val2", "A double input.", 3.14); 46 // Set synonym for -val option 47 ap.synonym("vals", "val"); 48 // Add a string option 49 ap.refOption("name", "A string input.", s) 50 // Add bool options 51 ap.refOption("f", "A switch.", b) 52 .refOption("nohelp", "", nh) 53 .refOption("gra", "Choice A", g1) 54 .refOption("grb", "Choice B", g2) 55 .refOption("grc", "Choice C", g3); 56 // Bundle -gr* options into a group 57 ap.optionGroup("gr", "gra") 58 .optionGroup("gr", "grb") 59 .optionGroup("gr", "grc"); 60 // Set the group mandatory 61 ap.mandatoryGroup("gr"); 62 // Set the options of the group exclusive (only one option can be given) 63 ap.onlyOneGroup("gr"); 64 // Add non-parsed arguments (e.g. input files) 65 ap.other("infile", "The input file.") 54 66 .other("..."); 55 67 68 // Perform the parsing process 69 // (in case of any error it terminates the program) 56 70 ap.parse(); 57 71 72 // Check each option if it has been given and print its value 58 73 std::cout << "Parameters of '" << ap.commandName() << "':\n"; 59 74 60 if(ap.given("n"))std::cout << " Value of -n: " << i << std::endl;75 std::cout << " Value of -n: " << i << std::endl; 61 76 if(ap.given("val")) std::cout << " Value of -val: " << d << std::endl; 77 if(ap.given("val2")) { 78 d = ap["val2"]; 79 std::cout << " Value of -val2: " << d << std::endl; 80 } 62 81 if(ap.given("name")) std::cout << " Value of -name: " << s << std::endl; 63 82 if(ap.given("f")) std::cout << " -f is given\n"; 64 if(ap.given("nohelp")) std::cout << " Value of -nohelp: " << sil<< std::endl;83 if(ap.given("nohelp")) std::cout << " Value of -nohelp: " << nh << std::endl; 65 84 if(ap.given("gra")) std::cout << " -gra is given\n"; 66 85 if(ap.given("grb")) std::cout << " -grb is given\n"; 67 86 if(ap.given("grc")) std::cout << " -grc is given\n"; 68 87 69 88 switch(ap.files().size()) { 70 89 case 0: 71 90 std::cout << " No file argument was given.\n"; … … 79 98 } 80 99 for(unsigned int i=0;i<ap.files().size();++i) 81 100 std::cout << " '" << ap.files()[i] << "'\n"; 82 101 102 return 0; 83 103 } -
lemon/arg_parser.h
diff -r a5ee729dc1e1 -r 1767a4db2b8c lemon/arg_parser.h
a b 118 118 119 119 public: 120 120 121 /// \e121 ///Constructor 122 122 ArgParser(int argc, const char **argv); 123 123 124 124 ~ArgParser(); 125 125 126 ///\name Options 127 /// 128 129 ///@{ 130 126 131 ///Add a new integer type option 127 132 133 ///Add a new integer type option. 128 134 ///\param name The name of the option. The leading '-' must be omitted. 129 135 ///\param help A help string. 130 136 ///\param value A default value for the option. … … 135 141 136 142 ///Add a new floating point type option 137 143 144 ///Add a new floating point type option. 138 145 ///\param name The name of the option. The leading '-' must be omitted. 139 146 ///\param help A help string. 140 147 ///\param value A default value for the option. … … 145 152 146 153 ///Add a new bool type option 147 154 155 ///Add a new bool type option. 148 156 ///\param name The name of the option. The leading '-' must be omitted. 149 157 ///\param help A help string. 150 158 ///\param value A default value for the option. … … 156 164 157 165 ///Add a new string type option 158 166 167 ///Add a new string type option. 159 168 ///\param name The name of the option. The leading '-' must be omitted. 160 169 ///\param help A help string. 161 170 ///\param value A default value for the option. … … 164 173 const std::string &help, 165 174 std::string value="", bool obl=false); 166 175 167 ///\name Options with external storage 176 ///Give help string for non-parsed arguments. 177 178 ///With this function you can give help string for non-parsed arguments. 179 ///The parameter \c name will be printed in the short usage line, while 180 ///\c help gives a more detailed description. 181 ArgParser &other(const std::string &name, 182 const std::string &help=""); 183 184 ///@} 185 186 ///\name Options with External Storage 168 187 ///Using this functions, the value of the option will be directly written 169 188 ///into a variable once the option appears in the command line. 170 189 … … 172 191 173 192 ///Add a new integer type option with a storage reference 174 193 194 ///Add a new integer type option with a storage reference. 175 195 ///\param name The name of the option. The leading '-' must be omitted. 176 196 ///\param help A help string. 177 197 ///\param obl Indicate if the option is mandatory. … … 182 202 183 203 ///Add a new floating type option with a storage reference 184 204 205 ///Add a new floating type option with a storage reference. 185 206 ///\param name The name of the option. The leading '-' must be omitted. 186 207 ///\param help A help string. 187 208 ///\param obl Indicate if the option is mandatory. … … 192 213 193 214 ///Add a new bool type option with a storage reference 194 215 216 ///Add a new bool type option with a storage reference. 195 217 ///\param name The name of the option. The leading '-' must be omitted. 196 218 ///\param help A help string. 197 219 ///\param obl Indicate if the option is mandatory. … … 203 225 204 226 ///Add a new string type option with a storage reference 205 227 228 ///Add a new string type option with a storage reference. 206 229 ///\param name The name of the option. The leading '-' must be omitted. 207 230 ///\param help A help string. 208 231 ///\param obl Indicate if the option is mandatory. … … 218 241 219 242 ///@{ 220 243 221 ///B oundle some options into a group244 ///Bundle some options into a group 222 245 223 246 /// You can group some option by calling this function repeatedly for each 224 247 /// option to be grouped with the same groupname. … … 230 253 ///Make the members of a group exclusive 231 254 232 255 ///If you call this function for a group, than at most one of them can be 233 ///given at the same time 256 ///given at the same time. 234 257 ArgParser &onlyOneGroup(const std::string &group); 235 258 236 259 ///Make a group mandatory … … 247 270 const std::string &opt); 248 271 249 272 ///@} 250 251 ///Give help string for non-parsed arguments.252 253 ///With this function you can give help string for non-parsed arguments.254 ///The parameter \c name will be printed in the short usage line, while255 ///\c help gives a more detailed description.256 ArgParser &other(const std::string &name,257 const std::string &help="");258 259 ///Give back the non-option type arguments.260 261 ///Give back a reference to a vector consisting of the program arguments262 ///not starting with a '-' character.263 std::vector<std::string> &files() { return _file_args; }264 265 ///Give back the command name (the 0th argument)266 const std::string &commandName() { return _command_name; }267 273 268 274 void show(std::ostream &os,Opts::iterator i); 269 275 void show(std::ostream &os,Groups::iterator i); … … 286 292 return parse(); 287 293 } 288 294 295 ///Give back the command name (the 0th argument) 296 const std::string &commandName() { return _command_name; } 297 289 298 ///Check if an opion has been given to the command. 290 299 bool given(std::string op) 291 300 { … … 360 369 { 361 370 return RefType(*this, n); 362 371 } 372 373 ///Give back the non-option type arguments. 374 375 ///Give back a reference to a vector consisting of the program arguments 376 ///not starting with a '-' character. 377 std::vector<std::string> &files() { return _file_args; } 363 378 364 379 }; 365 380 } 366 381 367 368 369 #endif // LEMON_MAIN_PARAMS 382 #endif // LEMON_ARG_PARSER