-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathcxx-example.cpp
More file actions
90 lines (74 loc) · 2.56 KB
/
Copy pathcxx-example.cpp
File metadata and controls
90 lines (74 loc) · 2.56 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#define CLIOPTS_ENABLE_CXX
#include "cliopts.h"
using namespace cliopts;
static IntOption An_Integer = IntOption("int")
.setDefault(0)
.abbrev('i')
.description("Signed integer value");
static UIntOption An_Unsigned = UIntOption("unsigned")
.setDefault(0)
.abbrev('u')
.description("Unsigned integer value");
static ULongLongOption A_LongLong = ULongLongOption("longlong-option")
.abbrev('U')
.description("Long long integer option!");
static StringOption A_String = StringOption("string")
.setDefault("")
.abbrev('s')
.description("String option");
static HexOption HexVal = HexOption("hex")
.setDefault(0)
.abbrev('h')
.description("Hex value");
static BoolOption A_Boolean = BoolOption("verbose")
.abbrev('v')
.setDefault(false)
.description("Boolean value");
static BoolOption Required = BoolOption("required")
.abbrev('R')
.mandatory().
description("Required Option");
static BoolOption ComplexOption = BoolOption("complicated-option")
.abbrev('X')
.description("This is a very very very long line. This option means "
"nothing, but still should demonstrate text wrapping abilities");
static ListOption MultiOption = ListOption("list-option")
.abbrev('D')
.description("Long list option...");
int main(int argc, char **argv)
{
Parser parser("Test App");
parser.addOption(An_Integer);
parser.addOption(An_Unsigned);
parser.addOption(A_LongLong);
parser.addOption(A_String);
parser.addOption(HexVal);
parser.addOption(A_Boolean);
parser.addOption(Required);
parser.addOption(ComplexOption);
parser.addOption(MultiOption);
parser.parse(argc, argv);
if (A_String.passed()) {
printf("Have string %s\n", A_String.result().c_str());
}
if (An_Integer.passed()) {
printf("Have integer %d\n", (int)An_Integer);
}
if (An_Unsigned) {
printf("Have unsigned: %u\n", (unsigned)An_Unsigned);
}
if (A_LongLong) {
printf("Have unsigned long long: %llu\n", (unsigned long long)A_LongLong);
}
if (HexVal) {
printf("Have hex: %x\n", (int)HexVal);
}
printf("Boolean value: %d\n", (bool)A_Boolean);
printf("Boolean value specified %d times\n", A_Boolean.numSpecified());
const std::vector<std::string>& kv = MultiOption.const_result();
printf("Multi Option:\n");
for (size_t ii = 0; ii < kv.size(); ii++) {
printf(" Multi: %s\n", kv[ii].c_str());
}
return 0;
}