diff options
author | Naushir Patuck <naush@raspberrypi.com> | 2021-05-10 10:58:11 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-05-11 03:13:39 +0300 |
commit | 340477f987f13c7e02b8848b190c6ef75608f6e8 (patch) | |
tree | 80c202f124c78f64283459140713df5047cd26c2 /src/ipa/raspberrypi/controller/metadata.hpp | |
parent | 3099e91c7b1a9f38e156025c4fac5f908afed0f9 (diff) |
ipa: raspberrypi: Reformat RPiController::Metadata class header
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@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/raspberrypi/controller/metadata.hpp')
-rw-r--r-- | src/ipa/raspberrypi/controller/metadata.hpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/ipa/raspberrypi/controller/metadata.hpp b/src/ipa/raspberrypi/controller/metadata.hpp index 4f44ffc6..07dd28ed 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(); } |