| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <Common/HashTable/FixedHashTable.h> |
| 4 | |
| 5 | template <typename Key, typename Allocator = HashTableAllocator> |
| 6 | class FixedHashSet : public FixedHashTable<Key, FixedHashTableCell<Key>, Allocator> |
| 7 | { |
| 8 | public: |
| 9 | using Cell = FixedHashTableCell<Key>; |
| 10 | using Base = FixedHashTable<Key, Cell, Allocator>; |
| 11 | using Self = FixedHashSet; |
| 12 | |
| 13 | void merge(const Self & rhs) |
| 14 | { |
| 15 | for (size_t i = 0; i < Base::BUFFER_SIZE; ++i) |
| 16 | if (Base::buf[i].isZero(*this) && !rhs.buf[i].isZero(*this)) |
| 17 | new (&Base::buf[i]) Cell(rhs.buf[i]); |
| 18 | } |
| 19 | |
| 20 | /// NOTE: Currently this method isn't used. When it does, the ReadBuffer should |
| 21 | /// contain the Key explicitly. |
| 22 | // void readAndMerge(DB::ReadBuffer & rb) |
| 23 | // { |
| 24 | |
| 25 | // } |
| 26 | }; |
| 27 |