diff options
| author | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-22 13:25:20 -0400 |
|---|---|---|
| committer | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-22 13:25:20 -0400 |
| commit | 08d6c84b9d69b500c964a8ff66e726e1f01f2095 (patch) | |
| tree | 8bc156b54383de8a4a347e463901dcb7bdd1da10 /include/util | |
| parent | 6fd50506d2e50d2faf2478a2883a2ef1b4840a78 (diff) | |
| download | dynamic-extension-08d6c84b9d69b500c964a8ff66e726e1f01f2095.tar.gz | |
Progress towards generalization of shard interface
Diffstat (limited to 'include/util')
| -rw-r--r-- | include/util/Record.h | 34 |
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); } |