[libcamera-devel] [PATCH 06/14] libcamera: bound_method: Move sequence and generator to BoundMethodBase

Niklas Söderlund niklas.soderlund at ragnatech.se
Tue Jan 7 20:02:54 CET 2020


Hi Laurent,

Thanks for your work.

On 2020-01-04 07:09:39 +0200, Laurent Pinchart wrote:
> The sequence and generator member types of BoundMethodArgs are not
> dependent on the template arguments of BoundMethodArgs. To prepare for
> template specialization of BoundMethodArgs and avoid code duplication,
> move them to the BoundMethodBase class.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  include/libcamera/bound_method.h | 30 +++++++++++++++---------------
>  1 file changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/include/libcamera/bound_method.h b/include/libcamera/bound_method.h
> index a1541212ff3d..9fd58c69a0e9 100644
> --- a/include/libcamera/bound_method.h
> +++ b/include/libcamera/bound_method.h
> @@ -39,19 +39,6 @@ public:
>  	virtual void invokePack(void *pack) = 0;
>  
>  protected:
> -	void activatePack(void *pack, bool deleteMethod);
> -
> -	void *obj_;
> -	Object *object_;
> -
> -private:
> -	ConnectionType connectionType_;
> -};
> -
> -template<typename... Args>
> -class BoundMethodArgs : public BoundMethodBase
> -{
> -private:
>  #ifndef __DOXYGEN__
>  	/*
>  	 * This is a cheap partial implementation of std::integer_sequence<>
> @@ -71,10 +58,23 @@ private:
>  	};
>  #endif
>  
> +	void activatePack(void *pack, bool deleteMethod);
> +
> +	void *obj_;
> +	Object *object_;
> +
> +private:
> +	ConnectionType connectionType_;
> +};
> +
> +template<typename... Args>
> +class BoundMethodArgs : public BoundMethodBase
> +{
> +private:
>  	using PackType = std::tuple<typename std::remove_reference<Args>::type...>;
>  
>  	template<int... S>
> -	void invokePack(void *pack, sequence<S...>)
> +	void invokePack(void *pack, BoundMethodBase::sequence<S...>)
>  	{
>  		PackType *args = static_cast<PackType *>(pack);
>  		invoke(std::get<S>(*args)...);
> @@ -87,7 +87,7 @@ public:
>  
>  	void invokePack(void *pack) override
>  	{
> -		invokePack(pack, typename generator<sizeof...(Args)>::type());
> +		invokePack(pack, typename BoundMethodBase::generator<sizeof...(Args)>::type());
>  	}
>  
>  	virtual void activate(Args... args, bool deleteMethod = false) = 0;
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list