aboutsummaryrefslogtreecommitdiff
path: root/cc/primitive_set.h
diff options
context:
space:
mode:
authorambrosin <ambrosin@google.com>2022-03-28 04:17:45 -0700
committerCopybara-Service <copybara-worker@google.com>2022-03-28 04:18:34 -0700
commitbb3d0f85c2adb33d951ed6aa3570492f982d5fd2 (patch)
tree0033b762ba9ccd8f0ce6742a64be031cb65ad2f0 /cc/primitive_set.h
parenta169dc6be8abdfb14cbdaf2f823ba695acde9545 (diff)
downloadtink-bb3d0f85c2adb33d951ed6aa3570492f982d5fd2.tar.gz
Add annotations to PrimitiveSet.
PiperOrigin-RevId: 437719775
Diffstat (limited to 'cc/primitive_set.h')
-rw-r--r--cc/primitive_set.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/cc/primitive_set.h b/cc/primitive_set.h
index 1598e1d07..96ce200d9 100644
--- a/cc/primitive_set.h
+++ b/cc/primitive_set.h
@@ -21,6 +21,7 @@
#include <unordered_map>
#include <vector>
+#include "absl/container/flat_hash_map.h"
#include "absl/memory/memory.h"
#include "absl/status/status.h"
#include "absl/synchronization/mutex.h"
@@ -108,7 +109,12 @@ class PrimitiveSet {
typedef std::vector<std::unique_ptr<Entry<P>>> Primitives;
// Constructs an empty PrimitiveSet.
- PrimitiveSet<P>() : primary_(nullptr) {}
+ // Note: This is equivalent to PrimitiveSet<P>(/*annotations=*/{}).
+ PrimitiveSet<P>() = default;
+ // Constructs an empty PrimitiveSet with `annotations`.
+ explicit PrimitiveSet<P>(
+ const absl::flat_hash_map<std::string, std::string>& annotations)
+ : annotations_(annotations) {}
// Adds 'primitive' to this set for the specified 'key'.
crypto::tink::util::StatusOr<Entry<P>*> AddPrimitive(
@@ -177,13 +183,21 @@ class PrimitiveSet {
return result;
}
+ const absl::flat_hash_map<std::string, std::string>& get_annotations() const {
+ return annotations_;
+ }
+
private:
typedef std::unordered_map<std::string, Primitives>
CiphertextPrefixToPrimitivesMap;
- Entry<P>* primary_; // the Entry<P> object is owned by primitives_
+ // The Entry<P> object is owned by primitives_
+ Entry<P>* primary_ = nullptr;
mutable absl::Mutex primitives_mutex_;
CiphertextPrefixToPrimitivesMap primitives_
ABSL_GUARDED_BY(primitives_mutex_);
+
+ // Annotations for the set of primitives.
+ const absl::flat_hash_map<std::string, std::string> annotations_;
};
} // namespace tink