1 #pragma once
2 
3 #include <getopt.h>
4 
5 #include <map>
6 #include <string>
7 
8 namespace phosphor
9 {
10 namespace certs
11 {
12 namespace util
13 {
14 
15 /**
16  * @brief Class - Encapsulates parsing command line options and
17  *                populating arguments.
18  */
19 class ArgumentParser
20 {
21   public:
22     ArgumentParser(int argc, char** argv);
23     ArgumentParser() = delete;
24     ArgumentParser(const ArgumentParser&) = delete;
25     ArgumentParser(ArgumentParser&&) = default;
26     ArgumentParser& operator=(const ArgumentParser&) = delete;
27     ArgumentParser& operator=(ArgumentParser&&) = default;
28     ~ArgumentParser() = default;
29     const std::string& operator[](const std::string& opt);
30 
31     static void usage(char** argv);
32 
33     static const std::string true_string;
34     static const std::string empty_string;
35 
36   private:
37     std::map<const std::string, std::string> arguments;
38 
39     static const option options[];
40     static const char* optionstr;
41 };
42 
43 } // namespace util
44 } // namespace certs
45 } // namespace phosphor
46