[libcamera-devel] [PATCH v5 2/5] ipa: raspberrypi: Reformat RPiController::Metadata class header
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Apr 27 09:14:27 CEST 2021
Hi Naush,
Thank you for the patch.
On Mon, Apr 19, 2021 at 02:34:48PM +0100, Naushir Patuck 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.
Sweet, it looks nicer. To me at least :-)
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> There are no functional changes in this commit.
>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
> 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(); }
>
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list