File: ArgParser.h

package info (click to toggle)
vecgeom 1.2.8%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 24,016 kB
  • sloc: cpp: 88,803; ansic: 6,888; python: 1,035; sh: 582; sql: 538; makefile: 23
file content (55 lines) | stat: -rw-r--r-- 2,047 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <algorithm>
#include <iostream>

double getDoubleOpt(char **begin, char **end, const std::string &option, double defaultval)
{
  char **itr = std::find(begin, end, option);
  if (itr != end && ++itr != end) {
    double ret;
    sscanf(*itr, "%lf", &ret);
    return ret;
  }
  std::cout << "INFO: using default " << defaultval << " for option " << option << "\n";
  return defaultval;
}

double getIntOpt(char **begin, char **end, const std::string &option, int defaultval)
{
  char **itr = std::find(begin, end, option);
  if (itr != end && ++itr != end) {
    int ret;
    sscanf(*itr, "%d", &ret);
    return ret;
  }
  std::cout << "INFO: using default " << defaultval << " for option " << option << "\n";
  return defaultval;
}

bool getBoolOpt(char **begin, char **end, const std::string &option, bool defaultval)
{
  char **itr = std::find(begin, end, option);
  if (itr != end && ++itr != end) {
    bool ret =
        !((*(itr[0]) == 'n') || (*(itr[0]) == 'N') || (*(itr[0]) == 'f') || (*(itr[0]) == 'F') || (*(itr[0]) == '0'));
    return ret;
  }
  std::cout << "INFO: using default " << defaultval << " for option " << option << "\n";
  return defaultval;
}

std::string getStringOpt(char **begin, char **end, const std::string &option, const std::string &defaultval)
{
  char **itr = std::find(begin, end, option);
  if (itr != end && ++itr != end) {
    std::string ret(*itr);
    std::cout << " From getStringOpt: ret=<" << ret << ">\n";
    return ret;
  }
  std::cout << "INFO: using default " << defaultval << " for option " << option << "\n";
  return defaultval;
}

#define OPTION_INT(name, defaultval) int name            = getIntOpt(argv, argc + argv, "-" #name, defaultval)
#define OPTION_DOUBLE(name, defaultval) double name      = getDoubleOpt(argv, argc + argv, "-" #name, defaultval)
#define OPTION_BOOL(name, defaultval) bool name          = getBoolOpt(argv, argc + argv, "-" #name, defaultval)
#define OPTION_STRING(name, defaultval) std::string name = getStringOpt(argv, argc + argv, "-" #name, defaultval)