[libcamera-devel] [PATCH 14/31] libcamera: controls: Move Control constructor to controls.h

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Mar 3 00:35:18 CET 2020


One more thing,

On 02/03/2020 23:33, Kieran Bingham wrote:
> On 29/02/2020 16:42, Laurent Pinchart wrote:
>> To avoid defining all specializations of the Control constructor
>> manually, move the definition of those functions to controls.h.

I think this comment applies to the previous couple of patches too, but
the commit message is sort of missing an important piece of information
here.

You've moved them *and* simplified them to a single constructor...

>>
>> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> Excellent, more simplifications. (wait, I'm not sure I can use the word
> 'simple' in the context of templates hehe)
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
>> ---
>>  include/libcamera/controls.h |  5 ++++-
>>  src/libcamera/controls.cpp   | 26 --------------------------
>>  2 files changed, 4 insertions(+), 27 deletions(-)
>>
>> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
>> index dfe69916cd64..6f0ebf4f3ca5 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 5cc8ce2199d0..76230a052de1 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
>>
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list