diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-07-06 06:15:46 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-07-22 17:13:18 +0300 |
commit | 7c205c79d9284599601fa91c87282f416e53f8dc (patch) | |
tree | 8e1cdb2211e0099f09a07773db4a9185cb4e4562 | |
parent | 539820f5d63db5e3045306fcdc70d32157fa8b28 (diff) |
cam: options: Add optionName() function to Option structure
Add an Option::optionName() function that returns a string describing
the option name, with leading dashes. As a result,
OptionsParser::parseValueError() function becomes a single-line function
and can be inlined in its caller.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r-- | src/cam/options.cpp | 32 | ||||
-rw-r--r-- | src/cam/options.h | 2 |
2 files changed, 18 insertions, 16 deletions
diff --git a/src/cam/options.cpp b/src/cam/options.cpp index 135dd762..721a808a 100644 --- a/src/cam/options.cpp +++ b/src/cam/options.cpp @@ -100,6 +100,7 @@ struct Option { bool hasShortOption() const { return isalnum(opt); } bool hasLongOption() const { return name != nullptr; } const char *typeName() const; + std::string optionName() const; }; /** @@ -125,6 +126,20 @@ const char *Option::typeName() const return "unknown"; } +/** + * \brief Retrieve a string describing the option name, with leading dashes + * \return A string describing the option name, as a long option identifier + * (double dash) if the option has a name, or a short option identifier (single + * dash) otherwise + */ +std::string Option::optionName() const +{ + if (name) + return "--" + std::string(name); + else + return "-" + std::string(1, opt); +} + /* ----------------------------------------------------------------------------- * OptionBase<T> */ @@ -865,7 +880,9 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv) const Option &option = *optionsMap_[c]; if (!options.parseValue(c, option, optarg)) { - parseValueError(option); + std::cerr << "Can't parse " << option.typeName() + << " argument for option " << option.optionName() + << std::endl; usage(); return options; } @@ -952,16 +969,3 @@ void OptionsParser::usage() option.keyValueParser->usage(indent); } } - -void OptionsParser::parseValueError(const Option &option) -{ - std::string optionName; - - if (option.name) - optionName = "--" + std::string(option.name); - else - optionName = "-" + std::string(1, option.opt); - - std::cerr << "Can't parse " << option.typeName() - << " argument for option " << optionName << std::endl; -} diff --git a/src/cam/options.h b/src/cam/options.h index a3b18bb6..0b8bb172 100644 --- a/src/cam/options.h +++ b/src/cam/options.h @@ -95,8 +95,6 @@ public: void usage(); private: - void parseValueError(const Option &option); - std::list<Option> options_; std::map<unsigned int, Option *> optionsMap_; }; |