GAP functions
[BitMagic C++ Library]

Collaboration diagram for GAP functions:


Detailed Description

GAP functions implement different opereations on GAP compressed blocks and serve as a minimal building blocks.


Classes

struct  bm::gap_len_table< T >
 Default GAP lengths table. More...
struct  bm::gap_len_table_min< T >
 Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets. More...

Functions

template<typename T>
unsigned bm::gap_test (const T *buf, unsigned pos)
 Tests if bit = pos is true.
template<typename T>
unsigned bm::gap_bit_count (const T *buf, unsigned dsize=0)
 Calculates number of bits ON in GAP buffer.
template<typename T>
int bm::gapcmp (const T *buf1, const T *buf2)
 Lexicographical comparison of GAP buffers.
template<typename T, class F>
unsigned bm::gap_buff_any_op (const T *vect1, unsigned vect1_mask, const T *vect2, unsigned vect2_mask, F f)
 Abstract distance test operation for GAP buffers. Receives functor F as a template argument.
template<typename T>
unsigned bm::gap_set_value (unsigned val, T *buf, unsigned pos, unsigned *is_set)
 Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument Sets or clears bit in the GAP buffer.
template<typename T>
int bm::gap_find_in_block (const T *buf, unsigned nbit, bm::id_t *prev)
 Searches for the next 1 bit in the GAP block.
template<typename T>
void bm::gap_sub_to_bitset (unsigned *dest, const T *buf)
 SUB (AND NOT) GAP block to bitblock.
template<typename T>
void bm::gap_xor_to_bitset (unsigned *dest, const T *buf)
 XOR GAP block to bitblock.
template<typename T>
void bm::gap_add_to_bitset (unsigned *dest, const T *buf)
 Adds(OR) GAP block to bitblock.
template<typename T>
void bm::gap_and_to_bitset (unsigned *dest, const T *buf)
 ANDs GAP block to bitblock.
template<typename T>
void bm::gap_convert_to_bitset (unsigned *dest, const T *buf)
 GAP block to bitblock conversion.
template<typename T>
void bm::gap_convert_to_bitset (unsigned *dest, const T *buf, unsigned dest_len)
 GAP block to bitblock conversion.
template<typename T>
unsigned * bm::gap_convert_to_bitset_smart (unsigned *dest, const T *buf, id_t set_max)
 Smart GAP block to bitblock conversion.
template<typename T>
unsigned bm::gap_control_sum (const T *buf)
 Calculates sum of all words in GAP block. (For debugging purposes).
template<class T>
void bm::gap_set_all (T *buf, unsigned set_max, unsigned value)
 Sets all bits to 0 or 1 (GAP).
template<class T>
void bm::gap_init_range_block (T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)
 Init gap block so it has block in it (can be whole block).
template<typename T>
void bm::gap_invert (T *buf)
 Inverts all bits in the GAP buffer.
template<typename T>
bool bm::gap_is_all_zero (const T *buf, unsigned set_max)
 Temporary inverts all bits in the GAP buffer.Checks if GAP block is all-zero.
template<typename T>
bool bm::gap_is_all_one (const T *buf, unsigned set_max)
 Checks if GAP block is all-one.
template<typename T>
unsigned bm::gap_length (const T *buf)
 Returs GAP block length.
template<typename T>
unsigned bm::gap_capacity (const T *buf, const T *glevel_len)
 Returs GAP block capacity.
template<typename T>
unsigned bm::gap_limit (const T *buf, const T *glevel_len)
 Returs GAP block capacity limit.
template<typename T>
unsigned bm::gap_level (const T *buf)
 Returs GAP blocks capacity level.
template<typename T>
void bm::set_gap_level (T *buf, unsigned level)
 Sets GAP block capacity level.
template<typename T>
int bm::gap_calc_level (int len, const T *glevel_len)
 Calculates GAP block capacity level.
template<typename T>
unsigned bm::gap_free_elements (const T *buf, const T *glevel_len)
 Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length.
template<typename T>
unsigned bm::bit_convert_to_gap (T *dest, const unsigned *src, bm::id_t bits, unsigned dest_len)
 Converts bit block to GAP.
template<class T, class F>
void bm::for_each_gap_dbit (const T *buf, F &func)
 Iterate gap block as delta-bits with a functor.
template<typename D, typename T>
bm::gap_convert_to_arr (D *dest, const T *buf, unsigned dest_len, bool invert=false)
 Convert gap block into array of ints corresponding to 1 bits.
gap_word_tbm::gap_operation_and (const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize)
 GAP AND operation.
unsigned bm::gap_operation_any_and (const gap_word_t *vect1, const gap_word_t *vect2)
 GAP AND operation test.
gap_word_tbm::gap_operation_xor (const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize)
 GAP XOR operation.
unsigned bm::gap_operation_any_xor (const gap_word_t *vect1, const gap_word_t *vect2)
 GAP XOR operation test.
gap_word_tbm::gap_operation_or (const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize)
 GAP OR operation.
gap_word_tbm::gap_operation_sub (const gap_word_t *vect1, const gap_word_t *vect2, gap_word_t *tmp_buf, unsigned &dsize)
 GAP SUB (AND NOT) operation.
unsigned bm::gap_operation_any_sub (const gap_word_t *vect1, const gap_word_t *vect2)
 GAP SUB operation test.
template<typename T>
unsigned bm::gap_overhead (const T *length, const T *length_end, const T *glevel_len)
 Convert bit block into an array of ints corresponding to 1 bits Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table).
template<typename T>
bool bm::improve_gap_levels (const T *length, const T *length_end, T *glevel_len)
 Finds optimal gap blocks lengths.


Function Documentation

template<typename T>
unsigned bm::bit_convert_to_gap T *  dest,
const unsigned *  src,
bm::id_t  bits,
unsigned  dest_len
 

Converts bit block to GAP.

Parameters:
dest - Destinatio GAP buffer.
src - Source bitblock buffer.
bits - Number of bits to convert.
dest_len - length of the dest. buffer.
Returns:
New length of GAP block or 0 if conversion failed (insufficicent space).

Definition at line 2266 of file bmfunc.h.

References BM_ASSERT, len, and mask.

Referenced by bm::blocks_manager< Alloc, MS >::block_opt_func::operator()().

template<class T, class F>
void bm::for_each_gap_dbit const T *  buf,
F &  func
 

Iterate gap block as delta-bits with a functor.

Definition at line 2356 of file bmfunc.h.

template<typename T>
void bm::gap_add_to_bitset unsigned *  dest,
const T *  buf
 

Adds(OR) GAP block to bitblock.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.

Definition at line 1495 of file bmfunc.h.

References BM_ASSERT, and bm::or_bit_block().

Referenced by bm::gap_convert_to_bitset().

template<typename T>
void bm::gap_and_to_bitset unsigned *  dest,
const T *  buf
 

ANDs GAP block to bitblock.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.

Definition at line 1527 of file bmfunc.h.

References BM_ASSERT, and bm::sub_bit_block().

template<typename T>
unsigned bm::gap_bit_count const T *  buf,
unsigned  dsize = 0
 

Calculates number of bits ON in GAP buffer.

Parameters:
buf - GAP buffer pointer.
dsize - buffer size
Returns:
Number of non-zero bits.

Definition at line 618 of file bmfunc.h.

Referenced by gap_vector::bit_count(), bm::blocks_manager< Alloc, MS >::block_bitcount(), bm::combine_count_operation_with_block(), bm::bvector< Alloc, MS >::combine_operation_with_block(), and bm::serializer< BV >::encode_gap_block().

template<typename T, class F>
unsigned bm::gap_buff_any_op const T *  vect1,
unsigned  vect1_mask,
const T *  vect2,
unsigned  vect2_mask,
f
 

Abstract distance test operation for GAP buffers. Receives functor F as a template argument.

Parameters:
vect1 - operand 1 GAP encoded buffer.
vect1_mask - XOR mask for starting bitflag for vector1 can be 0 or 1 (1 inverts the vector)
vect2 - operand 2 GAP encoded buffer.
vect2_mask - same as vect1_mask
f - operation functor.
Note:
Internal function.
Returns:
non zero value if operation result returns any 1 bit

Definition at line 955 of file bmfunc.h.

References f(), and bm::gap_max_bits.

Referenced by bm::gap_operation_any_and(), bm::gap_operation_any_sub(), and bm::gap_operation_any_xor().

template<typename T>
int bm::gap_calc_level int  len,
const T *  glevel_len
[inline]
 

Calculates GAP block capacity level.

Parameters:
len - GAP buffer length.
glevel_len - GAP lengths table
Returns:
GAP block capacity level. -1 if block does not fit any level.

Definition at line 2194 of file bmfunc.h.

References BM_ASSERT, and bm::gap_levels.

Referenced by bm::bvector< Alloc, MS >::combine_operation_with_block(), bm::deserializer< BV, DEC >::deserialize_gap(), bm::gap_overhead(), bm::blocks_manager< Alloc, MS >::block_opt_func::operator()(), and bm::blocks_manager< Alloc, MS >::gap_level_func::operator()().

template<typename T>
unsigned bm::gap_capacity const T *  buf,
const T *  glevel_len
 

Returs GAP block capacity.

Parameters:
buf - GAP buffer pointer.
Returns:
GAP block capacity.

Definition at line 2136 of file bmfunc.h.

Referenced by bm::bvector< Alloc, MS >::calc_stat(), bm::mem_alloc< BA, PA >::free_gap_block(), bm::gap_free_elements(), and bm::blocks_manager< Alloc, MS >::block_opt_func::operator()().

template<typename T>
unsigned bm::gap_control_sum const T *  buf  ) 
 

Calculates sum of all words in GAP block. (For debugging purposes).

Note:
For debugging and testing ONLY.
Parameters:
buf - GAP buffer pointer.
Returns:
Sum of all words.

Definition at line 1962 of file bmfunc.h.

References BM_ASSERT.

Referenced by gap_vector::control().

template<typename D, typename T>
D bm::gap_convert_to_arr D *  dest,
const T *  buf,
unsigned  dest_len,
bool  invert = false
 

Convert gap block into array of ints corresponding to 1 bits.

Definition at line 2411 of file bmfunc.h.

References invert.

Referenced by bm::bvector< Alloc, MS >::combine_operation_with_block(), and bm::serializer< BV >::encode_gap_block().

template<typename T>
void bm::gap_convert_to_bitset unsigned *  dest,
const T *  buf,
unsigned  dest_len
 

GAP block to bitblock conversion.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.
dest_size - length of the destination buffer.

Definition at line 1919 of file bmfunc.h.

References bm::gap_add_to_bitset().

template<typename T>
void bm::gap_convert_to_bitset unsigned *  dest,
const T *  buf
 

GAP block to bitblock conversion.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.

Definition at line 1903 of file bmfunc.h.

References bm::bit_block_set(), and bm::gap_add_to_bitset().

Referenced by bm::miniset< A, N >::convert_buf(), bm::blocks_manager< Alloc, MS >::convert_gap2bitset(), gap_vector::convert_to_bitset(), bm::deserializer< BV, DEC >::deserialize_gap(), bm::gap_convert_to_bitset_smart(), and bm::blocks_manager< Alloc, MS >::gap_level_func::operator()().

template<typename T>
unsigned* bm::gap_convert_to_bitset_smart unsigned *  dest,
const T *  buf,
id_t  set_max
 

Smart GAP block to bitblock conversion.

Checks if GAP block is ALL-ZERO or ALL-ON. In those cases returns pointer on special static bitblocks.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.
set_max - max possible bitset length

Definition at line 1940 of file bmfunc.h.

References FULL_BLOCK_ADDR, and bm::gap_convert_to_bitset().

template<typename T>
int bm::gap_find_in_block const T *  buf,
unsigned  nbit,
bm::id_t prev
 

Searches for the next 1 bit in the GAP block.

Parameters:
buf - GAP buffer
nbit - bit index to start checking from.
prev - returns previously checked value

Definition at line 1190 of file bmfunc.h.

References BM_ASSERT, bm::gap_bfind(), and bm::gap_max_bits.

template<typename T>
unsigned bm::gap_free_elements const T *  buf,
const T *  glevel_len
[inline]
 

Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length.

Parameters:
buf - GAP buffer pointer glevel_len - GAP lengths table
Returns:
Number of free GAP elements

Definition at line 2215 of file bmfunc.h.

References bm::gap_capacity(), bm::gap_length(), and len.

template<class T>
void bm::gap_init_range_block T *  buf,
unsigned  from,
unsigned  to,
unsigned  value,
unsigned  set_max
 

Init gap block so it has block in it (can be whole block).

Parameters:
buf - GAP buffer pointer.
from - one block start
to - one block end
value - (block value)1 or 0
set_max - max possible bitset length

Definition at line 2014 of file bmfunc.h.

References BM_ASSERT, and bm::gap_set_all().

Referenced by bm::bvector< Alloc, MS >::set_range_no_check().

template<typename T>
void bm::gap_invert T *  buf  ) 
 

Inverts all bits in the GAP buffer.

Parameters:
buf - GAP buffer pointer.

Definition at line 2064 of file bmfunc.h.

Referenced by bm::gap_operation_or(), and bm::blocks_manager< Alloc, MS >::block_invert_func::operator()().

template<typename T>
bool bm::gap_is_all_one const T *  buf,
unsigned  set_max
 

Checks if GAP block is all-one.

Parameters:
buf - GAP buffer pointer.
set_max - max possible bitset length
Returns:
true if all-one.

Definition at line 2110 of file bmfunc.h.

Referenced by bm::blocks_manager< Alloc, MS >::is_block_one(), bm::blocks_manager< Alloc, MS >::block_opt_func::operator()(), and bm::blocks_manager< Alloc, MS >::gap_level_func::operator()().

template<typename T>
bool bm::gap_is_all_zero const T *  buf,
unsigned  set_max
 

Temporary inverts all bits in the GAP buffer.Checks if GAP block is all-zero.

Parameters:
buf - GAP buffer pointer.
set_max - max possible bitset length
Returns:
true if all-zero.

Definition at line 2096 of file bmfunc.h.

Referenced by bm::combine_any_operation_with_block(), bm::bvector< Alloc, MS >::combine_operation_with_block(), bm::blocks_manager< Alloc, MS >::is_block_zero(), bm::blocks_manager< Alloc, MS >::block_opt_func::operator()(), bm::blocks_manager< Alloc, MS >::gap_level_func::operator()(), and bm::blocks_manager< Alloc, MS >::block_any_func::operator()().

template<typename T>
unsigned bm::gap_length const T *  buf  ) 
 

Returs GAP block length.

Parameters:
buf - GAP buffer pointer.
Returns:
GAP block length.

Definition at line 2122 of file bmfunc.h.

Referenced by bm::blocks_manager< Alloc, MS >::allocate_gap_block(), bm::blocks_manager< Alloc, MS >::block_count_change_func::block_count(), bm::bvector< Alloc, MS >::calc_stat(), gap_vector::combine_and(), gap_vector::combine_or(), gap_vector::combine_sub(), gap_vector::combine_xor(), gap_vector::control(), bm::deserializer< BV, DEC >::deserialize_gap(), bm::serializer< BV >::encode_gap_block(), bm::blocks_manager< Alloc, MS >::extend_gap_block(), bm::serializer< BV >::gamma_gap_block(), bm::gap_free_elements(), bm::blocks_manager< Alloc, MS >::block_copy_func::operator()(), bm::blocks_manager< Alloc, MS >::block_opt_func::operator()(), bm::blocks_manager< Alloc, MS >::gap_level_func::operator()(), print_gap(), and bm::deseriaizer_base< DEC >::read_gap_block().

template<typename T>
unsigned bm::gap_level const T *  buf  ) 
 

Returs GAP blocks capacity level.

Parameters:
buf - GAP buffer pointer.
Returns:
GAP block capacity level.

Definition at line 2164 of file bmfunc.h.

Referenced by bm::bvector< Alloc, MS >::combine_operation_with_block(), bm::blocks_manager< Alloc, MS >::extend_gap_block(), and bm::blocks_manager< Alloc, MS >::block_copy_func::operator()().

template<typename T>
unsigned bm::gap_limit const T *  buf,
const T *  glevel_len
 

Returs GAP block capacity limit.

Parameters:
buf - GAP buffer pointer.
glevel_len - GAP lengths table (gap_len_table)
Returns:
GAP block limit.

Definition at line 2151 of file bmfunc.h.

Referenced by bm::bvector< Alloc, MS >::and_bit_no_check(), bm::bvector< Alloc, MS >::combine_operation_with_block(), bm::combine_or(), bm::combine_sub(), bm::combine_xor(), bm::bvector< Alloc, MS >::set_bit_conditional_impl(), and bm::bvector< Alloc, MS >::set_bit_no_check().

gap_word_t* bm::gap_operation_and const gap_word_t vect1,
const gap_word_t vect2,
gap_word_t tmp_buf,
unsigned &  dsize
[inline]
 

GAP AND operation.

Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
tmp_buf - pointer on temporary buffer
dsize - out size of the destination
Returns:
Result pointer (tmp_buf OR vect1)

Definition at line 2912 of file bmfunc.h.

References bm::and_op(), and bm::gap_buff_op().

Referenced by gap_vector::combine_and(), and bm::combine_count_operation_with_block().

unsigned bm::gap_operation_any_and const gap_word_t vect1,
const gap_word_t vect2
[inline]
 

GAP AND operation test.

Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
Returns:
non zero value if operation returns any 1 bit

Definition at line 2935 of file bmfunc.h.

References bm::and_op(), and bm::gap_buff_any_op().

Referenced by bm::combine_any_operation_with_block().

unsigned bm::gap_operation_any_sub const gap_word_t vect1,
const gap_word_t vect2
[inline]
 

GAP SUB operation test.

Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
Returns:
non zero value if operation returns any 1 bit

Definition at line 3062 of file bmfunc.h.

References bm::and_op(), and bm::gap_buff_any_op().

Referenced by bm::combine_any_operation_with_block().

unsigned bm::gap_operation_any_xor const gap_word_t vect1,
const gap_word_t vect2
[inline]
 

GAP XOR operation test.

Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
Returns:
non zero value if operation returns any 1 bit

Definition at line 2983 of file bmfunc.h.

References bm::gap_buff_any_op(), and bm::xor_op().

Referenced by bm::combine_any_operation_with_block().

gap_word_t* bm::gap_operation_or const gap_word_t vect1,
const gap_word_t vect2,
gap_word_t tmp_buf,
unsigned &  dsize
[inline]
 

GAP OR operation.

Function performs OR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
tmp_buf - pointer on temporary buffer
dsize - out destination size
Returns:
Result pointer (tmp_buf)

Definition at line 3008 of file bmfunc.h.

References bm::and_op(), bm::gap_buff_op(), and bm::gap_invert().

Referenced by bm::combine_any_operation_with_block(), bm::combine_count_operation_with_block(), and gap_vector::combine_or().

gap_word_t* bm::gap_operation_sub const gap_word_t vect1,
const gap_word_t vect2,
gap_word_t tmp_buf,
unsigned &  dsize
[inline]
 

GAP SUB (AND NOT) operation.

Function performs SUB logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
tmp_buf - pointer on temporary buffer
dsize - out destination size
Returns:
Result pointer (tmp_buf)

Definition at line 3038 of file bmfunc.h.

References bm::and_op(), and bm::gap_buff_op().

Referenced by bm::combine_count_operation_with_block(), and gap_vector::combine_sub().

gap_word_t* bm::gap_operation_xor const gap_word_t vect1,
const gap_word_t vect2,
gap_word_t tmp_buf,
unsigned &  dsize
[inline]
 

GAP XOR operation.

Function performs XOR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.

Parameters:
vect1 - operand 1
vect2 - operand 2
tmp_buf - pointer on temporary buffer
dsize - out destination size
Returns:
Result pointer (tmp_buf)

Definition at line 2959 of file bmfunc.h.

References bm::gap_buff_op(), and bm::xor_op().

Referenced by bm::combine_count_operation_with_block(), and gap_vector::combine_xor().

template<typename T>
unsigned bm::gap_overhead const T *  length,
const T *  length_end,
const T *  glevel_len
 

Convert bit block into an array of ints corresponding to 1 bits Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table).

Definition at line 4422 of file bmfunc.h.

References BM_ASSERT, bm::gap_calc_level(), bm::gap_levels, and len.

template<class T>
void bm::gap_set_all T *  buf,
unsigned  set_max,
unsigned  value
 

Sets all bits to 0 or 1 (GAP).

Parameters:
buf - GAP buffer pointer.
set_max - max possible bitset length

Definition at line 1993 of file bmfunc.h.

References BM_ASSERT.

Referenced by bm::blocks_manager< Alloc, MS >::check_allocate_block(), bm::gap_init_range_block(), bm::miniset< A, N >::init_gapbuf(), bm::blocks_manager< Alloc, MS >::block_zero_func::operator()(), and bm::deseriaizer_base< DEC >::read_gap_block().

template<typename T>
unsigned bm::gap_set_value unsigned  val,
T *  buf,
unsigned  pos,
unsigned *  is_set
 

Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument Sets or clears bit in the GAP buffer.

Parameters:
val - new bit value
buf - GAP buffer.
pos - Index of bit to set.
is_set - (OUT) flag if bit was actually set.
Returns:
New GAP buffer length.

Definition at line 1098 of file bmfunc.h.

References BM_ASSERT, bm::gap_bfind(), bm::gap_max_bits, and memmove.

Referenced by bm::bvector< Alloc, MS >::and_bit_no_check(), gap_vector::clear_bit(), bm::bvector< Alloc, MS >::combine_operation_with_block(), bm::combine_or(), bm::combine_sub(), bm::combine_xor(), bm::deseriaizer_base< DEC >::read_gap_block(), bm::miniset< A, N >::set(), gap_vector::set_bit(), bm::bvector< Alloc, MS >::set_bit_conditional_impl(), and bm::bvector< Alloc, MS >::set_bit_no_check().

template<typename T>
void bm::gap_sub_to_bitset unsigned *  dest,
const T *  buf
 

SUB (AND NOT) GAP block to bitblock.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.

Definition at line 1431 of file bmfunc.h.

References BM_ASSERT, and bm::sub_bit_block().

template<typename T>
unsigned bm::gap_test const T *  buf,
unsigned  pos
 

Tests if bit = pos is true.

Parameters:
buf - GAP buffer pointer.
pos - index of the element.
Returns:
true if position is in "1" gap

Definition at line 454 of file bmfunc.h.

References BM_ASSERT, and bm::gap_max_bits.

Referenced by bm::bvector< Alloc, MS >::and_bit_no_check(), bm::blocks_manager< Alloc, MS >::block_count_change_func::block_count(), bm::combine_sub(), bm::combine_xor(), bm::bvector< Alloc, MS >::get_bit(), gap_vector::is_bit_true(), bm::bvector< Alloc, MS >::set_bit_conditional_impl(), gap_vector::test(), and bm::miniset< A, N >::test().

template<typename T>
void bm::gap_xor_to_bitset unsigned *  dest,
const T *  buf
 

XOR GAP block to bitblock.

Parameters:
dest - bitblock buffer pointer.
buf - GAP buffer pointer.

Definition at line 1463 of file bmfunc.h.

References BM_ASSERT, and bm::xor_bit_block().

template<typename T>
int bm::gapcmp const T *  buf1,
const T *  buf2
 

Lexicographical comparison of GAP buffers.

Parameters:
buf1 - First GAP buffer pointer.
buf2 - Second GAP buffer pointer.
Returns:
<0 - less, =0 - equal, >0 - greater.

Definition at line 806 of file bmfunc.h.

Referenced by gap_vector::compare().

template<typename T>
bool bm::improve_gap_levels const T *  length,
const T *  length_end,
T *  glevel_len
 

Finds optimal gap blocks lengths.

Parameters:
length - first element of GAP lengths array
length_end - end of the GAP lengths array
glevel_len - destination GAP lengths array

Definition at line 4450 of file bmfunc.h.

References BM_ASSERT.

Referenced by OptimGAPTest(), and bm::bvector< Alloc, MS >::optimize_gap_size().

template<typename T>
void bm::set_gap_level T *  buf,
unsigned  level
 

Sets GAP block capacity level.

Parameters:
buf - GAP buffer pointer.
level new GAP block capacity level.

Definition at line 2177 of file bmfunc.h.

References BM_ASSERT, and bm::gap_levels.

Referenced by bm::bvector< Alloc, MS >::combine_operation_with_block(), and bm::deserializer< BV, DEC >::deserialize_gap().


Generated on Mon Dec 7 16:05:27 2009 for NCBI C++ ToolKit by  doxygen 1.4.6
Modified on Mon Dec 07 16:24:37 2009 by modify_doxy.py rev. 173732