BitMagicC++Library
Data Structures | Namespaces | Macros | Enumerations | Functions | Variables
bmserial.h File Reference
#include "bm.h"
#include "encoding.h"
#include "bmdef.h"
#include "bmfunc.h"
#include "bmtrans.h"
#include "bmalgo_impl.h"
#include "bmutil.h"
#include "bmbuffer.h"
#include "bmundef.h"
Include dependency graph for bmserial.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  bm::serializer< BV >
 Bit-vector serialization class. More...
 
class  bm::deseriaizer_base< DEC >
 Base deserialization class. More...
 
class  bm::deserializer< BV, DEC >
 Deserializer for bit-vector. More...
 
class  bm::iterator_deserializer< BV, SerialIterator >
 Iterator to walk forward the serialized stream. More...
 
class  bm::serial_stream_iterator< DEC >
 Serialization stream iterator. More...
 
class  bm::operation_deserializer< BV >
 Deserializer, performs logical operations between bit-vector and serialized bit-vector. More...
 

Namespaces

 bm
 

Macros

#define BM__H__INCLUDED__
 
#define SER_NEXT_GRP(enc, nb, B_1ZERO, B_8ZERO, B_16ZERO, B_32ZERO)
 
#define BM_SET_ONE_BLOCKS(x)
 

Enumerations

enum  bm::serialization_header_mask {
  bm::BM_HM_DEFAULT = 1, bm::BM_HM_RESIZE = (1 << 1), bm::BM_HM_ID_LIST = (1 << 2), bm::BM_HM_NO_BO = (1 << 3),
  bm::BM_HM_NO_GAPL = (1 << 4)
}
 
enum  bm::serialization_flags { bm::BM_NO_BYTE_ORDER = 1, bm::BM_NO_GAP_LENGTH = (1 << 1) }
 Bit mask flags for serialization algorithm. More...
 

Functions

template<class BV >
unsigned bm::serialize (const BV &bv, unsigned char *buf, bm::word_t *temp_block=0, unsigned serialization_flags=0)
 Saves bitvector into memory. More...
 
template<class BV >
unsigned bm::serialize (BV &bv, unsigned char *buf, unsigned serialization_flags=0)
 Saves bitvector into memory. Allocates temporary memory block for bvector. More...
 
template<class BV >
unsigned bm::deserialize (BV &bv, const unsigned char *buf, bm::word_t *temp_block=0)
 Bitvector deserialization from memory. More...
 

Variables

const unsigned char bm::set_block_end = 0
 End of serialization. More...
 
const unsigned char bm::set_block_1zero = 1
 One all-zero block. More...
 
const unsigned char bm::set_block_1one = 2
 One block all-set (1111...) More...
 
const unsigned char bm::set_block_8zero = 3
 Up to 256 zero blocks. More...
 
const unsigned char bm::set_block_8one = 4
 Up to 256 all-set blocks. More...
 
const unsigned char bm::set_block_16zero = 5
 Up to 65536 zero blocks. More...
 
const unsigned char bm::set_block_16one = 6
 UP to 65536 all-set blocks. More...
 
const unsigned char bm::set_block_32zero = 7
 Up to 4G zero blocks. More...
 
const unsigned char bm::set_block_32one = 8
 UP to 4G all-set blocks. More...
 
const unsigned char bm::set_block_azero = 9
 All other blocks zero. More...
 
const unsigned char bm::set_block_aone = 10
 All other blocks one. More...
 
const unsigned char bm::set_block_bit = 11
 Plain bit block. More...
 
const unsigned char bm::set_block_sgapbit = 12
 SGAP compressed bitblock. More...
 
const unsigned char bm::set_block_sgapgap = 13
 SGAP compressed GAP block. More...
 
const unsigned char bm::set_block_gap = 14
 Plain GAP block. More...
 
const unsigned char bm::set_block_gapbit = 15
 GAP compressed bitblock. More...
 
const unsigned char bm::set_block_arrbit = 16
 List of bits ON. More...
 
const unsigned char bm::set_block_bit_interval = 17
 Interval block. More...
 
const unsigned char bm::set_block_arrgap = 18
 List of bits ON (GAP block) More...
 
const unsigned char bm::set_block_bit_1bit = 19
 Bit block with 1 bit ON. More...
 
const unsigned char bm::set_block_gap_egamma = 20
 Gamma compressed GAP block. More...
 
const unsigned char bm::set_block_arrgap_egamma = 21
 Gamma compressed delta GAP array. More...
 
const unsigned char bm::set_block_bit_0runs = 22
 Bit block with encoded zero intervals. More...
 
const unsigned char bm::set_block_arrgap_egamma_inv = 23
 Gamma compressed inverted delta GAP array. More...
 
const unsigned char bm::set_block_arrgap_inv = 24
 List of bits OFF (GAP block) More...
 

Macro Definition Documentation

◆ BM__H__INCLUDED__

#define BM__H__INCLUDED__

Definition at line 30 of file bmserial.h.

◆ BM_SET_ONE_BLOCKS

#define BM_SET_ONE_BLOCKS (   x)
Value:
{\
unsigned end_block = i + x; \
for (;i < end_block; ++i) \
bman.set_block_all_set(i); \
} \
--i

Definition at line 120 of file bmserial.h.

Referenced by bm::deserializer< BV, DEC >::deserialize().

◆ SER_NEXT_GRP

#define SER_NEXT_GRP (   enc,
  nb,
  B_1ZERO,
  B_8ZERO,
  B_16ZERO,
  B_32ZERO 
)
Value:
if (nb == 1) \
enc.put_8(B_1ZERO); \
else if (nb < 256) \
{ \
enc.put_8(B_8ZERO); \
enc.put_8((unsigned char)nb); \
} \
else if (nb < 65536) \
{ \
enc.put_8(B_16ZERO); \
enc.put_16((unsigned short)nb); \
} \
else \
{\
enc.put_8(B_32ZERO); \
enc.put_32(nb); \
}

Definition at line 100 of file bmserial.h.

Referenced by bm::serializer< bvector_type >::serialize().