poaflocParser Of Arguments For Lines Of Commands |
git clone git://git.dimitrijedobrota.com/poafloc.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
example.cpp (2386B)
0 #include <iostream>
2 #include <poafloc/poafloc.hpp>
4 class arguments
5 {
6 std::string m_priv = "default";
8 public:
9 // NOLINTBEGIN(*non-private*)
10 int val = 0;
11 double mul = 0;
12 std::string name = "default";
13 bool flag1 = false;
14 bool flag2 = false;
15 // NOLINTEND(*non-private*)
17 void set_priv(std::string_view value) { m_priv = value; }
19 friend std::ostream& operator<<(std::ostream& ost, const arguments& args)
20 {
21 return ost << args.val << ' ' << args.mul << ' ' << args.name << ' '
22 << args.m_priv << ' ' << args.flag1 << ' ' << args.flag2;
23 }
24 };
26 int main()
27 {
28 using namespace poafloc; // NOLINT
30 auto program = parser<arguments> {
31 positional {
32 argument {
33 "value",
34 &arguments::val,
35 },
36 argument_list {
37 "rest",
38 &arguments::val,
39 },
40 },
41 group {
42 "standard",
43 direct {
44 "m multiply",
45 &arguments::mul,
46 "NUM Multiplication constant",
47 },
48 list {
49 "n names",
50 &arguments::name,
51 "NAME Names of the variables",
52 },
53 },
54 group {
55 "test",
56 direct {
57 "p priv",
58 &arguments::set_priv,
59 "PRIV Private code",
60 },
61 boolean {
62 "flag1",
63 &arguments::flag1,
64 "Some flag1",
65 },
66 boolean {
67 "F flag2",
68 &arguments::flag2,
69 "Some flag2",
70 },
71 },
72 };
74 const std::vector<std::string_view> cmd_args {
75 "example",
76 "-m1.34",
77 "--name",
78 "Hello there!",
79 "-p",
80 "General Kenobi!",
81 "--flag1",
82 "-F",
83 "150",
84 "40",
85 "30",
86 };
88 arguments args;
90 {
91 try {
92 const std::vector<std::string_view> help {
93 "example",
94 "-?",
95 };
96 program(args, help);
97 } catch (const error<error_code::help>& err) {
98 (void)err;
99 }
100 }
102 {
103 try {
104 const std::vector<std::string_view> usage {
105 "example",
106 "--usage",
107 };
108 program(args, usage);
109 } catch (const error<error_code::help>& err) {
110 (void)err;
111 }
112 }
114 std::cout << args << '\n';
115 program(args, cmd_args);
116 std::cout << args << '\n';
118 return 0;
119 }