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

Search Toolkit Book for bm::serial_stream_iterator

#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]
List of all members.

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

Public Types

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
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...

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
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.

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_


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


Member Enumeration Documentation

template<class DEC>
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 366 of file bmserial.h.


Constructor & Destructor Documentation

template<class DEC>
bm::serial_stream_iterator< DEC >::serial_stream_iterator const unsigned char *  buf  ) 
 

Definition at line 1705 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::bit_func_table_, bm::BM_HM_ID_LIST, bm::BM_HM_NO_BO, bm::BM_HM_RESIZE, bm::serial_stream_iterator< DEC >::bv_size_, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_blocks, bm::serial_stream_iterator< DEC >::e_list_ids, bm::gap_levels, bm::serial_stream_iterator< DEC >::glevels_, bm::serial_stream_iterator< DEC >::id_cnt_, bm::serial_stream_iterator< DEC >::next(), bm::set_AND, bm::set_ASSIGN, bm::set_COUNT, bm::set_COUNT_A, bm::set_COUNT_AND, bm::set_COUNT_B, bm::set_COUNT_OR, bm::set_COUNT_SUB_AB, bm::set_COUNT_SUB_BA, bm::set_COUNT_XOR, bm::set_OR, bm::set_SUB, bm::set_XOR, and bm::serial_stream_iterator< DEC >::state_.


Member Function Documentation

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

Get current block index.

Definition at line 389 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 340 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 358 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 361 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
 

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

References bm::bit_block_set(), BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::set_bit(), bm::set_block_arrbit, and bm::set_block_bit_1bit.

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
 

read bit block, using logical operation

Definition at line 2789 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::bit_func_table_, bm::serial_stream_iterator< DEC >::block_idx_, BM_ASSERT, bm::serial_stream_iterator< DEC >::e_bit_block, bm::serial_stream_iterator< DEC >::e_blocks, and bm::serial_stream_iterator< DEC >::state_.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_AND bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2059 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, and bm::set_block_bit_0runs.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_ASSIGN bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 1916 of file bmserial.h.

References bm::bit_block_set(), BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, and bm::set_block_bit_0runs.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2245 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

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

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_A bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2302 of file bmserial.h.

References bm::bit_block_calc_count(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, and bm::set_block_bit_0runs.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_AND bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2365 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

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]
 

Definition at line 423 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::get_bit_block_COUNT().

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_OR bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2424 of file bmserial.h.

References bm::bit_recomb(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

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
 

Definition at line 2580 of file bmserial.h.

References bm::bit_recomb(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

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
 

Definition at line 2659 of file bmserial.h.

References bm::bit_recomb(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_XOR bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2502 of file bmserial.h.

References bm::bit_recomb(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::word_bitcount().

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_OR bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 1997 of file bmserial.h.

References bm::bit_recomb(), bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, bm::set_block_bit_0runs, and bm::set_block_bit_interval.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_SUB bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2186 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, and bm::set_block_bit_0runs.

template<class DEC>
unsigned bm::serial_stream_iterator< DEC >::get_bit_block_XOR bm::word_t dst_block,
bm::word_t tmp_block
 

Definition at line 2126 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_type_, BM_ASSERT, bm::serial_stream_iterator< DEC >::decoder_, bm::serial_stream_iterator< DEC >::e_bit_block, bm::set_block_bit, and bm::set_block_bit_0runs.

template<class DEC>
void bm::serial_stream_iterator< DEC >::get_gap_block bm::gap_word_t dst_block  ) 
 

Read gap block data (with head).

Definition at line 2771 of file bmserial.h.

References bm::serial_stream_iterator< DEC >::block_idx_, BM_ASSERT, bm::serial_stream_iterator< DEC >::e_blocks, bm::serial_stream_iterator< DEC >::e_gap_block, bm::deseriaizer_base< DEC >::read_gap_block(), bm::set_block_bit_1bit, and bm::serial_stream_iterator< DEC >::state_.

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 386 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 383 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 381 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 343 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  ) 
 

get next block

Definition at line 1786 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, and bm::serial_stream_iterator< DEC >::state_.

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

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

Returns iterator internal state.

Definition at line 379 of file bmserial.h.

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


Member Data Documentation

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

Definition at line 435 of file bmserial.h.

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

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

current block index

Definition at line 446 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC >::block_idx(), bm::serial_stream_iterator< DEC >::get_bit_block(), bm::serial_stream_iterator< DEC >::get_gap_block(), and bm::serial_stream_iterator< DEC >::next().

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

current block type

Definition at line 445 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC >::get_bit_block_AND(), 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(), and bm::serial_stream_iterator< DEC >::next().

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

Definition at line 439 of file bmserial.h.

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

template<class DEC>
decoder_type bm::serial_stream_iterator< DEC >::decoder_ [protected]
 

Definition at line 437 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC >::dec_size(), bm::serial_stream_iterator< DEC >::decoder(), bm::serial_stream_iterator< DEC >::get_arr_bit(), 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 >::next(), and bm::serial_stream_iterator< DEC >::serial_stream_iterator().

template<class DEC>
bool bm::serial_stream_iterator< DEC >::end_of_stream_ [protected]
 

Definition at line 438 of file bmserial.h.

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

template<class DEC>
gap_word_t bm::serial_stream_iterator< DEC >::gap_head_ [protected]
 

Definition at line 449 of file bmserial.h.

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

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

GAP levels.

Definition at line 443 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]
 

Id counter for id list.

Definition at line 441 of file bmserial.h.

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

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

Last id from the id list.

Definition at line 442 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 447 of file bmserial.h.

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

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

Definition at line 440 of file bmserial.h.

Referenced by bm::serial_stream_iterator< DEC >::get_bit_block(), bm::serial_stream_iterator< DEC >::get_gap_block(), bm::serial_stream_iterator< DEC >::get_state(), bm::serial_stream_iterator< DEC >::next(), bm::serial_stream_iterator< DEC >::serial_stream_iterator(), and bm::serial_stream_iterator< DEC >::state().


The documentation for this class was generated from the following file:
Generated on Mon Dec 7 16:07:07 2009 for NCBI C++ ToolKit by  doxygen 1.4.6
Modified on Mon Dec 07 16:24:38 2009 by modify_doxy.py rev. 173732