[libcamera-devel] [PATCH v5 2/5] ipa: raspberrypi: Reformat RPiController::Metadata class header

David Plowman david.plowman at raspberrypi.com
Mon Apr 19 15:47:59 CEST 2021


Hi Naush

Thanks for the patch. All looks good to me!

On Mon, 19 Apr 2021 at 14:35, Naushir Patuck <naush at raspberrypi.com> wrote:
>
> Rearrange header includes to be in alphabetical order.
> Add whitespace to class definition to match libcamera coding guidelines.
> Fix a typo in the comment showing an example of scoped locks.
>
> There are no functional changes in this commit.
>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>

Reviewed-by: David Plowman <david.plowman at raspberrypi.com>

Best regards
David

> ---
>  src/ipa/raspberrypi/controller/metadata.hpp | 23 ++++++++++++++-------
>  1 file changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/src/ipa/raspberrypi/controller/metadata.hpp b/src/ipa/raspberrypi/controller/metadata.hpp
> index 4f44ffc6771c..07dd28ed9e0a 100644
> --- a/src/ipa/raspberrypi/controller/metadata.hpp
> +++ b/src/ipa/raspberrypi/controller/metadata.hpp
> @@ -1,6 +1,6 @@
>  /* SPDX-License-Identifier: BSD-2-Clause */
>  /*
> - * Copyright (C) 2019, Raspberry Pi (Trading) Limited
> + * Copyright (C) 2019-2021, Raspberry Pi (Trading) Limited
>   *
>   * metadata.hpp - general metadata class
>   */
> @@ -9,22 +9,25 @@
>  // A simple class for carrying arbitrary metadata, for example about an image.
>
>  #include <any>
> -#include <string>
> -#include <mutex>
>  #include <map>
>  #include <memory>
> +#include <mutex>
> +#include <string>
>
>  namespace RPiController {
>
>  class Metadata
>  {
>  public:
> -       template<typename T> void Set(std::string const &tag, T const &value)
> +       template<typename T>
> +       void Set(std::string const &tag, T const &value)
>         {
>                 std::lock_guard<std::mutex> lock(mutex_);
>                 data_[tag] = value;
>         }
> -       template<typename T> int Get(std::string const &tag, T &value) const
> +
> +       template<typename T>
> +       int Get(std::string const &tag, T &value) const
>         {
>                 std::lock_guard<std::mutex> lock(mutex_);
>                 auto it = data_.find(tag);
> @@ -33,11 +36,13 @@ public:
>                 value = std::any_cast<T>(it->second);
>                 return 0;
>         }
> +
>         void Clear()
>         {
>                 std::lock_guard<std::mutex> lock(mutex_);
>                 data_.clear();
>         }
> +
>         Metadata &operator=(Metadata const &other)
>         {
>                 std::lock_guard<std::mutex> lock(mutex_);
> @@ -45,7 +50,9 @@ public:
>                 data_ = other.data_;
>                 return *this;
>         }
> -       template<typename T> T *GetLocked(std::string const &tag)
> +
> +       template<typename T>
> +       T *GetLocked(std::string const &tag)
>         {
>                 // This allows in-place access to the Metadata contents,
>                 // for which you should be holding the lock.
> @@ -54,15 +61,17 @@ public:
>                         return nullptr;
>                 return std::any_cast<T>(&it->second);
>         }
> +
>         template<typename T>
>         void SetLocked(std::string const &tag, T const &value)
>         {
>                 // Use this only if you're holding the lock yourself.
>                 data_[tag] = value;
>         }
> +
>         // Note: use of (lowercase) lock and unlock means you can create scoped
>         // locks with the standard lock classes.
> -       // e.g. std::lock_guard<PisP::Metadata> lock(metadata)
> +       // e.g. std::lock_guard<RPiController::Metadata> lock(metadata)
>         void lock() { mutex_.lock(); }
>         void unlock() { mutex_.unlock(); }
>
> --
> 2.25.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list