summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/controls.h10
-rw-r--r--src/libcamera/controls.cpp27
2 files changed, 10 insertions, 27 deletions
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index 39e24043..dfe69916 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -55,9 +55,13 @@ class ControlValue
{
public:
ControlValue();
- ControlValue(bool value);
- ControlValue(int32_t value);
- ControlValue(int64_t value);
+
+ template<typename T>
+ ControlValue(T value)
+ : type_(details::control_type<std::remove_cv_t<T>>::value)
+ {
+ *reinterpret_cast<T *>(&bool_) = value;
+ }
ControlType type() const { return type_; }
bool isNone() const { return type_ == ControlTypeNone; }
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index f3d79785..5cc8ce21 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -74,31 +74,10 @@ ControlValue::ControlValue()
}
/**
- * \brief Construct a Boolean ControlValue
- * \param[in] value Boolean value to store
+ * \fn template<typename T> T ControlValue::ControlValue(T value)
+ * \brief Construct a ControlValue of type T
+ * \param[in] value Initial value
*/
-ControlValue::ControlValue(bool value)
- : type_(ControlTypeBool), bool_(value)
-{
-}
-
-/**
- * \brief Construct an integer ControlValue
- * \param[in] value Integer value to store
- */
-ControlValue::ControlValue(int32_t value)
- : type_(ControlTypeInteger32), integer32_(value)
-{
-}
-
-/**
- * \brief Construct a 64 bit integer ControlValue
- * \param[in] value Integer value to store
- */
-ControlValue::ControlValue(int64_t value)
- : type_(ControlTypeInteger64), integer64_(value)
-{
-}
/**
* \fn ControlValue::type()