|
| 1 | +#define NOCROSSCONSTRUCTORS |
| 2 | + |
| 3 | + |
| 4 | +#include <cstdint> |
| 5 | +#include <string> |
| 6 | +#include <tuple> |
| 7 | +#include <stdexcept> |
| 8 | + |
| 9 | +#define assert(x) if(!x) {throw std::runtime_error("assertion failed");} |
| 10 | + |
| 11 | +#include <sdsl/vectors.hpp> |
| 12 | + |
| 13 | +#include <pybind11/pybind11.h> |
| 14 | + |
| 15 | +#include "docstrings.hpp" |
| 16 | +#include "operations/creation.hpp" |
| 17 | +#include "types/bitvector.hpp" |
| 18 | +#include "types/encodedvector.hpp" |
| 19 | +#include "types/intvector.hpp" |
| 20 | +#include "types/suffixarray.hpp" |
| 21 | +#include "types/wavelet.hpp" |
| 22 | + |
| 23 | +namespace py = pybind11; |
| 24 | + |
| 25 | + |
| 26 | +PYBIND11_MODULE(pysdsl, m) |
| 27 | +{ |
| 28 | + m.doc() = "sdsl-lite bindings for python"; |
| 29 | + |
| 30 | + auto iv_classes = add_int_vectors(m); |
| 31 | + |
| 32 | + py::class_<sdsl::int_vector<1>>& bit_vector_cls = std::get<1>(iv_classes); |
| 33 | + |
| 34 | + auto bit_vector_classes = std::make_tuple(bit_vector_cls); |
| 35 | + |
| 36 | + // auto tmp = add_bitvectors(m, bit_vector_cls); |
| 37 | + // auto compressed_bit_vector_classes = std::get<0>(tmp); |
| 38 | + // auto cbv_propagate = std::get<1>(tmp); |
| 39 | + |
| 40 | + // auto enc_classes = add_encoded_vectors(m); |
| 41 | + |
| 42 | + // auto wavelet_classes = add_wavelet(m, cbv_propagate); |
| 43 | + |
| 44 | + // auto csa_classes = add_csa(m); |
| 45 | + |
| 46 | + for_each_in_tuple(iv_classes, make_inits_many_functor(iv_classes)); |
| 47 | + // for_each_in_tuple(iv_classes, make_inits_many_functor(enc_classes)); |
| 48 | + // for_each_in_tuple(iv_classes, |
| 49 | + // make_inits_many_functor(compressed_bit_vector_classes)); |
| 50 | + // for_each_in_tuple(iv_classes, make_inits_many_functor(wavelet_classes)); |
| 51 | + |
| 52 | + // for_each_in_tuple(enc_classes, make_inits_many_functor(iv_classes)); |
| 53 | +// #ifndef NOCROSSCONSTRUCTORS |
| 54 | + // for_each_in_tuple(enc_classes, make_inits_many_functor(enc_classes)); |
| 55 | + //for_each_in_tuple(enc_classes, make_inits_many_functor(wavelet_classes)); |
| 56 | +// #endif |
| 57 | + |
| 58 | + // for_each_in_tuple(compressed_bit_vector_classes, |
| 59 | + // make_inits_many_functor(bit_vector_classes)); |
| 60 | +// #ifndef NOCROSSCONSTRUCTORS |
| 61 | + // for_each_in_tuple(compressed_bit_vector_classes, make_inits_many_functor(compressed_bit_vector_classes)); |
| 62 | +// #endif |
| 63 | + |
| 64 | + // for_each_in_tuple(wavelet_classes, make_inits_many_functor(iv_classes)); |
| 65 | +// #ifndef NOCROSSCONSTRUCTORS |
| 66 | + // for_each_in_tuple(wavelet_classes, make_inits_many_functor(enc_classes)); |
| 67 | + // for_each_in_tuple(wavelet_classes, |
| 68 | + // make_inits_many_functor(wavelet_classes)); |
| 69 | +// #endif |
| 70 | + |
| 71 | + for_each_in_tuple(iv_classes, make_pysequence_init_functor()); |
| 72 | + // for_each_in_tuple(enc_classes, make_pysequence_init_functor()); |
| 73 | + //for_each_in_tuple(compressed_bit_vector_classes, |
| 74 | + // make_pysequence_init_functor()); |
| 75 | + |
| 76 | + // for_each_in_tuple(wavelet_classes, make_pysequence_init_functor()); |
| 77 | + // for_each_in_tuple(csa_classes, make_pysequence_init_functor()); |
| 78 | +} |
0 commit comments