1#pragma once
2
3#include <Common/HashTable/FixedHashTable.h>
4
5template <typename Key, typename Allocator = HashTableAllocator>
6class FixedHashSet : public FixedHashTable<Key, FixedHashTableCell<Key>, Allocator>
7{
8public:
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