1 |
nikolas |
1.1 |
#include <iostream> |
2 |
|
|
#include "CmdLineParser.h" |
3 |
|
|
|
4 |
|
|
namespace FCUtils { |
5 |
|
|
|
6 |
|
|
void CmdLineParser::ParseCmdLine(int argc, char ** argv) { |
7 |
|
|
int i=1; |
8 |
|
|
string arg,name,val; |
9 |
|
|
while( i < argc ) { |
10 |
|
|
// check for options starting with - or + |
11 |
|
|
arg=argv[i++]; |
12 |
|
|
string::size_type p= arg.find_first_of("-",0,1); |
13 |
|
|
switch (p) { |
14 |
|
|
case 0: |
15 |
|
|
// If is an option add it to name and store the position to |
16 |
|
|
// save the val into |
17 |
|
|
name=arg.substr(1,arg.size()-1); |
18 |
|
|
// Let's start supposing is a boolean parameter |
19 |
|
|
args_[name]="true"; |
20 |
|
|
break; |
21 |
|
|
case string::npos : |
22 |
|
|
// Here no - or + found, assign it to the latest saved |
23 |
|
|
// parameter |
24 |
|
|
args_[name]=arg; |
25 |
|
|
break; |
26 |
|
|
default: |
27 |
|
|
// put here an error message ! |
28 |
|
|
break; |
29 |
|
|
} |
30 |
|
|
} |
31 |
|
|
} |
32 |
|
|
|
33 |
|
|
|
34 |
|
|
void CmdLineParser::MoveToOptions() { |
35 |
|
|
for (ArgMap::const_iterator i = args_.begin(); |
36 |
|
|
i != args_.end(); ++ i) { |
37 |
|
|
switch(optmode_) { |
38 |
|
|
case UPDATE: |
39 |
|
|
Options::Get()->UpdateOption(i->first, i->second); |
40 |
|
|
break; |
41 |
|
|
case DEFINE: |
42 |
|
|
Options::Get()->SetOption(i->first, i->second); |
43 |
|
|
break; |
44 |
|
|
default: |
45 |
|
|
break; |
46 |
|
|
} |
47 |
|
|
} |
48 |
|
|
|
49 |
|
|
} |
50 |
|
|
|
51 |
|
|
void CmdLineParser::Print() const { |
52 |
|
|
for (ArgMap::const_iterator i = args_.begin(); |
53 |
|
|
i != args_.end(); ++ i) { |
54 |
|
|
std::cout << " Arg : " << i->first |
55 |
|
|
<<", value: " <<i->second << std::endl; |
56 |
|
|
} |
57 |
|
|
} |
58 |
|
|
|
59 |
|
|
}; // namespace FCUtils |