BitMagic-C++
|
Serialization stream iterator. More...
#include <bmserial.h>
Public Types | |
enum | iterator_state { e_unknown = 0 , e_list_ids , e_blocks , e_zero_blocks , e_one_blocks , e_bit_block , e_gap_block } |
iterator is a state machine, this enum encodes its key value More... | |
typedef deseriaizer_base< DEC, BLOCK_IDX >::decoder_type | decoder_type |
typedef BLOCK_IDX | block_idx_type |
typedef deseriaizer_base< DEC, block_idx_type > | parent_type |
typedef unsigned(serial_stream_iterator< DEC, BLOCK_IDX >::* | get_bit_func_type) (bm::word_t *, bm::word_t *) |
member function pointer for bitset-bitset get operations More... | |
Public Member Functions | |
serial_stream_iterator (const unsigned char *buf) | |
More... | |
~serial_stream_iterator () | |
block_idx_type | bv_size () const |
serialized bitvector size More... | |
bool | is_eof () const |
Returns true if end of bit-stream reached. More... | |
void | next () |
get next block More... | |
block_idx_type | skip_mono_blocks () BMNOEXCEPT |
skip all zero or all-one blocks More... | |
unsigned | get_bit_block (bm::word_t *dst_block, bm::word_t *tmp_block, set_operation op) |
read bit block, using logical operation More... | |
void | get_gap_block (bm::gap_word_t *dst_block) |
Read gap block data (with head) More... | |
unsigned | dec_size () const |
Return current decoder size. More... | |
decoder_type & | decoder () |
Get low level access to the decoder (use carefully) More... | |
iterator_state | state () const BMNOEXCEPT |
Returns iterator internal state. More... | |
iterator_state | get_state () const BMNOEXCEPT |
unsigned | get_id_count () const BMNOEXCEPT |
Number of ids in the inverted list (valid for e_list_ids) More... | |
bm::id_t | get_id () const BMNOEXCEPT |
Get last id from the id list. More... | |
block_idx_type | block_idx () const BMNOEXCEPT |
Get current block index. More... | |
unsigned | get_bit_block_ASSIGN (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_OR (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_AND (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_SUB (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_XOR (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_AND (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_OR (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_XOR (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_SUB_AB (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_SUB_BA (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_A (bm::word_t *dst_block, bm::word_t *tmp_block) |
More... | |
unsigned | get_bit_block_COUNT_B (bm::word_t *dst_block, bm::word_t *tmp_block) |
unsigned | get_arr_bit (bm::word_t *dst_block, bool clear_target=true) BMNOEXCEPT |
Get array of bits out of the decoder into bit block (Converts inverted list into bits) Returns number of words (bits) being read. More... | |
unsigned | get_block_type () const BMNOEXCEPT |
Get current block type. More... | |
unsigned | get_bit () BMNOEXCEPT |
More... | |
void | get_inv_arr (bm::word_t *block) BMNOEXCEPT |
More... | |
bool | try_skip (block_idx_type nb, block_idx_type expect_nb) BMNOEXCEPT |
Try to skip if skip bookmark is available within reach. More... | |
Additional Inherited Members | |
Protected Types inherited from bm::deseriaizer_base< DEC, BLOCK_IDX > | |
typedef DEC | decoder_type |
typedef BLOCK_IDX | block_idx_type |
typedef bm::bit_in< DEC > | bit_in_type |
Protected Member Functions inherited from bm::deseriaizer_base< DEC, BLOCK_IDX > | |
deseriaizer_base () | |
void | read_gap_block (decoder_type &decoder, unsigned block_type, bm::gap_word_t *dst_block, bm::gap_word_t &gap_head) |
Read GAP block from the stream. More... | |
unsigned | read_id_list (decoder_type &decoder, unsigned block_type, bm::gap_word_t *dst_arr) |
Read list of bit ids. More... | |
void | read_bic_arr (decoder_type &decoder, bm::word_t *blk, unsigned block_type) BMNOEXCEPT |
Read binary interpolated list into a bit-set. More... | |
unsigned | read_bic_sb_arr (decoder_type &decoder, unsigned block_type, unsigned *dst_arr, unsigned *sb_idx) |
Read list of bit ids for super-blocks. More... | |
void | read_bic_gap (decoder_type &decoder, bm::word_t *blk) BMNOEXCEPT |
Read binary interpolated gap blocks into a bitset. More... | |
void | read_bic_arr_inv (decoder_type &decoder, bm::word_t *blk) BMNOEXCEPT |
Read inverted binary interpolated list into a bit-set. More... | |
void | read_digest0_block (decoder_type &decoder, bm::word_t *blk) BMNOEXCEPT |
Read digest0-type bit-block. More... | |
block_idx_type | try_skip (decoder_type &decoder, block_idx_type nb, block_idx_type expect_nb) BMNOEXCEPT |
Try to skip if skip bookmark is available within reach. More... | |
Static Protected Member Functions inherited from bm::deseriaizer_base< DEC, BLOCK_IDX > | |
static void | read_0runs_block (decoder_type &decoder, bm::word_t *blk) BMNOEXCEPT |
read bit-block encoded as runs More... | |
static const char * | err_msg () BMNOEXCEPT |
Serialization stream iterator.
Iterates blocks and control tokens of serialized bit-stream
Definition at line 770 of file bmserial.h.
typedef unsigned(serial_stream_iterator<DEC, BLOCK_IDX>::* bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_func_type) (bm::word_t *, bm::word_t *) |
member function pointer for bitset-bitset get operations
Definition at line 840 of file bmserial.h.
enum bm::serial_stream_iterator::iterator_state |
iterator is a state machine, this enum encodes its key value
Definition at line 811 of file bmserial.h.
|
inline |
Get current block index.
Definition at line 834 of file bmserial.h.
|
inline |
serialized bitvector size
Definition at line 782 of file bmserial.h.
|
inline |
Return current decoder size.
Definition at line 803 of file bmserial.h.
|
inline |
Get low level access to the decoder (use carefully)
Definition at line 806 of file bmserial.h.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_arr_bit | ( | bm::word_t * | dst_block, |
bool | clear_target = true |
||
) |
Get array of bits out of the decoder into bit block (Converts inverted list into bits) Returns number of words (bits) being read.
Definition at line 6285 of file bmserial.h.
References bm::bit_block_set(), BM_ASSERT, bm::set_bit(), bm::set_block_arrbit, and bm::set_block_bit_1bit.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit |
Definition at line 6323 of file bmserial.h.
References BM_ASSERT, and bm::set_block_bit_1bit.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block, | ||
set_operation | op | ||
) |
read bit block, using logical operation
Definition at line 6352 of file bmserial.h.
References BM_ASSERT.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_AND | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5303 of file bmserial.h.
References bm::bit_block_and(), bm::bit_block_set(), BM_ASSERT, IS_VALID_ADDR, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, and bm::set_block_size.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_ASSIGN | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5127 of file bmserial.h.
References bm::bit_block_copy(), bm::bit_block_set(), BM_ASSERT, IS_VALID_ADDR, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_gapbit, and bm::set_block_size.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5627 of file bmserial.h.
References bm::bit_block_count(), bm::bit_block_set(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_A | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5712 of file bmserial.h.
References bm::bit_block_count(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, and bm::set_block_size.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_AND | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5796 of file bmserial.h.
References bm::bit_block_set(), bm::bit_operation_and_count(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_OR | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5882 of file bmserial.h.
References bm::bit_block_set(), bm::bit_operation_or_count(), bm::bit_recomb(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, bm::bitblock_sum_adapter::sum(), and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_SUB_AB | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 6087 of file bmserial.h.
References bm::bit_block_set(), bm::bit_operation_sub_count(), bm::bit_recomb(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, bm::bitblock_sum_adapter::sum(), and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_SUB_BA | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 6190 of file bmserial.h.
References bm::bit_block_set(), bm::bit_operation_sub_count(), bm::bit_recomb(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, bm::bitblock_sum_adapter::sum(), and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_XOR | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5984 of file bmserial.h.
References bm::bit_block_set(), bm::bit_operation_xor_count(), bm::bit_recomb(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_size, bm::bitblock_sum_adapter::sum(), and bm::word_bitcount().
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_OR | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5227 of file bmserial.h.
References bm::bit_block_or(), BM_ASSERT, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, and bm::set_block_size.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_SUB | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5523 of file bmserial.h.
References bm::bit_block_set(), bm::bit_block_sub(), BM_ASSERT, IS_VALID_ADDR, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, and bm::set_block_size.
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_XOR | ( | bm::word_t * | dst_block, |
bm::word_t * | tmp_block | ||
) |
Definition at line 5417 of file bmserial.h.
References bm::bit_block_set(), bm::bit_block_xor(), BM_ASSERT, IS_VALID_ADDR, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, and bm::set_block_size.
|
inline |
Get current block type.
Definition at line 880 of file bmserial.h.
void bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_gap_block | ( | bm::gap_word_t * | dst_block | ) |
Read gap block data (with head)
Definition at line 6334 of file bmserial.h.
References BM_ASSERT, and bm::set_block_bit_1bit.
|
inline |
Get last id from the id list.
Definition at line 831 of file bmserial.h.
|
inline |
Number of ids in the inverted list (valid for e_list_ids)
Definition at line 828 of file bmserial.h.
void bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_inv_arr | ( | bm::word_t * | block | ) |
Definition at line 5105 of file bmserial.h.
References bm::bit_block_set(), and bm::clear_bit().
|
inline |
Returns true if end of bit-stream reached.
Definition at line 785 of file bmserial.h.
void bm::serial_stream_iterator< DEC, BLOCK_IDX >::next |
get next block
Definition at line 4855 of file bmserial.h.
References BM_ASSERT, BM_FALLTHROUGH, bm::set_block_16one, bm::set_block_16zero, bm::set_block_1one, bm::set_block_1zero, bm::set_block_32one, bm::set_block_32zero, bm::set_block_64one, bm::set_block_8one, bm::set_block_8zero, bm::set_block_aone, bm::set_block_arr_bienc, bm::set_block_arr_bienc_8bh, bm::set_block_arr_bienc_inv, bm::set_block_arrbit, bm::set_block_arrbit_inv, bm::set_block_arrgap, bm::set_block_arrgap_bienc, bm::set_block_arrgap_bienc_inv, bm::set_block_arrgap_bienc_inv_v2, bm::set_block_arrgap_bienc_v2, bm::set_block_arrgap_egamma, bm::set_block_arrgap_egamma_inv, bm::set_block_arrgap_inv, bm::set_block_azero, bm::set_block_bit, bm::set_block_bit_0runs, bm::set_block_bit_1bit, bm::set_block_bit_digest0, bm::set_block_bit_interval, bm::set_block_bitgap_bienc, bm::set_block_end, bm::set_block_gap, bm::set_block_gap_bienc, bm::set_block_gap_bienc_v2, bm::set_block_gap_egamma, bm::set_block_gapbit, bm::set_block_ref_eq, bm::set_block_xor_ref16, bm::set_block_xor_ref16_um, bm::set_block_xor_ref32, bm::set_block_xor_ref32_um, bm::set_block_xor_ref8, bm::set_block_xor_ref8_um, bm::set_nb_bookmark16, bm::set_nb_bookmark24, bm::set_nb_bookmark32, bm::set_nb_sync_mark16, bm::set_nb_sync_mark24, bm::set_nb_sync_mark32, bm::set_nb_sync_mark48, bm::set_nb_sync_mark64, bm::set_nb_sync_mark8, bm::set_sblock_bienc, and bm::set_total_blocks.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
serial_stream_iterator< DEC, BLOCK_IDX >::block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::skip_mono_blocks |
|
inline |
Returns iterator internal state.
Definition at line 824 of file bmserial.h.
|
inline |
Try to skip if skip bookmark is available within reach.
Definition at line 889 of file bmserial.h.
References bm::deseriaizer_base< DEC, BLOCK_IDX >::try_skip().
|
protected |
Definition at line 900 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
current block index
Definition at line 913 of file bmserial.h.
|
protected |
Definition at line 917 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
current block type
Definition at line 912 of file bmserial.h.
|
protected |
Definition at line 906 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
Definition at line 904 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
GAP levels.
Definition at line 910 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
Definition at line 902 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
Id counter for id list.
Definition at line 908 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().
|
protected |
Last id from the id list.
Definition at line 909 of file bmserial.h.
|
protected |
number of 0 or 1 blocks
Definition at line 914 of file bmserial.h.
|
protected |
Definition at line 907 of file bmserial.h.
Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().