Skip to content
Snippets Groups Projects
Commit 7e58fde5 authored by Wlad's avatar Wlad
Browse files

feat: add filter generator

parent 4fec6a2c
No related branches found
No related tags found
No related merge requests found
......@@ -53,5 +53,10 @@ plot: init-python
deactivate
gen-filter: init-python
source venv/bin/activate; \
python3 templates/generate_filter.py; \
deactivate
clean:
rm -rf venv build
Filter source files created!
Please extend the existing filter definitions in the following files:
- src/filter_base.hpp
Add the following line to the enum class FilterType: {{ filter_name }}
enum class FilterType : size_t {
Bloom,
Xor,
Cuckoo,
FastfilterBloom,
FastfilterXor,
ImpalaBloom,
BSDBloom,
BSDCuckoo,
EfficientCuckooFilter,
AMDMortonFilter,
VacuumFilter,
LookupBloom,
// ...
{{ filter_name }} // <-- ADD THIS LINE
};
- test/tester.cpp
Add test cases for your filter:
namespace test::{{ package_name }} {
INSTANTIATE_TYPED_TEST_CASE_P({{ filter_name }}ExampleTestTypes, FilterTest, {{ filter_name }}ExampleTestTypes);
// Add other test cases here
}
\ No newline at end of file
......@@ -23,6 +23,8 @@ def render_to_file(template_name, data, dir, file_name):
with open(path, 'w') as f:
f.write(output)
print('Created file: ' + path)
data = {
'filter_name': filter_name,
'filter_package': filter_package,
......@@ -39,7 +41,7 @@ container_dir = filter_dir + '/container'
if not os.path.exists(container_dir):
os.makedirs(container_dir)
tests_dir = 'tests/' + filter_package
tests_dir = 'test/' + filter_package
if not os.path.exists(tests_dir):
os.makedirs(tests_dir)
......@@ -47,10 +49,15 @@ if not os.path.exists(tests_dir):
# render templates
render_to_file('filter_factory.hpp.j2', data, filter_dir, filter_package + '_filter_factory.hpp')
render_to_file('filter.hpp.j2', data, filter_dir, filter_package + '_factory.hpp')
render_to_file('filter.hpp.j2', data, filter_dir, filter_package + '_filter.hpp')
render_to_file('filter_parameter.hpp.j2', data, filter_dir, filter_package + '_parameter.hpp')
render_to_file('container/container_base.hpp.j2', data, container_dir, 'container_base.hpp')
render_to_file('tests/filter_test.cpp.j2', data, tests_dir, filter_package + '_test.cpp')
render_to_file('tests/filter_test.hpp.j2', data, tests_dir, filter_package + '_test.hpp')
render_to_file('test/filter_test.cpp.j2', data, tests_dir, filter_package + '_test.cpp')
render_to_file('test/filter_test.hpp.j2', data, tests_dir, filter_package + '_test.hpp')
print('Filter generated!')
instructions = render_template('post_generation.txt.j2', data)
print('Done!')
\ No newline at end of file
print(instructions)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment