Skip to content

Commit 34e11ee

Browse files
committed
Making the API less restrictive.
1 parent 2bc6cfb commit 34e11ee

File tree

4 files changed

+27
-9
lines changed

4 files changed

+27
-9
lines changed

src/bloom.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,12 @@ class BloomFilter {
6060

6161
// Add multiple items to the filter.
6262
Status AddAll(const vector<ItemType> data, const size_t start,
63-
const size_t end);
63+
const size_t end) {
64+
return AddAll(data.data(),start,end);
6465

66+
}
67+
Status AddAll(const ItemType* data, const size_t start,
68+
const size_t end);
6569
// Report if the item is inserted, with false positive rate.
6670
Status Contain(const ItemType &item) const;
6771

@@ -107,7 +111,7 @@ void applyBlock(uint32_t *tmp, int block, int len, uint64_t *data) {
107111
template <typename ItemType, size_t bits_per_item, bool branchless,
108112
typename HashFamily, int k>
109113
Status BloomFilter<ItemType, bits_per_item, branchless, HashFamily, k>::AddAll(
110-
const vector<ItemType> keys, const size_t start, const size_t end) {
114+
const ItemType* keys, const size_t start, const size_t end) {
111115
int blocks = 1 + arrayLength / blockLen;
112116
uint32_t *tmp = new uint32_t[blocks * blockLen];
113117
int *tmpLen = new int[blocks]();

src/simd-block-fixed-fpp.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ class SimdBlockFilterFixed {
6060
void Add(const uint64_t key) noexcept;
6161

6262
// Add multiple items to the filter.
63-
void AddAll(const vector<uint64_t> data, const size_t start, const size_t end);
63+
void AddAll(const vector<uint64_t> & data, const size_t start, const size_t end) {
64+
return AddAll(data.data(), start,end);
65+
}
66+
void AddAll(const uint64_t* data, const size_t start, const size_t end);
6467

6568
bool Find(const uint64_t key) const noexcept;
6669
uint64_t SizeInBytes() const { return sizeof(Bucket) * bucketCount; }
@@ -147,7 +150,7 @@ void SimdBlockFilterFixed<HashFamily>::ApplyBlock(uint64_t* tmp, int block, int
147150

148151
template<typename HashFamily>
149152
void SimdBlockFilterFixed<HashFamily>::AddAll(
150-
const vector<uint64_t> keys, const size_t start, const size_t end) {
153+
const uint64_t* keys, const size_t start, const size_t end) {
151154
int blocks = 1 + bucketCount / blockLen;
152155
uint64_t* tmp = new uint64_t[blocks * blockLen];
153156
int* tmpLen = new int[blocks]();
@@ -314,7 +317,11 @@ class SimdBlockFilterFixed {
314317
void Add(const uint64_t key) noexcept;
315318

316319
// Add multiple items to the filter.
317-
void AddAll(const vector<uint64_t> data, const size_t start, const size_t end);
320+
void AddAll(const vector<uint64_t>& data, const size_t start, const size_t end) {
321+
return AddAll(data.data(),start,end);
322+
}
323+
324+
void AddAll(const uint64_t* data, const size_t start, const size_t end);
318325

319326
bool Find(const uint64_t key) const noexcept;
320327
uint64_t SizeInBytes() const { return sizeof(Bucket) * bucketCount; }

src/xorfilter.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ class XorFilter {
6666
delete hasher;
6767
}
6868

69-
Status AddAll(const vector<ItemType> data, const size_t start, const size_t end);
69+
Status AddAll(const vector<ItemType> &data, const size_t start, const size_t end) {
70+
return AddAll(data.data(),start,end);
71+
}
72+
73+
Status AddAll(const ItemType* data, const size_t start, const size_t end);
7074

7175
// Report if the item is inserted, with false positive rate.
7276
Status Contain(const ItemType &item) const;
@@ -120,7 +124,7 @@ int applyBlock2(uint64_t* tmp, int b, int len, t2val_t * t2vals, int* alone, int
120124
template <typename ItemType, typename FingerprintType,
121125
typename HashFamily>
122126
Status XorFilter<ItemType, FingerprintType, HashFamily>::AddAll(
123-
const vector<ItemType> keys, const size_t start, const size_t end) {
127+
const ItemType* keys, const size_t start, const size_t end) {
124128

125129
int m = arrayLength;
126130
uint64_t* reverseOrder = new uint64_t[size];

src/xorfilter_plus.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,10 @@ class XorFilterPlus {
193193
}
194194
}
195195

196-
Status AddAll(const vector<ItemType> data, const size_t start, const size_t end);
196+
Status AddAll(const vector<ItemType>& data, const size_t start, const size_t end) {
197+
return AddAll(data.data(), start, end);
198+
}
199+
Status AddAll(const ItemType * data, const size_t start, const size_t end);
197200

198201
// Report if the item is inserted, with false positive rate.
199202
Status Contain(const ItemType &item) const;
@@ -212,7 +215,7 @@ class XorFilterPlus {
212215
template <typename ItemType, typename FingerprintType,
213216
typename HashFamily>
214217
Status XorFilterPlus<ItemType, FingerprintType, HashFamily>::AddAll(
215-
const vector<ItemType> keys, const size_t start, const size_t end) {
218+
const ItemType* keys, const size_t start, const size_t end) {
216219
int m = arrayLength;
217220
uint64_t* reverseOrder = new uint64_t[size];
218221
uint8_t* reverseH = new uint8_t[size];

0 commit comments

Comments
 (0)