diff options
Diffstat (limited to 'argument.hpp')
-rw-r--r-- | argument.hpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/argument.hpp b/argument.hpp new file mode 100644 index 0000000..c314006 --- /dev/null +++ b/argument.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include <getopt.h> +#include <map> +#include <string> + +namespace phosphor +{ +namespace fan +{ +namespace util +{ + +/** + * Parses command line arguments. + * This header can be used by all fan applications, while + * the .cpp will need to be implemented by each of them. + */ +class ArgumentParser +{ + public: + ArgumentParser(int argc, char** argv); + ArgumentParser() = delete; + ArgumentParser(const ArgumentParser&) = delete; + ArgumentParser(ArgumentParser&&) = default; + ArgumentParser& operator=(const ArgumentParser&) = delete; + ArgumentParser& operator=(ArgumentParser&&) = default; + ~ArgumentParser() = default; + const std::string& operator[](const std::string& opt); + + static void usage(char** argv); + + static constexpr auto true_string = "true"; + static const std::string empty_string; + + private: + std::map<const std::string, std::string> arguments; + + static const option options[]; + static const char* optionstr; +}; + +} +} +} |