summaryrefslogtreecommitdiff
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
commit954bf1f656e610474d9a582774690dc505fb821b (patch)
treef3cc3ae6444dfb81213c87061a9f01cf1cf3516f
parentb2710e8c3621cb5181f3f31c8856d4823666f891 (diff)
libcamera: controls: Move Control constructor to controls.h
To avoid defining all specializations of the Control constructor manually, move the definition of those functions to controls.h and turn them into a single template function. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--include/libcamera/controls.h5
-rw-r--r--src/libcamera/controls.cpp26
2 files changed, 4 insertions, 27 deletions
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index dfe69916..6f0ebf4f 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -146,7 +146,10 @@ class Control : public ControlId
public:
using type = T;
- Control(unsigned int id, const char *name);
+ Control(unsigned int id, const char *name)
+ : ControlId(id, name, details::control_type<std::remove_cv_t<T>>::value)
+ {
+ }
private:
Control(const Control &) = delete;
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index 5cc8ce21..76230a05 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -249,32 +249,6 @@ bool ControlValue::operator==(const ControlValue &other) const
* \brief The Control template type T
*/
-#ifndef __DOXYGEN__
-template<>
-Control<void>::Control(unsigned int id, const char *name)
- : ControlId(id, name, ControlTypeNone)
-{
-}
-
-template<>
-Control<bool>::Control(unsigned int id, const char *name)
- : ControlId(id, name, ControlTypeBool)
-{
-}
-
-template<>
-Control<int32_t>::Control(unsigned int id, const char *name)
- : ControlId(id, name, ControlTypeInteger32)
-{
-}
-
-template<>
-Control<int64_t>::Control(unsigned int id, const char *name)
- : ControlId(id, name, ControlTypeInteger64)
-{
-}
-#endif /* __DOXYGEN__ */
-
/**
* \class ControlRange
* \brief Describe the limits of valid values for a Control