summaryrefslogtreecommitdiff
path: root/include/libcamera/controls.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-02-14 17:02:18 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-06 18:10:23 +0200
commitb2710e8c3621cb5181f3f31c8856d4823666f891 (patch)
treead8ef5548c66cac162adb2ddca5760314db902d8 /include/libcamera/controls.h
parenteaa1297df0bc4c6620ccde171dc9dc088109e35e (diff)
libcamera: controls: Move ControlValue constructor to controls.h
To avoid defining all specializations of the ControlValue constructor manually, move the definition of those functions to controls.h and turn them into a single template function. The default constructor is still kept in controls.cpp. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'include/libcamera/controls.h')
-rw-r--r--include/libcamera/controls.h10
1 files changed, 7 insertions, 3 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; }