summaryrefslogtreecommitdiff
path: root/src/cam/options.cpp
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-03-22 02:11:22 +0100
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-03-27 15:06:02 +0100
commit2a608965f8cb4bb93522e9b22af840c688ec12a1 (patch)
treeac39a3ffa45695faad2a3b6c6c5c1e76c2372b3d /src/cam/options.cpp
parentaf45435014aad8497fbb71d9be53ab3f890a22e4 (diff)
cam: options: Add an array data type to OptionValue
To allow specifying the same argument option multiple times a new type of OptionValue is needed. As parsing of options is an iterative process there is a need to append options as they are parsed so instead of setting values using the constructor a new addValue() method is used. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/cam/options.cpp')
-rw-r--r--src/cam/options.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cam/options.cpp b/src/cam/options.cpp
index 49783339..556e7623 100644
--- a/src/cam/options.cpp
+++ b/src/cam/options.cpp
@@ -5,6 +5,7 @@
* options.cpp - cam - Options parsing
*/
+#include <cassert>
#include <getopt.h>
#include <iomanip>
#include <iostream>
@@ -272,6 +273,14 @@ OptionValue::OptionValue(const KeyValueParser::Options &value)
{
}
+void OptionValue::addValue(const OptionValue &value)
+{
+ assert(type_ == ValueNone || type_ == ValueArray);
+
+ type_ = ValueArray;
+ array_.push_back(value);
+}
+
OptionValue::operator int() const
{
return toInteger();
@@ -287,6 +296,11 @@ OptionValue::operator KeyValueParser::Options() const
return toKeyValues();
}
+OptionValue::operator std::vector<OptionValue>() const
+{
+ return toArray();
+}
+
int OptionValue::toInteger() const
{
if (type_ != ValueInteger)
@@ -311,6 +325,14 @@ KeyValueParser::Options OptionValue::toKeyValues() const
return keyValues_;
}
+std::vector<OptionValue> OptionValue::toArray() const
+{
+ if (type_ != ValueArray)
+ return std::vector<OptionValue>{};
+
+ return array_;
+}
+
/* -----------------------------------------------------------------------------
* OptionsParser
*/