summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-06 06:15:46 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-22 17:13:18 +0300
commit7c205c79d9284599601fa91c87282f416e53f8dc (patch)
tree8e1cdb2211e0099f09a07773db4a9185cb4e4562
parent539820f5d63db5e3045306fcdc70d32157fa8b28 (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.cpp32
-rw-r--r--src/cam/options.h2
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_;
};