54 unsigned* cnt = (
unsigned*)handle_ptr;
58 cout << bit_idx <<
", ";
87 const unsigned char* bits,
90 for (
unsigned i = 0; i < size; ++i)
94 cout << offset + bits[i] <<
", ";
112 cout << offset + i <<
", ";
132 auto en = bv.get_enumerator(0);
133 for (
unsigned cnt = 0; en.valid() && cnt < 5; ++en, ++cnt)
145 void* ctx_ptr = &cnt;
147 cout <<
"\nvisitor return code = " << res << endl;
157 cout <<
"\nvisitor return code = " << res << endl;
166 cout <<
"\nRange traversal: [" << from <<
".." << to <<
"]" << endl;
174 cout <<
"\nvisitor return code = " << res << endl;
182 cout <<
"\nvisitor return code = " << res << endl;
187 catch(std::exception& ex)
189 std::cerr << ex.what() << std::endl;
Compressed bit-vector bvector<> container, set algebraic methods, traversal iterators.
Algorithms for bvector<> (main include)
pre-processor un-defines to avoid global space pollution (internal)
Bitvector Bit-vector container with runtime compression of bits.
bvector_size_type size_type
int visit_each_bit(const BV &bv, void *handle_ptr, bit_visitor_callback_type callback_ptr)
bvector visitor scanner to traverse each 1 bit using C callback
int visit_each_bit_range(const BV &bv, typename BV::size_type left, typename BV::size_type right, void *handle_ptr, bit_visitor_callback_type callback_ptr)
bvector visitor scanner to traverse each bits in range (C callback)
int for_each_bit_range(const BV &bv, typename BV::size_type left, typename BV::size_type right, Func &bit_functor)
bit-vector range visitor to traverse each 1 bit
int for_each_bit(const BV &bv, Func &bit_functor)
bit-vector visitor scanner to traverse each 1 bit using C++ visitor
static int bit_visitor_callback(void *handle_ptr, bm::id_t bit_idx) noexcept
Visitor calss for bm::for_each_bit() algorithm It is NOT a classic functor (with function call operat...
int add_bits(size_type offset, const unsigned char *bits, unsigned size)
Decoded bits callback.
int add_range(size_type offset, size_type size)
Decoded range callback.
bm::bvector<>::size_type size_type