[libcamera-devel] [PATCH] cam: options: Add explicit conversion methods to OptionValue

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Feb 1 10:29:19 CET 2019


The OptionValue class defines operators to convert the variant to all
the supported option types. As a convenience, add explicit methods to
perform the same operations, avoiding the need to write long
static_cast<>() statements in the caller.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/cam/options.cpp | 19 +++++++++++++++++--
 src/cam/options.h   |  4 ++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/cam/options.cpp b/src/cam/options.cpp
index 4c9f3a36d435..eb59376fa459 100644
--- a/src/cam/options.cpp
+++ b/src/cam/options.cpp
@@ -273,6 +273,21 @@ OptionValue::OptionValue(const KeyValueParser::Options &value)
 }
 
 OptionValue::operator int() const
+{
+	return toInteger();
+}
+
+OptionValue::operator std::string() const
+{
+	return toString();
+}
+
+OptionValue::operator KeyValueParser::Options() const
+{
+	return toKeyValues();
+}
+
+int OptionValue::toInteger() const
 {
 	if (type_ != OptionInteger)
 		return 0;
@@ -280,7 +295,7 @@ OptionValue::operator int() const
 	return integer_;
 }
 
-OptionValue::operator std::string() const
+std::string OptionValue::toString() const
 {
 	if (type_ != OptionString)
 		return std::string();
@@ -288,7 +303,7 @@ OptionValue::operator std::string() const
 	return string_;
 }
 
-OptionValue::operator KeyValueParser::Options() const
+KeyValueParser::Options OptionValue::toKeyValues() const
 {
 	if (type_ != OptionKeyValue)
 		return KeyValueParser::Options();
diff --git a/src/cam/options.h b/src/cam/options.h
index e1fd62ecd369..2d3aa50b5051 100644
--- a/src/cam/options.h
+++ b/src/cam/options.h
@@ -91,6 +91,10 @@ public:
 	operator std::string() const;
 	operator KeyValueParser::Options() const;
 
+	int toInteger() const;
+	std::string toString() const;
+	KeyValueParser::Options toKeyValues() const;
+
 private:
 	OptionType type_;
 	int integer_;
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list