| #pragma once |
| |
| #include <getopt.h> |
| |
| #include <map> |
| #include <string> |
| #include <vector> |
| |
| namespace phosphor |
| { |
| namespace watchdog |
| { |
| /** @brief Class ArgumentParser - Encapsulates parsing command line options |
| * and populating arguments |
| */ |
| class ArgumentParser |
| { |
| public: |
| ArgumentParser() = delete; |
| ~ArgumentParser() = default; |
| ArgumentParser(const ArgumentParser&) = delete; |
| ArgumentParser& operator=(const ArgumentParser&) = delete; |
| ArgumentParser(ArgumentParser&&) = default; |
| ArgumentParser& operator=(ArgumentParser&&) = default; |
| |
| /** @brief Constructs ArgumentParser object |
| * |
| * @param argc - the main function's argc passed as is |
| * @param argv - the main function's argv passed as is |
| * @return Object constructed |
| */ |
| ArgumentParser(int argc, char* const argv[]); |
| |
| /** @brief Given an option, returns its argument(optarg) |
| * |
| * @param opt - command line option string |
| * |
| * @return argument which is a standard optarg |
| */ |
| const std::vector<std::string>& operator[](const std::string& opt); |
| |
| /** @brief Displays usage |
| * |
| * @param argv - the main function's argv passed as is |
| */ |
| static void usage(char* const argv[]); |
| |
| /** @brief Set to 'true' when an option is passed */ |
| static const std::string trueString; |
| |
| private: |
| /** @brief Option to argument mapping */ |
| std::map<const std::string, std::vector<std::string>> arguments; |
| |
| /** @brief Array of struct options as needed by getopt_long */ |
| static const option options[]; |
| |
| /** @brief optstring as needed by getopt_long */ |
| static const char* optionStr; |
| }; |
| |
| } // namespace watchdog |
| } // namespace phosphor |