diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-02-01 11:26:50 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-02-01 11:42:10 +0200 |
commit | 3fd5ade00c5da727184c6c5aa728d4ee27bb6ac2 (patch) | |
tree | bc919a065b10c5eff452e1d3aa37f146ae6d1e7a | |
parent | 86a7b45bdb5221b7ef8a293b8a501be3296a84b8 (diff) |
cam: options: Add explicit conversion methods to OptionValue
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@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
-rw-r--r-- | src/cam/options.cpp | 19 | ||||
-rw-r--r-- | 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 4c9f3a36..eb59376f 100644 --- a/src/cam/options.cpp +++ b/src/cam/options.cpp @@ -274,13 +274,28 @@ 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; 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 e1fd62ec..2d3aa50b 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_; |