bm::serial_stream_iterator< DEC > Class Template Reference
[bvector serialization]

Serialization stream iterator. More...

#include <bmserial.h>

Inheritance diagram for bm::serial_stream_iterator< DEC >:
Inheritance graph
[legend]
Collaboration diagram for bm::serial_stream_iterator< DEC >:
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 >
::decoder_type 
decoder_type
typedef unsigned(serial_stream_iterator
< DEC >::* 
get_bit_func_type )(bm::word_t *, bm::word_t *)
 member function pointer for bitset-bitset get operations

Public Member Functions

 serial_stream_iterator (const unsigned char *buf)
unsigned bv_size () const
 serialized bitvector size
bool is_eof () const
 Returns true if end of bit-stream reached.
void next ()
 get next block
void skip_mono_blocks ()
 skip all zero or all-one blocks
unsigned get_bit_block (bm::word_t *dst_block, bm::word_t *tmp_block, set_operation op)
 read bit block, using logical operation
void get_gap_block (bm::gap_word_t *dst_block)
 Read gap block data (with head).
unsigned dec_size () const
 Return current decoder size.
decoder_typedecoder ()
 Get low level access to the decoder (use carefully).
iterator_state state () const
 Returns iterator internal state.
iterator_state get_state () const
unsigned get_id_count () const
 Number of ids in the inverted list (valid for e_list_ids).
bm::id_t get_id () const
 Get last id from the id list.
unsigned block_idx () const
 Get current block index.
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)
 Get array of bits out of the decoder into bit block (Converts inverted list into bits) Returns number of words (bits) being read.
unsigned get_block_type () const
 Get current block type.
unsigned get_bit ()

Protected Attributes

get_bit_func_type bit_func_table_ [bm::set_END]
decoder_type decoder_
bool end_of_stream_
unsigned bv_size_
iterator_state state_
unsigned id_cnt_
 Id counter for id list.
bm::id_t last_id_
 Last id from the id list.
gap_word_t glevels_ [bm::gap_levels]
 GAP levels.
unsigned block_type_
 current block type
unsigned block_idx_
 current block index
unsigned mono_block_cnt_
 number of 0 or 1 blocks
gap_word_t gap_head_

Detailed Description

template<class DEC>
class bm::serial_stream_iterator< DEC >

Serialization stream iterator.

Iterates blocks and control tokens of serialized bit-stream

Definition at line 371 of file bmserial.h.


Member Typedef Documentation

template<class DEC>
typedef deseriaizer_base<DEC>::decoder_type bm::serial_stream_iterator< DEC >::decoder_type

Reimplemented from bm::deseriaizer_base< DEC >.

Definition at line 374 of file bmserial.h.

template<class DEC>
typedef unsigned(serial_stream_iterator<DEC>::* bm::serial_stream_iterator< DEC >::get_bit_func_type)(bm::word_t *, bm::word_t *)

member function pointer for bitset-bitset get operations

Definition at line 438 of file bmserial.h.


Member Enumeration Documentation

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 408 of file bmserial.h.


Constructor & Destructor Documentation

template<class DEC >
bm::serial_stream_iterator< DEC >::serial_stream_iterator ( const unsigned char *  buf  )  [inline]

Member Function Documentation

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::block_idx (  )  const [inline]

Get current block index.

Definition at line 431 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_idx_.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::bv_size (  )  const [inline]

serialized bitvector size

Definition at line 379 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::bv_size_.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::dec_size (  )  const [inline]

Return current decoder size.

Definition at line 400 of file bmserial.h.

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

template<class DEC>
decoder_type& bm::serial_stream_iterator< DEC >::decoder (  )  [inline]

Get low level access to the decoder (use carefully).

Definition at line 403 of file bmserial.h.

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

template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_arr_bit ( bm::word_t dst_block,
bool  clear_target = true 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit (  )  [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block ( bm::word_t dst_block,
bm::word_t tmp_block,
set_operation  op 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_AND ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_ASSIGN ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_A ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_AND ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_B ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_OR ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_AB ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_BA ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_XOR ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_OR ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_SUB ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC >
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_XOR ( bm::word_t dst_block,
bm::word_t tmp_block 
) [inline]
template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_block_type (  )  const [inline]

Get current block type.

Definition at line 477 of file bmserial.h.

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

template<class DEC >
void bm::serial_stream_iterator< DEC >::get_gap_block ( bm::gap_word_t dst_block  )  [inline]
template<class DEC>
bm::id_t bm::serial_stream_iterator< DEC >::get_id (  )  const [inline]

Get last id from the id list.

Definition at line 428 of file bmserial.h.

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

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_id_count (  )  const [inline]

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

Definition at line 425 of file bmserial.h.

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

template<class DEC>
iterator_state bm::serial_stream_iterator< DEC >::get_state (  )  const [inline]

Definition at line 423 of file bmserial.h.

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

template<class DEC>
bool bm::serial_stream_iterator< DEC >::is_eof (  )  const [inline]

Returns true if end of bit-stream reached.

Definition at line 382 of file bmserial.h.

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

Referenced by bm::serial_stream_iterator< DEC >::next().

template<class DEC >
void bm::serial_stream_iterator< DEC >::next (  )  [inline]

get next block

Definition at line 1762 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_idx_, bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::serial_stream_iterator< DEC >::e_blocks, bm::serial_stream_iterator< DEC >::e_gap_block, bm::serial_stream_iterator< DEC >::e_list_ids, bm::serial_stream_iterator< DEC >::e_one_blocks, bm::serial_stream_iterator< DEC >::e_unknown, bm::serial_stream_iterator< DEC >::e_zero_blocks, bm::serial_stream_iterator< DEC >::end_of_stream_, bm::serial_stream_iterator< DEC >::gap_head_, bm::serial_stream_iterator< DEC >::id_cnt_, bm::serial_stream_iterator< DEC >::is_eof(), bm::serial_stream_iterator< DEC >::last_id_, bm::serial_stream_iterator< DEC >::mono_block_cnt_, 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_8one, bm::set_block_8zero, bm::set_block_aone, bm::set_block_arrbit, bm::set_block_arrgap, 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_interval, bm::set_block_end, bm::set_block_gap, bm::set_block_gap_egamma, bm::set_block_gapbit, bm::set_total_blocks, and bm::serial_stream_iterator< DEC >::state_.

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

template<class DEC >
void bm::serial_stream_iterator< DEC >::skip_mono_blocks (  )  [inline]
template<class DEC>
iterator_state bm::serial_stream_iterator< DEC >::state (  )  const [inline]

Returns iterator internal state.

Definition at line 421 of file bmserial.h.

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


Field Documentation

template<class DEC>
get_bit_func_type bm::serial_stream_iterator< DEC >::bit_func_table_[bm::set_END] [protected]
template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::block_idx_ [protected]
template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::block_type_ [protected]
template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::bv_size_ [protected]
template<class DEC>
decoder_type bm::serial_stream_iterator< DEC >::decoder_ [protected]
template<class DEC>
bool bm::serial_stream_iterator< DEC >::end_of_stream_ [protected]
template<class DEC>
gap_word_t bm::serial_stream_iterator< DEC >::gap_head_ [protected]
template<class DEC>
gap_word_t bm::serial_stream_iterator< DEC >::glevels_[bm::gap_levels] [protected]

GAP levels.

Definition at line 490 of file bmserial.h.

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

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::id_cnt_ [protected]
template<class DEC>
bm::id_t bm::serial_stream_iterator< DEC >::last_id_ [protected]

Last id from the id list.

Definition at line 489 of file bmserial.h.

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

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::mono_block_cnt_ [protected]

number of 0 or 1 blocks

Definition at line 494 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC >::next(), and bm::serial_stream_iterator< DEC >::skip_mono_blocks().

template<class DEC>
iterator_state bm::serial_stream_iterator< DEC >::state_ [protected]

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

Generated on Sun Apr 25 09:37:46 2010 for BitMagic by  doxygen 1.6.1