gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Doc improvements related to ArgParser
0 2 0
default
2 files changed with 80 insertions and 47 deletions:
↑ Collapse diff ↑
Show white space 6 line context
... ...
@@ -31,35 +31,54 @@
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";
... ...
@@ -67,3 +86,3 @@
67 86
  if(ap.given("grc")) std::cout << "  -grc is given\n";
68
                                     
87
  
69 88
  switch(ap.files().size()) {
... ...
@@ -82,2 +101,3 @@
82 101
  
102
  return 0;
83 103
}
Ignore white space 6 line context
... ...
@@ -120,3 +120,3 @@
120 120

	
121
    ///\e
121
    ///Constructor
122 122
    ArgParser(int argc, const char **argv);
... ...
@@ -125,4 +125,10 @@
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.
... ...
@@ -137,2 +143,3 @@
137 143

	
144
    ///Add a new floating point type option.
138 145
    ///\param name The name of the option. The leading '-' must be omitted.
... ...
@@ -147,2 +154,3 @@
147 154

	
155
    ///Add a new bool type option.
148 156
    ///\param name The name of the option. The leading '-' must be omitted.
... ...
@@ -158,2 +166,3 @@
158 166

	
167
    ///Add a new string type option.
159 168
    ///\param name The name of the option. The leading '-' must be omitted.
... ...
@@ -166,3 +175,13 @@
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
... ...
@@ -174,2 +193,3 @@
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.
... ...
@@ -184,2 +204,3 @@
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.
... ...
@@ -194,2 +215,3 @@
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.
... ...
@@ -205,2 +227,3 @@
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.
... ...
@@ -220,3 +243,3 @@
220 243

	
221
    ///Boundle some options into a group
244
    ///Bundle some options into a group
222 245

	
... ...
@@ -232,3 +255,3 @@
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);
... ...
@@ -250,19 +273,2 @@
250 273

	
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, while
255
    ///\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 arguments
262
    ///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

	
268 274
    void show(std::ostream &os,Opts::iterator i);
... ...
@@ -288,2 +294,5 @@
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.
... ...
@@ -362,2 +371,8 @@
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
 
... ...
@@ -366,4 +381,2 @@
366 381

	
367
    
368

	
369
#endif // LEMON_MAIN_PARAMS
382
#endif // LEMON_ARG_PARSER
0 comments (0 inline)