1 #include <iostream>
2 
3 #include "getopt.h"
4 
5 using std::cout;
6 using std::cerr;
7 using std::endl;
8 
9 #define bool int
10 #define true 1
11 #define false 0
12 
13 char const* const usage = ("usage: PROGRAM -[h]\n" // NOLINT
14 			   "\t--bool\t-b\tsets the bool-variable to true\n"
15 			   "\t--char\t-c\tsets the char-variable\n"
16 			   "\t--double\t-d\tsets the double-variable\n"
17 			   "\t--float\t-f\tsets the float-variable\n"
18 			   "\t--int\t-i\tsets the int-variable\n"
19 			   "\t--strn\t-s\tsets the string-variable\n");
20 
21 int
main(int argc,char * argv[])22 main(int argc, char* argv[])
23 {
24 
25   cout << argc << " arguments:\n";
26   for(int j = 0; j < argc; j++)
27     cout << '\t' << j << ". " << argv[j] << '\n'; // NOLINT
28   cout << endl;
29 
30   GetOpt::Option option;
31   while (option = getopt(argc, argv, // NOLINT
32 			 "help", 'h', GetOpt::Syntax::BOOL,
33 			 "version", 'v', GetOpt::Syntax::BOOL,
34 			 "usage", 'U', GetOpt::Syntax::BOOL,
35 			 "bool", 'b', GetOpt::Syntax::BOOL,
36 			 "char", 'c', GetOpt::Syntax::CHAR,
37 			 "double", 'd', GetOpt::Syntax::DOUBLE,
38 			 "int", 'i', GetOpt::Syntax::INT,
39 			 "strn", 's', GetOpt::Syntax::BSTRING,
40 			 "unsigned", 'u', GetOpt::Syntax::UNSIGNED,
41 			 "", '\0', GetOpt::Syntax::END)) {
42 
43     if (option.fail()) {
44       // wrong usage
45       cerr << "\nwrong usage: "
46 	<< option.error() << " " << option.value_string() << "\n\n"
47 	<< usage
48 	<< endl;
49       return 1;
50     } // if (option.fail())
51 
52     if (option.name() == "help") {
53       cout << "This is the help." << endl;
54     } else if (option.name() == "version") {
55       cout << "This is the version." << endl;
56     } else if (option.name() == "usage") {
57       cout << usage << endl;
58     } else if (option.name() == "bool") {
59       cout << "bool:\t" << option.value(GetOpt::Option::BOOL) << endl;
60     } else if (option.name() == "char") {
61       cout << "char:\t" << option.value(GetOpt::Option::CHAR) << endl;
62     } else if (option.name() == "double") {
63       cout << "double:\t" << option.value(GetOpt::Option::DOUBLE) << endl;
64     } else if (option.name() == "int") {
65       cout << "int:\t" << option.value(GetOpt::Option::INT) << endl;
66     } else if (option.name() == "strn") {
67       cout << "string:\t" << option.value(GetOpt::Option::BSTRING) << endl;
68     } else if (option.name() == "unsigned") {
69       cout << "unsigned:\t" << option.value(GetOpt::Option::UNSIGNED) << endl;
70     } else if (option.name() == "") {
71       cout << "extra:\t" << option.value(GetOpt::Option::BSTRING) << endl;
72     } // if (option.name() == ...)
73   } // while (getopt())
74 
75   return 0;
76 } // main()
77