summaryrefslogtreecommitdiffstats
path: root/include/util
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2023-05-22 13:25:20 -0400
committerDouglas Rumbaugh <dbr4@psu.edu>2023-05-22 13:25:20 -0400
commit08d6c84b9d69b500c964a8ff66e726e1f01f2095 (patch)
tree8bc156b54383de8a4a347e463901dcb7bdd1da10 /include/util
parent6fd50506d2e50d2faf2478a2883a2ef1b4840a78 (diff)
downloaddynamic-extension-08d6c84b9d69b500c964a8ff66e726e1f01f2095.tar.gz
Progress towards generalization of shard interface
Diffstat (limited to 'include/util')
-rw-r--r--include/util/Record.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/include/util/Record.h b/include/util/Record.h
index ce101f4..fc543ed 100644
--- a/include/util/Record.h
+++ b/include/util/Record.h
@@ -20,27 +20,15 @@ template<typename R>
concept RecordInterface = requires(R r, R s) {
r.key;
r.value;
- r.header;
- {r.is_tombstone()} -> std::convertible_to<bool>;
- {r.is_deleted()} -> std::convertible_to<bool>;
- r.set_delete();
- r.set_tombstone(std::declval<bool>);
{ r < s } ->std::convertible_to<bool>;
{ r == s } ->std::convertible_to<bool>;
- { r.header < s.header } -> std::convertible_to<bool>;
};
-template <typename R>
-concept WeightedRecordInterface = RecordInterface<R> && requires(R r) {
- {r.weight} -> std::convertible_to<double>;
-};
-
-template <typename K, typename V>
-struct Record {
- K key;
- V value;
- uint32_t header = 0;
+template<RecordInterface R>
+struct WrappedRecord {
+ R rec;
+ uint32_t header;
inline void set_delete() {
header |= 2;
@@ -61,8 +49,20 @@ struct Record {
inline bool is_tombstone() const {
return header & 1;
}
+};
+
+template <typename R>
+concept WeightedRecordInterface = RecordInterface<R> && requires(R r) {
+ {r.weight} -> std::convertible_to<double>;
+};
+
+template <typename K, typename V>
+struct Record {
+ K key;
+ V value;
+ uint32_t header = 0;
- inline bool operator<(const Record& other) const {
+ inline bool operator<(const Record& other) const {
return key < other.key || (key == other.key && value < other.value);
}