19 #ifndef RLEBTV__H__INCLUDED__
20 #define RLEBTV__H__INCLUDED__
46 int test(
unsigned pos)
const;
166 cout <<
"GAP Control failed." << endl;
171 for (
unsigned i = 2;
i <
len; ++
i)
178 cout <<
"GAP sequence control failed." << endl;
GAP vector is designed to be very small.
void combine_sub(const gap_vector &vect)
const gap_word_t * get_buf() const
int is_bit_true(unsigned pos) const
Checks if bit pos 1 or 0. Returns 0 if 0 and non zero otherwise.
bool set_bit(unsigned pos)
Sets bit number pos to 1 returns true if operation sucessful, false if GAP threashold reached and we ...
void combine_xor(const gap_vector &vect)
int compare(const gap_vector &vect)
int combine_and(const gap_word_t *other)
void convert_to_bitset(unsigned *dest) const
bool clear_bit(unsigned pos)
Sets bit number pos to 0.
int test(unsigned pos) const
void combine_or(const gap_vector &vect)
unsigned count_range(unsigned left, unsigned right, unsigned *d=0) const
gap_vector(gap_word_t init=0)
bool get_last(unsigned *last) const
gap_word_t m_buf[bm::gap_max_buff_len+3]
unsigned bit_count() const
Counts number of bits ON.
static void DLIST_NAME() init(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
unsigned gap_bit_count_range(const T *const buf, unsigned left, unsigned right) noexcept
Counts 1 bits in GAP buffer in the closed [left, right] range.
gap_word_t * gap_operation_xor(const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize) noexcept
GAP XOR operation.
gap_word_t * gap_operation_or(const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize) noexcept
GAP OR operation.
unsigned gap_test(const T *buf, unsigned pos) noexcept
Tests if bit = pos is true.
unsigned gap_bit_count(const T *buf, unsigned dsize=0) noexcept
Calculates number of bits ON in GAP buffer.
unsigned gap_control_sum(const T *buf) noexcept
Calculates sum of all words in GAP block. (For debugging purposes)
unsigned gap_test_unr(const T *buf, const unsigned pos) noexcept
Tests if bit = pos is true. Analog of bm::gap_test with SIMD unrolling.
void gap_convert_to_bitset(unsigned *dest, const T *buf, unsigned len=0) noexcept
GAP block to bitblock conversion.
gap_word_t * gap_operation_sub(const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize) noexcept
GAP SUB (AND NOT) operation.
gap_word_t * gap_operation_and(const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize) noexcept
GAP AND operation.
unsigned gap_find_last(const T *buf, unsigned *last) noexcept
GAP block find the last set bit.
unsigned gap_set_value(unsigned val, T *buf, unsigned pos, unsigned *is_set) noexcept
Sets or clears bit in the GAP buffer.
int gapcmp(const T *buf1, const T *buf2) noexcept
Lexicographical comparison of GAP buffers.
bm::gap_word_t gap_length(const bm::gap_word_t *buf) noexcept
Returs GAP block length.
unsigned int
A callback function used to compare two keys in a database.
const unsigned gap_max_buff_len
unsigned short gap_word_t
const unsigned gap_max_bits