BitMagic-C++
Public Types | Public Member Functions | Protected Attributes
bm::serial_stream_iterator< DEC, BLOCK_IDX > Class Template Reference

Serialization stream iterator. More...

#include <bmserial.h>

Inheritance diagram for bm::serial_stream_iterator< DEC, BLOCK_IDX >:
Inheritance graph
[legend]
Collaboration diagram for bm::serial_stream_iterator< DEC, BLOCK_IDX >:
Collaboration graph
[legend]

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_typeparent_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)
 
 ~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_typedecoder ()
 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)
 
unsigned get_bit_block_OR (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_AND (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_SUB (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_XOR (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_AND (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_OR (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_XOR (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_SUB_AB (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_SUB_BA (bm::word_t *dst_block, bm::word_t *tmp_block)
 
unsigned get_bit_block_COUNT_A (bm::word_t *dst_block, bm::word_t *tmp_block)
 
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
 
void get_inv_arr (bm::word_t *block) BMNOEXCEPT
 
bool try_skip (block_idx_type nb, block_idx_type expect_nb) BMNOEXCEPT
 Try to skip if skip bookmark is available within reach. More...
 

Protected Attributes

get_bit_func_type bit_func_table_ [bm::set_END]
 
decoder_type decoder_
 
bool end_of_stream_
 
block_idx_type bv_size_
 
iterator_state state_
 
unsigned id_cnt_
 Id counter for id list. More...
 
bm::id_t last_id_
 Last id from the id list. More...
 
gap_word_t glevels_ [bm::gap_levels]
 GAP levels. More...
 
unsigned block_type_
 current block type More...
 
block_idx_type block_idx_
 current block index More...
 
block_idx_type mono_block_cnt_
 number of 0 or 1 blocks More...
 
gap_word_t gap_head_
 
gap_word_tblock_idx_arr_
 
- Protected Attributes inherited from bm::deseriaizer_base< DEC, BLOCK_IDX >
bm::gap_word_tid_array_
 ptr to idx array for temp decode use More...
 
block_idx_type bookmark_idx_
 last bookmark block index More...
 
unsigned skip_offset_
 bookmark to skip 256 encoded blocks More...
 
const unsigned char * skip_pos_
 decoder skip position 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) BMNOEXCEPT
 Read binary interpolated list into a bit-set. 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
 

Detailed Description

template<class DEC, typename BLOCK_IDX>
class bm::serial_stream_iterator< DEC, BLOCK_IDX >

Serialization stream iterator.

Iterates blocks and control tokens of serialized bit-stream

Definition at line 667 of file bmserial.h.

Member Typedef Documentation

◆ block_idx_type

template<class DEC , typename BLOCK_IDX >
typedef BLOCK_IDX bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_idx_type

Definition at line 671 of file bmserial.h.

◆ decoder_type

template<class DEC , typename BLOCK_IDX >
typedef deseriaizer_base<DEC, BLOCK_IDX>::decoder_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::decoder_type

Definition at line 670 of file bmserial.h.

◆ get_bit_func_type

template<class DEC , typename BLOCK_IDX >
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 738 of file bmserial.h.

◆ parent_type

template<class DEC , typename BLOCK_IDX >
typedef deseriaizer_base<DEC, block_idx_type> bm::serial_stream_iterator< DEC, BLOCK_IDX >::parent_type

Definition at line 672 of file bmserial.h.

Member Enumeration Documentation

◆ iterator_state

template<class DEC , typename BLOCK_IDX >
enum bm::serial_stream_iterator::iterator_state

iterator is a state machine, this enum encodes its key value

Enumerator
e_unknown 
e_list_ids 

plain int array

e_blocks 

stream of blocks

e_zero_blocks 

one or more zero bit blocks

e_one_blocks 

one or more all-1 bit blocks

e_bit_block 

one bit block

e_gap_block 

one gap block

Definition at line 708 of file bmserial.h.

Constructor & Destructor Documentation

◆ serial_stream_iterator()

template<typename DEC , typename BLOCK_IDX >
bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator ( const unsigned char *  buf)

◆ ~serial_stream_iterator()

template<typename DEC , typename BLOCK_IDX >
bm::serial_stream_iterator< DEC, BLOCK_IDX >::~serial_stream_iterator

Definition at line 4125 of file bmserial.h.

Member Function Documentation

◆ block_idx()

template<class DEC , typename BLOCK_IDX >
block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_idx ( ) const
inline

◆ bv_size()

template<class DEC , typename BLOCK_IDX >
block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::bv_size ( ) const
inline

◆ dec_size()

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::dec_size ( ) const
inline

Return current decoder size.

Definition at line 700 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::decoder_.

◆ decoder()

template<class DEC , typename BLOCK_IDX >
decoder_type& bm::serial_stream_iterator< DEC, BLOCK_IDX >::decoder ( )
inline

Get low level access to the decoder (use carefully)

Definition at line 703 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::decoder_.

◆ get_arr_bit()

template<typename DEC , typename BLOCK_IDX >
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 5541 of file bmserial.h.

References bm::bit_block_set(), BM_ASSERT, bm::set_bit(), bm::set_block_arrbit, and bm::set_block_bit_1bit.

◆ get_bit()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit

Definition at line 5579 of file bmserial.h.

References BM_ASSERT, and bm::set_block_bit_1bit.

◆ get_bit_block()

template<typename DEC , typename BLOCK_IDX >
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 5608 of file bmserial.h.

References BM_ASSERT.

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

◆ get_bit_block_AND()

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_AND ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_ASSIGN()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_ASSIGN ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_A()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_A ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_AND()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_AND ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_B()

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_B ( bm::word_t dst_block,
bm::word_t tmp_block 
)
inline

◆ get_bit_block_COUNT_OR()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_OR ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_SUB_AB()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_SUB_AB ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_SUB_BA()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_SUB_BA ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_COUNT_XOR()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_COUNT_XOR ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_OR()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_OR ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_SUB()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_SUB ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_bit_block_XOR()

template<typename DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_bit_block_XOR ( bm::word_t dst_block,
bm::word_t tmp_block 
)

◆ get_block_type()

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_block_type ( ) const
inline

Get current block type.

Definition at line 777 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_type_.

◆ get_gap_block()

template<typename DEC , typename BLOCK_IDX >
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 5590 of file bmserial.h.

References BM_ASSERT, and bm::set_block_bit_1bit.

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

◆ get_id()

template<class DEC , typename BLOCK_IDX >
bm::id_t bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_id ( ) const
inline

Get last id from the id list.

Definition at line 728 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::last_id_.

◆ get_id_count()

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_id_count ( ) const
inline

Number of ids in the inverted list (valid for e_list_ids)

Definition at line 725 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::id_cnt_.

◆ get_inv_arr()

template<typename DEC , typename BLOCK_IDX >
void bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_inv_arr ( bm::word_t block)

Definition at line 4373 of file bmserial.h.

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

◆ get_state()

template<class DEC , typename BLOCK_IDX >
iterator_state bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_state ( ) const
inline

◆ is_eof()

template<class DEC , typename BLOCK_IDX >
bool bm::serial_stream_iterator< DEC, BLOCK_IDX >::is_eof ( ) const
inline

Returns true if end of bit-stream reached.

Definition at line 682 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::end_of_stream_.

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

◆ next()

template<typename DEC , typename BLOCK_IDX >
void bm::serial_stream_iterator< DEC, BLOCK_IDX >::next

◆ skip_mono_blocks()

template<typename DEC , typename BLOCK_IDX >
serial_stream_iterator< DEC, BLOCK_IDX >::block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::skip_mono_blocks

skip all zero or all-one blocks

Definition at line 4357 of file bmserial.h.

References BM_ASSERT.

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

◆ state()

template<class DEC , typename BLOCK_IDX >
iterator_state bm::serial_stream_iterator< DEC, BLOCK_IDX >::state ( ) const
inline

Returns iterator internal state.

Definition at line 721 of file bmserial.h.

References bm::serial_stream_iterator< DEC, BLOCK_IDX >::state_.

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

◆ try_skip()

template<class DEC , typename BLOCK_IDX >
bool bm::serial_stream_iterator< DEC, BLOCK_IDX >::try_skip ( block_idx_type  nb,
block_idx_type  expect_nb 
)
inline

Field Documentation

◆ bit_func_table_

template<class DEC , typename BLOCK_IDX >
get_bit_func_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::bit_func_table_[bm::set_END]
protected

◆ block_idx_

template<class DEC , typename BLOCK_IDX >
block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_idx_
protected

◆ block_idx_arr_

template<class DEC , typename BLOCK_IDX >
gap_word_t* bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_idx_arr_
protected

◆ block_type_

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::block_type_
protected

current block type

Definition at line 807 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_block_type().

◆ bv_size_

template<class DEC , typename BLOCK_IDX >
block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::bv_size_
protected

◆ decoder_

template<class DEC , typename BLOCK_IDX >
decoder_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::decoder_
protected

◆ end_of_stream_

template<class DEC , typename BLOCK_IDX >
bool bm::serial_stream_iterator< DEC, BLOCK_IDX >::end_of_stream_
protected

Definition at line 800 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::is_eof().

◆ gap_head_

template<class DEC , typename BLOCK_IDX >
gap_word_t bm::serial_stream_iterator< DEC, BLOCK_IDX >::gap_head_
protected

Definition at line 811 of file bmserial.h.

◆ glevels_

template<class DEC , typename BLOCK_IDX >
gap_word_t bm::serial_stream_iterator< DEC, BLOCK_IDX >::glevels_[bm::gap_levels]
protected

GAP levels.

Definition at line 805 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::serial_stream_iterator().

◆ id_cnt_

template<class DEC , typename BLOCK_IDX >
unsigned bm::serial_stream_iterator< DEC, BLOCK_IDX >::id_cnt_
protected

◆ last_id_

template<class DEC , typename BLOCK_IDX >
bm::id_t bm::serial_stream_iterator< DEC, BLOCK_IDX >::last_id_
protected

Last id from the id list.

Definition at line 804 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC, BLOCK_IDX >::get_id().

◆ mono_block_cnt_

template<class DEC , typename BLOCK_IDX >
block_idx_type bm::serial_stream_iterator< DEC, BLOCK_IDX >::mono_block_cnt_
protected

number of 0 or 1 blocks

Definition at line 809 of file bmserial.h.

◆ state_

template<class DEC , typename BLOCK_IDX >
iterator_state bm::serial_stream_iterator< DEC, BLOCK_IDX >::state_
protected

The documentation for this class was generated from the following file: