[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