-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.cpp
More file actions
117 lines (90 loc) · 2.47 KB
/
main.cpp
File metadata and controls
117 lines (90 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**
c++ counting bloom filter implementation,
example file
\author Steve Göring
\contact stg7@gmx.de
\date 06.10.2018
**/
/**
This file is part of cloom.
cloom is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cloom is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cloom. If not, see <http://www.gnu.org/licenses/>.
**/
#include <iostream>
#include <string>
#include "cloom.hpp"
template<typename T>
void test_has(T X, Cloom<T>& C) {
if (C.has(X)) {
std::cout << X << " in filter" << std::endl;
} else {
std::cout << X << " NOT in filter" << std::endl;
}
}
template<typename T>
void p(T x) {
std::cout << x << std::endl;
}
void int_example() {
Cloom<int> cloom;
p("insert 123");
cloom.insert(123);
auto test_int = 123;
test_has(test_int, cloom);
p("remove 123");
cloom.remove(test_int);
test_has(test_int, cloom);
test_int = 321;
test_has(test_int, cloom);
cloom.remove(test_int);
test_has(test_int, cloom);
}
void str_example() {
Cloom<std::string> cloom;
p("insert hello");
cloom.insert(std::string("hello"));
auto test_str = std::string("hello");
test_has(test_str, cloom);
p("remove hello");
cloom.remove(test_str);
test_has(test_str, cloom);
test_str = std::string("holla");
test_has(test_str, cloom);
cloom.remove(test_str);
test_has(test_str, cloom);
}
void storage_example() {
const char* filename = "storage.cloom";
{
Cloom<std::string> cl;
cl.insert(std::string("hello"));
cl.insert(std::string("world"));
cl.store(filename);
}
{
Cloom<std::string> cl;
cl.load(filename);
cl.insert(std::string("abc"));
test_has(std::string("hello"), cl);
test_has(std::string("world"), cl);
test_has(std::string("abc"), cl);
}
}
/**
cloom example usage
**/
int main(int argc, const char* argv[]) {
std::cout << "example cloom usage" << std::endl;
int_example();
str_example();
storage_example();
return 0;
}