diff options
Diffstat (limited to 'argument.hpp')
-rw-r--r-- | argument.hpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/argument.hpp b/argument.hpp new file mode 100644 index 0000000..28b2966 --- /dev/null +++ b/argument.hpp @@ -0,0 +1,58 @@ +#ifndef __ARGUMENT_H +#define __ARGUMENT_H +#include <getopt.h> +#include <map> +#include <string> + +namespace phosphor +{ +namespace led +{ +/** @brief Class - 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 Contructs Argument 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** argv); + + /** @brief Given a option, returns its argument(optarg) */ + const std::string& operator[](const std::string& opt); + + /** @brief Displays usage */ + static void usage(char** argv); + + /** @brief Set to 'true' when an option is passed */ + static const std::string true_string; + + /** @brief Set to '' when an option is not passed */ + static const std::string empty_string; + + private: + /** @brief Option to argument mapping */ + std::map<const std::string, 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 led +} // namespace phosphor + +#endif |