diff options
-rw-r--r-- | src/cam/options.cpp | 21 | ||||
-rw-r--r-- | src/cam/options.h | 22 |
2 files changed, 27 insertions, 16 deletions
diff --git a/src/cam/options.cpp b/src/cam/options.cpp index 417c3ab4..41968caa 100644 --- a/src/cam/options.cpp +++ b/src/cam/options.cpp @@ -17,6 +17,21 @@ * Option */ +struct Option { + int opt; + OptionType type; + const char *name; + OptionArgument argument; + const char *argumentName; + const char *help; + KeyValueParser *keyValueParser; + bool isArray; + + bool hasShortOption() const { return isalnum(opt); } + bool hasLongOption() const { return name != nullptr; } + const char *typeName() const; +}; + const char *Option::typeName() const { switch (type) { @@ -129,6 +144,9 @@ template class OptionsBase<std::string>; * KeyValueParser */ +KeyValueParser::KeyValueParser() = default; +KeyValueParser::~KeyValueParser() = default; + bool KeyValueParser::addOption(const char *name, OptionType type, const char *help, OptionArgument argument) { @@ -349,6 +367,9 @@ std::vector<OptionValue> OptionValue::toArray() const * OptionsParser */ +OptionsParser::OptionsParser() = default; +OptionsParser::~OptionsParser() = default; + bool OptionsParser::addOption(int opt, OptionType type, const char *help, const char *name, OptionArgument argument, const char *argumentName, bool array) diff --git a/src/cam/options.h b/src/cam/options.h index d0defb4b..688fe260 100644 --- a/src/cam/options.h +++ b/src/cam/options.h @@ -14,6 +14,7 @@ class KeyValueParser; class OptionValue; +struct Option; enum OptionArgument { ArgumentNone, @@ -28,21 +29,6 @@ enum OptionType { OptionKeyValue, }; -struct Option { - int opt; - OptionType type; - const char *name; - OptionArgument argument; - const char *argumentName; - const char *help; - KeyValueParser *keyValueParser; - bool isArray; - - bool hasShortOption() const { return isalnum(opt); } - bool hasLongOption() const { return name != nullptr; } - const char *typeName() const; -}; - template<typename T> class OptionsBase { @@ -73,7 +59,8 @@ public: { }; - virtual ~KeyValueParser() = default; + KeyValueParser(); + virtual ~KeyValueParser(); bool addOption(const char *name, OptionType type, const char *help, OptionArgument argument = ArgumentNone); @@ -133,6 +120,9 @@ public: { }; + OptionsParser(); + ~OptionsParser(); + bool addOption(int opt, OptionType type, const char *help, const char *name = nullptr, OptionArgument argument = ArgumentNone, |