# bmdef.h File Reference

`#include <cassert>`
Include dependency graph for bmdef.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Defines

#define | BM_x86
#define | BM_ASSERT assert
#define | FULL_BLOCK_ADDR bm::all_set<true>::_block._p
#define | IS_VALID_ADDR(addr) (addr && (addr != FULL_BLOCK_ADDR))
#define | IS_FULL_BLOCK(addr) (addr == FULL_BLOCK_ADDR)
#define | IS_EMPTY_BLOCK(addr) (addr == 0)
#define | BMPTR_SETBIT0(ptr) ( ((bm::id64_t)ptr) | 1 )
#define | BMPTR_CLEARBIT0(ptr) ( ((bm::id64_t)ptr) & ~(bm::id64_t)1 )
#define | BMPTR_TESTBIT0(ptr) ( ((bm::id64_t)ptr) & 1 )
#define | BMGAP_PTR(ptr) ((bm::gap_word_t*)BMPTR_CLEARBIT0(ptr))
#define | BMSET_PTRGAP(ptr) ptr = (bm::word_t*)BMPTR_SETBIT0(ptr)
#define | BM_IS_GAP(ptr) ( BMPTR_TESTBIT0(ptr)!=0 )
#define | BMFORCEINLINE inline
#define | BM_SET_MMX_GUARD sse_empty_guard bm_mmx_guard_;
#define | BM_ALIGN16ATTR __attribute__((aligned(16)))
#define | BM_INCWORD_BITCOUNT(cnt, w) cnt += _mm_popcnt_u32(w);

## Define Documentation

#define BM_ALIGN16ATTR __attribute__((aligned(16)))

Definition at line 144 of file bmdef.h.

Referenced by bm::combine_any_operation_with_block(), bm::combine_count_operation_with_block(), bm::sse2_bit_block_calc_count_change(), bm::sse2_bit_count(), and bm::sse2_bit_count_op().

#define BM_ASSERT assert

Definition at line 50 of file bmdef.h.

Referenced by bm::mem_alloc< BA, PA >::alloc_gap_block(), bm::bit_block_any_range(), bm::bit_block_calc_count(), bm::bit_block_calc_count_change(), bm::bit_block_calc_count_range(), bm::bit_convert_to_gap(), bm::bit_count_change32(), bm::bit_count_nonzero_size(), bm::bit_for_each_4(), bm::bit_iblock_make_pcv(), bm::bit_iblock_pcv_stat(), bm::bit_iblock_reduce(), bm::bit_operation_and(), bm::bit_operation_or(), bm::bit_operation_sub(), bm::bit_operation_xor(), bm::bitcmp(), bm::block_range_scan(), bm::globals< T >::bo::bo(), bm::combine_and_sorted(), bm::combine_count_operation_with_block(), bm::bvector< Alloc >::combine_operation(), bm::combine_or(), bm::combine_sub(), bm::combine_xor(), bm::compute_tmatrix_rstat(), bm::bvector< Alloc >::count_range(), bm::iterator_deserializer< BV, SerialIterator >::deserialize(), bm::operation_deserializer< BV >::deserialize(), bm::deserializer< BV, DEC >::deserialize(), bm::deserialize(), bm::deserializer< BV, DEC >::deserialize_gap(), bm::serializer< BV >::encode_bit_interval(), bm::serializer< BV >::encode_gap_block(), bm::export_array(), bm::mem_alloc< BA, PA >::free_gap_block(), bm::bit_out< TEncoder >::gamma(), bm::gap_add_to_bitset_l(), bm::gap_add_value(), bm::gap_and_to_bitset(), bm::gap_bfind(), bm::gap_bit_count_range(), bm::gap_bitset_and_any(), bm::gap_bitset_and_count(), bm::gap_bitset_or_any(), bm::gap_bitset_or_count(), bm::gap_bitset_sub_any(), bm::gap_bitset_sub_count(), bm::gap_bitset_xor_any(), bm::gap_bitset_xor_count(), bm::gap_calc_level(), bm::gap_control_sum(), bm::gap_find_in_block(), bm::gap_init_range_block(), bm::gap_overhead(), bm::gap_set_all(), bm::gap_set_value(), bm::gap_sub_to_bitset(), bm::gap_test(), bm::gap_xor_to_bitset(), bm::bit_grabber< T, BPC >::get(), bm::serial_stream_iterator< DEC >::get_arr_bit(), bm::serial_stream_iterator< DEC >::get_bit(), bm::bvector< Alloc >::get_bit(), bm::serial_stream_iterator< DEC >::get_bit_block(), bm::serial_stream_iterator< DEC >::get_bit_block_AND(), bm::serial_stream_iterator< DEC >::get_bit_block_ASSIGN(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_A(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_AND(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_OR(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_AB(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_BA(), bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_XOR(), bm::serial_stream_iterator< DEC >::get_bit_block_OR(), bm::serial_stream_iterator< DEC >::get_bit_block_SUB(), bm::serial_stream_iterator< DEC >::get_bit_block_XOR(), bm::serial_stream_iterator< DEC >::get_gap_block(), bm::bvector< Alloc >::enumerator::go_first(), bm::bvector< Alloc >::enumerator::go_up(), bm::improve_gap_levels(), bm::serial_stream_iterator< DEC >::next(), bm::operation2metric(), bm::bvector< Alloc >::insert_iterator::operator=(), bm::bvector< Alloc >::operator[](), bm::bit_out< TEncoder >::put_bit(), bm::deseriaizer_base< DEC >::read_gap_block(), bm::deseriaizer_base< DEC >::read_id_list(), bm::serializer< BV >::serialize(), bm::bvector< Alloc >::set_bit(), bm::bvector< Alloc >::set_bit_and(), bm::bvector< Alloc >::set_bit_conditional(), bm::set_gap_level(), bm::bvector< Alloc >::set_range(), bm::setop2op(), bm::serial_stream_iterator< DEC >::skip_mono_blocks(), bm::bvector_mini< A >::swap(), bm::tmatrix_reduce(), bm::tmatrix_restore(), bm::gap_transpose_engine< GT, BT, BLOCK_SIZE >::transpose(), bm::gap_transpose_engine< GT, BT, BLOCK_SIZE >::trestore(), bm::vect_bit_transpose(), and bm::xor_swap().

#define BM_IS_GAP | ( | ptr |  | ) | ( BMPTR_TESTBIT0(ptr)!=0 )

Definition at line 88 of file bmdef.h.

Referenced by bm::bvector< Alloc >::calc_stat(), bm::combine_count_and_operation_with_block(), bm::combine_count_operation_with_block(), bm::bvector< Alloc >::combine_operation(), bm::bvector< Alloc >::combine_operation_with_block(), bm::bvector< Alloc >::compare(), bm::bvector< Alloc >::count_range(), bm::iterator_deserializer< BV, SerialIterator >::deserialize(), bm::distance_operation_any(), bm::bvector< Alloc >::get_bit(), bm::bvector< Alloc >::enumerator::go_first(), bm::bvector< Alloc >::enumerator::go_up(), and bm::serializer< BV >::serialize().

#define BM_SET_MMX_GUARD sse_empty_guard bm_mmx_guard_;

Definition at line 130 of file bmdef.h.

Referenced by bm::bvector< Alloc >::combine_operation(), bm::iterator_deserializer< BV, SerialIterator >::deserialize(), bm::deserializer< BV, DEC >::deserialize(), bm::distance_and_operation(), bm::distance_operation(), bm::distance_operation_any(), bm::bvector< Alloc >::invert(), and bm::bvector< Alloc >::set_range().

#define BM_x86

Definition at line 21 of file bmdef.h.

#define BMFORCEINLINE inline

Definition at line 110 of file bmdef.h.

#define BMGAP_PTR | ( | ptr |  | ) | ((bm::gap_word_t*)BMPTR_CLEARBIT0(ptr))

Definition at line 86 of file bmdef.h.

Referenced by bm::bvector< Alloc >::calc_stat(), bm::combine_any_operation_with_block(), bm::combine_count_and_operation_with_block(), bm::combine_count_operation_with_block(), bm::combine_or(), bm::combine_sub(), bm::combine_xor(), bm::bvector< Alloc >::compare(), bm::bvector< Alloc >::count_range(), bm::deserializer< BV, DEC >::deserialize_gap(), bm::export_array(), bm::bvector< Alloc >::get_bit(), and bm::serializer< BV >::serialize().

#define BMPTR_CLEARBIT0 | ( | ptr |  | ) | ( ((bm::id64_t)ptr) & ~(bm::id64_t)1 )

Definition at line 75 of file bmdef.h.

#define BMPTR_SETBIT0 | ( | ptr |  | ) | ( ((bm::id64_t)ptr) | 1 )

Definition at line 74 of file bmdef.h.

#define BMPTR_TESTBIT0 | ( | ptr |  | ) | ( ((bm::id64_t)ptr) & 1 )

Definition at line 76 of file bmdef.h.

#define BMSET_PTRGAP | ( | ptr |  | ) | ptr = (bm::word_t*)BMPTR_SETBIT0(ptr)

Definition at line 87 of file bmdef.h.

Referenced by bm::iterator_deserializer< BV, SerialIterator >::deserialize().

#define FULL_BLOCK_ADDR bm::all_set<true>::_block._p

Definition at line 60 of file bmdef.h.

Referenced by bm::bit_operation_or(), bm::iterator_deserializer< BV, SerialIterator >::deserialize(), and bm::gap_convert_to_bitset_smart().

#define IS_EMPTY_BLOCK | ( | addr |  | ) | (addr == 0)

Definition at line 63 of file bmdef.h.

Referenced by bm::bit_operation_and(), bm::bit_operation_and_any(), bm::bit_operation_and_count(), bm::bit_operation_or_any(), bm::bit_operation_or_count(), bm::bit_operation_sub_any(), bm::bit_operation_sub_count(), bm::bit_operation_xor_any(), and bm::bit_operation_xor_count().

#define IS_FULL_BLOCK | ( | addr |  | ) | (addr == FULL_BLOCK_ADDR)

Definition at line 62 of file bmdef.h.

Referenced by bm::bit_operation_and(), bm::bit_operation_or(), bm::bit_operation_sub(), and bm::iterator_deserializer< BV, SerialIterator >::deserialize().

#define IS_VALID_ADDR | ( | addr |  | ) | (addr && (addr != FULL_BLOCK_ADDR))

Definition at line 61 of file bmdef.h.

Referenced by bm::bit_operation_and(), bm::bit_operation_or(), bm::bit_operation_sub(), bm::bit_operation_xor(), bm::bvector< Alloc >::calc_stat(), bm::mem_alloc< BA, PA >::free_bit_block(), and bm::mem_alloc< BA, PA >::free_gap_block().