diff --git a/src/cam/options.h b/src/cam/options.h index 688fe260..a3b18bb6 100644 --- a/src/cam/options.h +++ b/src/cam/options.h @@ -74,6 +74,33 @@ private: std::map optionsMap_; }; +class OptionsParser +{ +public: + class Options : public OptionsBase + { + }; + + OptionsParser(); + ~OptionsParser(); + + bool addOption(int opt, OptionType type, const char *help, + const char *name = nullptr, + OptionArgument argument = ArgumentNone, + const char *argumentName = nullptr, bool array = false); + bool addOption(int opt, KeyValueParser *parser, const char *help, + const char *name = nullptr, bool array = false); + + Options parse(int argc, char *argv[]); + void usage(); + +private: + void parseValueError(const Option &option); + + std::list