35
#ifndef OPENCV_FLANN_DYNAMIC_BITSET_H_
36
#define OPENCV_FLANN_DYNAMIC_BITSET_H_
40
#ifndef FLANN_USE_BOOST
41
# define FLANN_USE_BOOST 0
45
#include <boost/dynamic_bitset.hpp>
46
typedef
boost::dynamic_bitset<> DynamicBitset;
64
DynamicBitset() : size_(0)
71
DynamicBitset(
size_t
sz)
81
std::fill(bitset_.begin(), bitset_.end(), 0);
89
return
bitset_.empty();
96
std::fill(bitset_.begin(), bitset_.end(), 0);
102
void
reset(
size_t
index)
104
bitset_[index / cell_bit_size_] &= ~(size_t(1) << (index % cell_bit_size_));
113
void
reset_block(
size_t
index)
115
bitset_[index / cell_bit_size_] = 0;
124
bitset_.resize(sz / cell_bit_size_ + 1);
130
void
set(
size_t
index)
132
bitset_[index / cell_bit_size_] |= size_t(1) << (index % cell_bit_size_);
146
bool
test(
size_t
index)
const
148
return
(bitset_[index / cell_bit_size_] & (
size_t(1) << (index % cell_bit_size_))) != 0;
152
std::vector<size_t> bitset_;
154
static
const
unsigned
int
cell_bit_size_ = CHAR_BIT *
sizeof(size_t);