Commit 025d4bf37b32e2295556e4498db82af4ff69f715

Authored by David Mayerich
1 parent 1cb3eb53

added documentation to arguments.h

Showing 3 changed files with 81 additions and 11 deletions   Show diff stats
.gitignore
1   -html/*
2   -latex/*
3 1 \ No newline at end of file
  2 +stim/html/*
  3 +stim/latex/*
4 4 \ No newline at end of file
... ...
.gitmodules deleted
1   -[submodule "stim"]
2   - path = stim
3   - url = https://github.com/dmayerich/stim.git
stim/parser/arguments.h
... ... @@ -237,6 +237,48 @@ namespace stim{
237 237 unsigned int index;
238 238 };
239 239  
  240 + /**The arglist class implements command line arguments.
  241 + Example:
  242 +
  243 + 1) Create an arglist instance:
  244 +
  245 + stim::arglist args;
  246 +
  247 + 2) Test to see if ANSI output is supported (arguments will use color if it is). Generally, Windows consoles don't support ANSI.
  248 +
  249 + #ifdef _WIN32
  250 + args.set_ansi(false);
  251 + #endif
  252 +
  253 + 3) Add arguments:
  254 +
  255 + args.add("help", "prints this help");
  256 + args.add("foo", "foo takes a single integer value", "", "[intval]");
  257 + args.add("bar", "bar takes two floating point values", "", "[value1], [value2]");
  258 +
  259 + 4) You generally want to immediately test for help and output available arguments:
  260 +
  261 + if(args["help"].is_set())
  262 + std::cout<<args.str();
  263 +
  264 + 5) Parse the command line:
  265 +
  266 + args.parse(argc, argv);
  267 +
  268 + 6) Retrieve values:
  269 +
  270 + int foo;
  271 + float bar1, bar2;
  272 + if(args["foo"])
  273 + foo = args["foo"].as_int();
  274 + if(args["bar"]){
  275 + bar1 = args["bar"].as_float(0);
  276 + bar2 = args["bar"].as_float(1);
  277 + }
  278 +
  279 +
  280 + **/
  281 +
240 282 class arglist
241 283 {
242 284 private:
... ... @@ -259,6 +301,9 @@ namespace stim{
259 301 ansi = true;
260 302 }
261 303  
  304 + ///Sets ANSI support (default is on), which allows colored values in the help output.
  305 +
  306 + /// @param b is a boolean value specifying ANSI support (true is on, false is off)
262 307 void set_ansi(bool b)
263 308 {
264 309 ansi = b;
... ... @@ -266,6 +311,12 @@ namespace stim{
266 311 opts[i].set_ansi(ansi);
267 312 }
268 313  
  314 + ///Add a supported command line argument.
  315 +
  316 + /// @param _name is the name of the command line argument (supplied as --name)
  317 + /// @param _desc is a text description of the argument
  318 + /// @param _default is the default value of the argument
  319 + /// @param _range is the supported range of values, list of values, etc. It will be displayed to the user.
269 320 void add(std::string _name, std::string _desc, std::string _default = "", std::string _range = "")
270 321 {
271 322 cmd_option opt(_name, _desc, _default, _range);
... ... @@ -275,6 +326,9 @@ namespace stim{
275 326 col_width = std::max<int>(col_width, opt.col_width());
276 327 }
277 328  
  329 + ///Specifies a section name that can be used to organize parameters in the output.
  330 +
  331 + /// @param _name is the name of the section, which will be displayed to the user
278 332 void section(std::string _name)
279 333 {
280 334 argsection s;
... ... @@ -283,7 +337,7 @@ namespace stim{
283 337 sections.push_back(s);
284 338 }
285 339  
286   - //output the options (generally in response to --help)
  340 + ///Outputs supported arguments. If ANSI support is available, they will be color-coded. Generally this is called in response to "--help"
287 341 std::string str()
288 342 {
289 343 std::stringstream ss;
... ... @@ -312,6 +366,9 @@ namespace stim{
312 366 return ss.str();
313 367 }
314 368  
  369 + ///Retrieves the index for a supported argument, given that argument's name.
  370 +
  371 + /// @param _name is the name of the requested argument
315 372 int index(std::string _name)
316 373 {
317 374 unsigned int i = find(opts.begin(), opts.end(), _name) - opts.begin();
... ... @@ -322,6 +379,10 @@ namespace stim{
322 379 return (int)i;
323 380 }
324 381  
  382 + ///Sets an argument to a specified value
  383 +
  384 + /// @param _name is the name of the argument to be set
  385 + /// @param _value is the value that it is given
325 386 void set(std::string _name, std::string _value)
326 387 {
327 388 int i = index(_name);
... ... @@ -336,7 +397,10 @@ namespace stim{
336 397 std::cout<<"ERROR - option not recognized: "<<_name<<std::endl;
337 398 }
338 399  
339   - //parse a parameter string
  400 + ///Parses the command line
  401 +
  402 + /// @param argc is the number of command line arguments (provided by the OS)
  403 + /// @param argv[] is the list of command line arguments (provided by the OS)
340 404 void parse(int argc, char* argv[])
341 405 {
342 406 //if the number of options is 1, we're done
... ... @@ -375,7 +439,9 @@ namespace stim{
375 439 set(name, params);
376 440 }
377 441  
378   - //determine if a parameter has been set (either specified by the user or with a default value)
  442 + ///Determines of a parameter has been set and returns true if it has
  443 +
  444 + /// @param _name is the name of the argument
379 445 bool operator()(std::string _name)
380 446 {
381 447 int i = find(opts.begin(), opts.end(), _name) - opts.begin();
... ... @@ -389,7 +455,9 @@ namespace stim{
389 455 return opts[i].is_set();
390 456 }
391 457  
392   - //number of arguments in a specified option
  458 + ///Returns the number of parameters for a specified argument
  459 +
  460 + /// @param _name is the name of the argument whose parameter number will be returned
393 461 unsigned int nargs(std::string _name)
394 462 {
395 463 int i = find(opts.begin(), opts.end(), _name) - opts.begin();
... ... @@ -403,16 +471,21 @@ namespace stim{
403 471 return opts[i].nargs();
404 472 }
405 473  
406   - //number of arguments for the executable
  474 + ///Returns the number of arguments that have been set
407 475 unsigned int nargs(){
408 476 return args.size();
409 477 }
410 478  
411   - //return the a'th executable argument
  479 + ///Returns the name of an argument, given its index
  480 +
  481 + /// @param a is the index of the requested argument
412 482 std::string arg(unsigned int a){
413 483 return args[a];
414 484 }
415 485  
  486 + ///Returns an object describing the argument
  487 +
  488 + /// @param _name is the name of the requested argument
416 489 cmd_option operator[](std::string _name)
417 490 {
418 491 int i = find(opts.begin(), opts.end(), _name) - opts.begin();
... ...