[libcamera-devel] [PATCH v2 3/9] libcamera: bound_method: Store connection type in BoundMethodBase
Niklas Söderlund
niklas.soderlund at ragnatech.se
Tue Oct 29 15:39:36 CET 2019
Hi Laurent,
Thanks for your patch.
On 2019-10-28 12:49:07 +0200, Laurent Pinchart wrote:
> Store the connection type in the base BoundMethodBase class to make it
> accessible to all bound methods. The default type is ConnectionTypeAuto.
>
> 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 | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/include/libcamera/bound_method.h b/include/libcamera/bound_method.h
> index e1524c917e4b..06c5a3b12305 100644
> --- a/include/libcamera/bound_method.h
> +++ b/include/libcamera/bound_method.h
> @@ -24,8 +24,10 @@ enum ConnectionType {
> class BoundMethodBase
> {
> public:
> - BoundMethodBase(void *obj, Object *object)
> - : obj_(obj), object_(object) {}
> + BoundMethodBase(void *obj, Object *object, ConnectionType type)
> + : obj_(obj), object_(object), connectionType_(type)
> + {
> + }
> virtual ~BoundMethodBase() {}
>
> template<typename T, typename std::enable_if<!std::is_same<Object, T>::value>::type * = nullptr>
> @@ -33,6 +35,7 @@ public:
> bool match(Object *object) { return object == object_; }
>
> Object *object() const { return object_; }
> + ConnectionType connectionType() const { return connectionType_; }
>
> void activatePack(void *pack);
> virtual void invokePack(void *pack) = 0;
> @@ -40,6 +43,7 @@ public:
> protected:
> void *obj_;
> Object *object_;
> + ConnectionType connectionType_;
> };
>
> template<typename... Args>
> @@ -76,8 +80,8 @@ private:
> }
>
> public:
> - BoundMethodArgs(void *obj, Object *object)
> - : BoundMethodBase(obj, object) {}
> + BoundMethodArgs(void *obj, Object *object, ConnectionType type)
> + : BoundMethodBase(obj, object, type) {}
>
> void invokePack(void *pack) override
> {
> @@ -94,8 +98,11 @@ class BoundMemberMethod : public BoundMethodArgs<Args...>
> public:
> using PackType = std::tuple<typename std::remove_reference<Args>::type...>;
>
> - BoundMemberMethod(T *obj, Object *object, void (T::*func)(Args...))
> - : BoundMethodArgs<Args...>(obj, object), func_(func) {}
> + BoundMemberMethod(T *obj, Object *object, void (T::*func)(Args...),
> + ConnectionType type = ConnectionTypeAuto)
> + : BoundMethodArgs<Args...>(obj, object, type), func_(func)
> + {
> + }
>
> bool match(void (T::*func)(Args...)) const { return func == func_; }
>
> @@ -121,7 +128,10 @@ class BoundStaticMethod : public BoundMethodArgs<Args...>
> {
> public:
> BoundStaticMethod(void (*func)(Args...))
> - : BoundMethodArgs<Args...>(nullptr, nullptr), func_(func) {}
> + : BoundMethodArgs<Args...>(nullptr, nullptr, ConnectionTypeAuto),
> + func_(func)
> + {
> + }
>
> bool match(void (*func)(Args...)) const { return func == func_; }
>
> --
> 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