27
27
<li><a href="functions.html"><span>Data Fields</span></a></li>
30
<div class="navpath"><a class="el" href="a00110.html">bm</a>::<a class="el" href="a00080.html">serializer</a>
30
<div class="navpath"><a class="el" href="a00115.html">bm</a>::<a class="el" href="a00044.html">bvector</a>::<a class="el" href="a00080.html">reference</a>
33
33
<div class="contents">
34
<h1>bm::serializer< BV > Class Template Reference<br/>
34
<h1>bm::bvector< Alloc, MS >::reference Class Reference<br/>
36
[<a class="el" href="a00121.html">bvector serialization</a>]</small>
37
</h1><!-- doxytag: class="bm::serializer" -->
38
<p>Bit-vector serialization class.
36
[<a class="el" href="a00118.html">The Main bvector<> Group</a>]</small>
37
</h1><!-- doxytag: class="bm::bvector::reference" -->
38
<p>Class <a class="el" href="a00080.html" title="Class reference implements an object for bit assignment.">reference</a> implements an object for bit assignment.
39
39
<a href="#_details">More...</a></p>
41
<p><code>#include <<a class="el" href="a00092_source.html">bmserial.h</a>></code></p>
41
<p><code>#include <<a class="el" href="a00087_source.html">bm.h</a>></code></p>
42
42
<table border="0" cellpadding="0" cellspacing="0">
43
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
44
<tr><td class="memItemLeft" align="right" valign="top">typedef BV::allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a></td></tr>
45
<tr><td class="memItemLeft" align="right" valign="top">typedef BV::blocks_manager_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a33209dcd954f9cadff5a3379108d84e0">blocks_manager_type</a></td></tr>
46
43
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
47
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a49b063cc7e0d53b8875f893bff37c7fa">serializer</a> (const <a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a> &alloc=<a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a>())</td></tr>
48
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a6cb13dcbfb820fc7e90a959937f2f461">~serializer</a> ()</td></tr>
49
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ad433d790f07103d39c5f15a6caaf2823">set_compression_level</a> (unsigned clevel)</td></tr>
50
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set compression level. <a href="#ad433d790f07103d39c5f15a6caaf2823"></a><br/></td></tr>
51
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ada73fe9103470fc726968cd0e8dbe04f">get_compression_level</a> () const </td></tr>
52
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get compression level. <a href="#ada73fe9103470fc726968cd0e8dbe04f"></a><br/></td></tr>
53
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#af747ada0a8f77d79d73b34443595f4d4">serialize</a> (const BV &bv, unsigned char *buf, unsigned buf_size)</td></tr>
54
<tr><td class="mdescLeft"> </td><td class="mdescRight">Bitvector serilization into memory block. <a href="#af747ada0a8f77d79d73b34443595f4d4"></a><br/></td></tr>
55
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a5b19026c2e928c639f09da4a4e1235ab">gap_length_serialization</a> (bool value)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set GAP length serialization (serializes GAP levels of the original vector). <a href="#a5b19026c2e928c639f09da4a4e1235ab"></a><br/></td></tr>
57
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a892b124d42bb939485e47d197b8dc1ac">byte_order_serialization</a> (bool value)</td></tr>
58
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set byte-order serialization (for cross platform compatibility). <a href="#a892b124d42bb939485e47d197b8dc1ac"></a><br/></td></tr>
59
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
60
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a341d5819f2f1164172f4c0c4771ec941">encode_header</a> (const BV &bv, <a class="el" href="a00061.html">bm::encoder</a> &enc)</td></tr>
61
<tr><td class="mdescLeft"> </td><td class="mdescRight">Encode serialization header information. <a href="#a341d5819f2f1164172f4c0c4771ec941"></a><br/></td></tr>
62
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a77bfac165158b3a018654d88fbed0121">encode_gap_block</a> (<a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> *gap_block, <a class="el" href="a00061.html">bm::encoder</a> &enc)</td></tr>
63
<tr><td class="mdescLeft"> </td><td class="mdescRight">Encode GAP block. <a href="#a77bfac165158b3a018654d88fbed0121"></a><br/></td></tr>
64
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#aa7eac0e670c3ff98404a5f1dcec1ef33">gamma_gap_block</a> (<a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> *gap_block, <a class="el" href="a00061.html">bm::encoder</a> &enc)</td></tr>
65
<tr><td class="mdescLeft"> </td><td class="mdescRight">Encode GAP block with Elias Gamma coder. <a href="#aa7eac0e670c3ff98404a5f1dcec1ef33"></a><br/></td></tr>
66
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a88e75dd5bc8234634b21c7d3dcddc8c6">gamma_gap_array</a> (const <a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> *gap_block, unsigned arr_len, <a class="el" href="a00061.html">bm::encoder</a> &enc, bool inverted=false)</td></tr>
67
<tr><td class="mdescLeft"> </td><td class="mdescRight">Encode GAP block as delta-array with Elias Gamma coder. <a href="#a88e75dd5bc8234634b21c7d3dcddc8c6"></a><br/></td></tr>
68
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a2c005feac8bc059af3333234c52739ed">encode_bit_interval</a> (const <a class="el" href="a00110.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *blk, <a class="el" href="a00061.html">bm::encoder</a> &enc, unsigned size_control)</td></tr>
69
<tr><td class="mdescLeft"> </td><td class="mdescRight">Encode BIT block with repeatable runs of zeroes. <a href="#a2c005feac8bc059af3333234c52739ed"></a><br/></td></tr>
44
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ace927b54c909478e30a5dd38ccb0c0d6">reference</a> (<a class="el" href="a00044.html">bvector</a>< Alloc, MS > &bv, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> position)</td></tr>
45
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a46fc4910419c5ea5de6158660fada675">reference</a> (const <a class="el" href="a00080.html">reference</a> &ref)</td></tr>
46
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a4d531a670ed0e8cfca01342fe02f030e">operator bool</a> () const </td></tr>
47
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ac597a766c4942da598682c4917ee41c6">operator=</a> (const <a class="el" href="a00080.html">reference</a> &ref) const </td></tr>
48
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ae7fd4a0de8fe3d984322e8a690feeb5a">operator=</a> (bool value) const </td></tr>
49
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ab761552f565e9ecfe263fd8325d50852">operator==</a> (const <a class="el" href="a00080.html">reference</a> &ref) const </td></tr>
50
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a78514f588110835ecd21f3c8737b6a3f">operator&=</a> (bool value) const </td></tr>
51
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#acbf8b97f7b52f1c9b81a1d9129986cff">operator|=</a> (bool value) const </td></tr>
52
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a94e3b8c46d1f83c5999c8eaf426b8e9b">operator^=</a> (bool value) const </td></tr>
53
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#aa214fa361c24c57c9fd4d26441ff6c12">operator!</a> () const </td></tr>
54
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a70357e67d8022147971ad970a80108d0">operator~</a> () const </td></tr>
55
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00080.html">reference</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a31f8e1425e1563f1f5890b77f736f323">flip</a> ()</td></tr>
71
57
<hr/><a name="_details"></a><h2>Detailed Description</h2>
72
<h3>template<class BV><br/>
73
class bm::serializer< BV ></h3>
75
<p>Bit-vector serialization class. </p>
76
<p>Class designed to convert sparse bit-vector into a block of memory ready for file or database storage or network transfer. </p>
77
<dl><dt><b>Examples: </b></dt><dd>
78
<p><a class="el" href="a00004.html#_a13">sample4.cpp</a>.</p>
81
<p>Definition at line <a class="el" href="a00092_source.html#l00145">145</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
82
<hr/><h2>Member Typedef Documentation</h2>
83
<a class="anchor" id="a59fca7741f95b36a196773ac1810c52c"></a><!-- doxytag: member="bm::serializer::allocator_type" ref="a59fca7741f95b36a196773ac1810c52c" args="" -->
85
<div class="memproto">
86
<div class="memtemplate">
87
template<class BV> </div>
88
<table class="memname">
90
<td class="memname">typedef BV::allocator_type <a class="el" href="a00080.html">bm::serializer</a>< BV >::<a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a></td>
96
<p>Definition at line <a class="el" href="a00092_source.html#l00148">148</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
100
<a class="anchor" id="a33209dcd954f9cadff5a3379108d84e0"></a><!-- doxytag: member="bm::serializer::blocks_manager_type" ref="a33209dcd954f9cadff5a3379108d84e0" args="" -->
101
<div class="memitem">
102
<div class="memproto">
103
<div class="memtemplate">
104
template<class BV> </div>
105
<table class="memname">
107
<td class="memname">typedef BV::blocks_manager_type <a class="el" href="a00080.html">bm::serializer</a>< BV >::<a class="el" href="a00080.html#a33209dcd954f9cadff5a3379108d84e0">blocks_manager_type</a></td>
113
<p>Definition at line <a class="el" href="a00092_source.html#l00149">149</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
58
<h3>template<class Alloc, class MS><br/>
59
class bm::bvector< Alloc, MS >::reference</h3>
61
<p>Class <a class="el" href="a00080.html" title="Class reference implements an object for bit assignment.">reference</a> implements an object for bit assignment. </p>
62
<p>Since C++ does not provide with build-in bit type supporting l-value operations we have to emulate it. </p>
64
<p>Definition at line <a class="el" href="a00087_source.html#l00140">140</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
117
65
<hr/><h2>Constructor & Destructor Documentation</h2>
118
<a class="anchor" id="a49b063cc7e0d53b8875f893bff37c7fa"></a><!-- doxytag: member="bm::serializer::serializer" ref="a49b063cc7e0d53b8875f893bff37c7fa" args="(const allocator_type &alloc=allocator_type())" -->
119
<div class="memitem">
120
<div class="memproto">
121
<div class="memtemplate">
122
template<class BV > </div>
123
<table class="memname">
125
<td class="memname"><a class="el" href="a00080.html">bm::serializer</a>< BV >::<a class="el" href="a00080.html">serializer</a> </td>
127
<td class="paramtype">const <a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a> & </td>
128
<td class="paramname"> <em>alloc</em> = <code><a class="el" href="a00080.html#a59fca7741f95b36a196773ac1810c52c">allocator_type</a>()</code></td>
129
<td> ) </td>
130
<td><code> [inline]</code></td>
136
<p>Definition at line <a class="el" href="a00092_source.html#l00488">488</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
140
<a class="anchor" id="a6cb13dcbfb820fc7e90a959937f2f461"></a><!-- doxytag: member="bm::serializer::~serializer" ref="a6cb13dcbfb820fc7e90a959937f2f461" args="()" -->
141
<div class="memitem">
142
<div class="memproto">
143
<div class="memtemplate">
144
template<class BV > </div>
145
<table class="memname">
147
<td class="memname"><a class="el" href="a00080.html">bm::serializer</a>< BV >::~<a class="el" href="a00080.html">serializer</a> </td>
149
<td class="paramname"></td>
150
<td> ) </td>
151
<td><code> [inline]</code></td>
157
<p>Definition at line <a class="el" href="a00092_source.html#l00511">511</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
66
<a class="anchor" id="ace927b54c909478e30a5dd38ccb0c0d6"></a><!-- doxytag: member="bm::bvector::reference::reference" ref="ace927b54c909478e30a5dd38ccb0c0d6" args="(bvector< Alloc, MS > &bv, bm::id_t position)" -->
68
<div class="memproto">
69
<div class="memtemplate">
70
template<class Alloc, class MS> </div>
71
<table class="memname">
73
<td class="memname"><a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::reference </td>
75
<td class="paramtype"><a class="el" href="a00044.html">bvector</a>< Alloc, MS > & </td>
76
<td class="paramname"> <em>bv</em>, </td>
79
<td class="paramkey"></td>
81
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td>
82
<td class="paramname"> <em>position</em></td><td> </td>
87
<td></td><td></td><td><code> [inline]</code></td>
93
<p>Definition at line <a class="el" href="a00087_source.html#l00143">143</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
97
<a class="anchor" id="a46fc4910419c5ea5de6158660fada675"></a><!-- doxytag: member="bm::bvector::reference::reference" ref="a46fc4910419c5ea5de6158660fada675" args="(const reference &ref)" -->
99
<div class="memproto">
100
<div class="memtemplate">
101
template<class Alloc, class MS> </div>
102
<table class="memname">
104
<td class="memname"><a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::reference </td>
106
<td class="paramtype">const <a class="el" href="a00080.html">reference</a> & </td>
107
<td class="paramname"> <em>ref</em></td>
108
<td> ) </td>
109
<td><code> [inline]</code></td>
115
<p>Definition at line <a class="el" href="a00087_source.html#l00148">148</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
161
119
<hr/><h2>Member Function Documentation</h2>
162
<a class="anchor" id="a892b124d42bb939485e47d197b8dc1ac"></a><!-- doxytag: member="bm::serializer::byte_order_serialization" ref="a892b124d42bb939485e47d197b8dc1ac" args="(bool value)" -->
163
<div class="memitem">
164
<div class="memproto">
165
<div class="memtemplate">
166
template<class BV > </div>
167
<table class="memname">
169
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::byte_order_serialization </td>
171
<td class="paramtype">bool </td>
172
<td class="paramname"> <em>value</em></td>
173
<td> ) </td>
174
<td><code> [inline]</code></td>
180
<p>Set byte-order serialization (for cross platform compatibility). </p>
181
<dl><dt><b>Parameters:</b></dt><dd>
182
<table border="0" cellspacing="2" cellpadding="0">
183
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- TRUE serialization format includes byte-order marker </td></tr>
188
<p>Definition at line <a class="el" href="a00092_source.html#l00524">524</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
190
<p>Referenced by <a class="el" href="a00104_source.html#l00107">main()</a>, and <a class="el" href="a00092_source.html#l01028">bm::serialize()</a>.</p>
194
<a class="anchor" id="a2c005feac8bc059af3333234c52739ed"></a><!-- doxytag: member="bm::serializer::encode_bit_interval" ref="a2c005feac8bc059af3333234c52739ed" args="(const bm::word_t *blk, bm::encoder &enc, unsigned size_control)" -->
195
<div class="memitem">
196
<div class="memproto">
197
<div class="memtemplate">
198
template<class BV > </div>
199
<table class="memname">
201
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::encode_bit_interval </td>
203
<td class="paramtype">const <a class="el" href="a00110.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
204
<td class="paramname"> <em>blk</em>, </td>
207
<td class="paramkey"></td>
209
<td class="paramtype"><a class="el" href="a00061.html">bm::encoder</a> & </td>
210
<td class="paramname"> <em>enc</em>, </td>
213
<td class="paramkey"></td>
215
<td class="paramtype">unsigned </td>
216
<td class="paramname"> <em>size_control</em></td><td> </td>
221
<td></td><td></td><td><code> [inline, protected]</code></td>
227
<p>Encode BIT block with repeatable runs of zeroes. </p>
229
<p>Definition at line <a class="el" href="a00092_source.html#l00706">706</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
231
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00100_source.html#l00554">bm::encoder::put_16()</a>, <a class="el" href="a00100_source.html#l00630">bm::encoder::put_32()</a>, <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>, <a class="el" href="a00092_source.html#l00088">bm::set_block_bit_0runs</a>, and <a class="el" href="a00088_source.html#l00052">bm::set_block_size</a>.</p>
233
<p>Referenced by <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
237
<a class="anchor" id="a77bfac165158b3a018654d88fbed0121"></a><!-- doxytag: member="bm::serializer::encode_gap_block" ref="a77bfac165158b3a018654d88fbed0121" args="(bm::gap_word_t *gap_block, bm::encoder &enc)" -->
238
<div class="memitem">
239
<div class="memproto">
240
<div class="memtemplate">
241
template<class BV > </div>
242
<table class="memname">
244
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::encode_gap_block </td>
246
<td class="paramtype"><a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> * </td>
247
<td class="paramname"> <em>gap_block</em>, </td>
250
<td class="paramkey"></td>
252
<td class="paramtype"><a class="el" href="a00061.html">bm::encoder</a> & </td>
253
<td class="paramname"> <em>enc</em></td><td> </td>
258
<td></td><td></td><td><code> [inline, protected]</code></td>
264
<p>Encode GAP block. </p>
266
<p>Definition at line <a class="el" href="a00092_source.html#l00653">653</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
268
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00606">bm::serializer< BV >::gamma_gap_array()</a>, <a class="el" href="a00092_source.html#l00569">bm::serializer< BV >::gamma_gap_block()</a>, <a class="el" href="a00090_source.html#l00618">bm::gap_bit_count()</a>, <a class="el" href="a00090_source.html#l02411">bm::gap_convert_to_arr()</a>, <a class="el" href="a00088_source.html#l00072">bm::gap_equiv_len</a>, <a class="el" href="a00090_source.html#l02122">bm::gap_length()</a>, <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>, <a class="el" href="a00100_source.html#l00554">bm::encoder::put_16()</a>, <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>, and <a class="el" href="a00092_source.html#l00085">bm::set_block_bit_1bit</a>.</p>
270
<p>Referenced by <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
274
<a class="anchor" id="a341d5819f2f1164172f4c0c4771ec941"></a><!-- doxytag: member="bm::serializer::encode_header" ref="a341d5819f2f1164172f4c0c4771ec941" args="(const BV &bv, bm::encoder &enc)" -->
275
<div class="memitem">
276
<div class="memproto">
277
<div class="memtemplate">
278
template<class BV > </div>
279
<table class="memname">
281
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::encode_header </td>
283
<td class="paramtype">const BV & </td>
284
<td class="paramname"> <em>bv</em>, </td>
287
<td class="paramkey"></td>
289
<td class="paramtype"><a class="el" href="a00061.html">bm::encoder</a> & </td>
290
<td class="paramname"> <em>enc</em></td><td> </td>
295
<td></td><td></td><td><code> [inline, protected]</code></td>
301
<p>Encode serialization header information. </p>
303
<p>Definition at line <a class="el" href="a00092_source.html#l00530">530</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
305
<p>References <a class="el" href="a00092_source.html#l00096">bm::BM_HM_DEFAULT</a>, <a class="el" href="a00092_source.html#l00099">bm::BM_HM_NO_BO</a>, <a class="el" href="a00092_source.html#l00100">bm::BM_HM_NO_GAPL</a>, <a class="el" href="a00092_source.html#l00097">bm::BM_HM_RESIZE</a>, <a class="el" href="a00088_source.html#l00074">bm::gap_levels</a>, <a class="el" href="a00088_source.html#l00048">bm::id_max</a>, <a class="el" href="a00100_source.html#l00554">bm::encoder::put_16()</a>, <a class="el" href="a00100_source.html#l00630">bm::encoder::put_32()</a>, and <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>.</p>
307
<p>Referenced by <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
311
<a class="anchor" id="a88e75dd5bc8234634b21c7d3dcddc8c6"></a><!-- doxytag: member="bm::serializer::gamma_gap_array" ref="a88e75dd5bc8234634b21c7d3dcddc8c6" args="(const bm::gap_word_t *gap_block, unsigned arr_len, bm::encoder &enc, bool inverted=false)" -->
312
<div class="memitem">
313
<div class="memproto">
314
<div class="memtemplate">
315
template<class BV > </div>
316
<table class="memname">
318
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::gamma_gap_array </td>
320
<td class="paramtype">const <a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> * </td>
321
<td class="paramname"> <em>gap_block</em>, </td>
324
<td class="paramkey"></td>
326
<td class="paramtype">unsigned </td>
327
<td class="paramname"> <em>arr_len</em>, </td>
330
<td class="paramkey"></td>
332
<td class="paramtype"><a class="el" href="a00061.html">bm::encoder</a> & </td>
333
<td class="paramname"> <em>enc</em>, </td>
336
<td class="paramkey"></td>
338
<td class="paramtype">bool </td>
339
<td class="paramname"> <em>inverted</em> = <code>false</code></td><td> </td>
344
<td></td><td></td><td><code> [inline, protected]</code></td>
350
<p>Encode GAP block as delta-array with Elias Gamma coder. </p>
352
<p>Definition at line <a class="el" href="a00092_source.html#l00606">606</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
354
<p>References <a class="el" href="a00100_source.html#l00229">bm::bit_out< TEncoder >::gamma()</a>, <a class="el" href="a00100_source.html#l00611">bm::encoder::get_pos()</a>, <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>, <a class="el" href="a00100_source.html#l00527">bm::encoder::put_prefixed_array_16()</a>, <a class="el" href="a00092_source.html#l00084">bm::set_block_arrgap</a>, <a class="el" href="a00092_source.html#l00087">bm::set_block_arrgap_egamma</a>, <a class="el" href="a00092_source.html#l00089">bm::set_block_arrgap_egamma_inv</a>, <a class="el" href="a00092_source.html#l00090">bm::set_block_arrgap_inv</a>, and <a class="el" href="a00100_source.html#l00619">bm::encoder::set_pos()</a>.</p>
356
<p>Referenced by <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>, and <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
360
<a class="anchor" id="aa7eac0e670c3ff98404a5f1dcec1ef33"></a><!-- doxytag: member="bm::serializer::gamma_gap_block" ref="aa7eac0e670c3ff98404a5f1dcec1ef33" args="(bm::gap_word_t *gap_block, bm::encoder &enc)" -->
361
<div class="memitem">
362
<div class="memproto">
363
<div class="memtemplate">
364
template<class BV > </div>
365
<table class="memname">
367
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::gamma_gap_block </td>
369
<td class="paramtype"><a class="el" href="a00110.html#ac654d6319039a86546d235a236fc7cf6">bm::gap_word_t</a> * </td>
370
<td class="paramname"> <em>gap_block</em>, </td>
373
<td class="paramkey"></td>
375
<td class="paramtype"><a class="el" href="a00061.html">bm::encoder</a> & </td>
376
<td class="paramname"> <em>enc</em></td><td> </td>
381
<td></td><td></td><td><code> [inline, protected]</code></td>
387
<p>Encode GAP block with Elias Gamma coder. </p>
389
<p>Definition at line <a class="el" href="a00092_source.html#l00569">569</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
391
<p>References <a class="el" href="a00090_source.html#l00701">bm::for_each_dgap()</a>, <a class="el" href="a00090_source.html#l02122">bm::gap_length()</a>, <a class="el" href="a00100_source.html#l00611">bm::encoder::get_pos()</a>, <a class="el" href="a00100_source.html#l00554">bm::encoder::put_16()</a>, <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>, <a class="el" href="a00092_source.html#l00080">bm::set_block_gap</a>, <a class="el" href="a00092_source.html#l00086">bm::set_block_gap_egamma</a>, and <a class="el" href="a00100_source.html#l00619">bm::encoder::set_pos()</a>.</p>
393
<p>Referenced by <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>, and <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
397
<a class="anchor" id="a5b19026c2e928c639f09da4a4e1235ab"></a><!-- doxytag: member="bm::serializer::gap_length_serialization" ref="a5b19026c2e928c639f09da4a4e1235ab" args="(bool value)" -->
398
<div class="memitem">
399
<div class="memproto">
400
<div class="memtemplate">
401
template<class BV > </div>
402
<table class="memname">
404
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::gap_length_serialization </td>
406
<td class="paramtype">bool </td>
407
<td class="paramname"> <em>value</em></td>
408
<td> ) </td>
409
<td><code> [inline]</code></td>
415
<p>Set GAP length serialization (serializes GAP levels of the original vector). </p>
416
<dl><dt><b>Parameters:</b></dt><dd>
417
<table border="0" cellspacing="2" cellpadding="0">
418
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- when TRUE serialized vector includes GAP levels parameters </td></tr>
423
<p>Definition at line <a class="el" href="a00092_source.html#l00518">518</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
425
<p>Referenced by <a class="el" href="a00104_source.html#l00107">main()</a>, and <a class="el" href="a00092_source.html#l01028">bm::serialize()</a>.</p>
429
<a class="anchor" id="ada73fe9103470fc726968cd0e8dbe04f"></a><!-- doxytag: member="bm::serializer::get_compression_level" ref="ada73fe9103470fc726968cd0e8dbe04f" args="() const " -->
430
<div class="memitem">
431
<div class="memproto">
432
<div class="memtemplate">
433
template<class BV > </div>
434
<table class="memname">
436
<td class="memname">unsigned <a class="el" href="a00080.html">bm::serializer</a>< BV >::get_compression_level </td>
438
<td class="paramname"></td>
439
<td> ) </td>
440
<td> const<code> [inline]</code></td>
446
<p>Get compression level. </p>
448
<p>Definition at line <a class="el" href="a00092_source.html#l00505">505</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
452
<a class="anchor" id="af747ada0a8f77d79d73b34443595f4d4"></a><!-- doxytag: member="bm::serializer::serialize" ref="af747ada0a8f77d79d73b34443595f4d4" args="(const BV &bv, unsigned char *buf, unsigned buf_size)" -->
453
<div class="memitem">
454
<div class="memproto">
455
<div class="memtemplate">
456
template<class BV > </div>
457
<table class="memname">
459
<td class="memname">unsigned <a class="el" href="a00080.html">bm::serializer</a>< BV >::serialize </td>
461
<td class="paramtype">const BV & </td>
462
<td class="paramname"> <em>bv</em>, </td>
465
<td class="paramkey"></td>
467
<td class="paramtype">unsigned char * </td>
468
<td class="paramname"> <em>buf</em>, </td>
471
<td class="paramkey"></td>
473
<td class="paramtype">unsigned </td>
474
<td class="paramname"> <em>buf_size</em></td><td> </td>
479
<td></td><td></td><td><code> [inline]</code></td>
485
<p>Bitvector serilization into memory block. </p>
486
<dl><dt><b>Parameters:</b></dt><dd>
487
<table border="0" cellspacing="2" cellpadding="0">
488
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- input bitvector </td></tr>
489
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- out buffer (pre-allocated) No range checking is done in this method. It is responsibility of caller to allocate sufficient amount of memory using information from calc_stat() function.</td></tr>
490
<tr><td valign="top"></td><td valign="top"><em>buf_size</em> </td><td>- size of the output buffer</td></tr>
494
<dl class="return"><dt><b>Returns:</b></dt><dd>Size of serialization block. </dd></dl>
495
<dl class="see"><dt><b>See also:</b></dt><dd>calc_stat </dd></dl>
497
<p>Definition at line <a class="el" href="a00092_source.html#l00758">758</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
499
<p>References <a class="el" href="a00090_source.html#l02569">bm::bit_block_calc_count_change()</a>, <a class="el" href="a00090_source.html#l04323">bm::bit_convert_to_arr()</a>, <a class="el" href="a00090_source.html#l02266">bm::bit_convert_to_gap()</a>, <a class="el" href="a00090_source.html#l03981">bm::bit_count_nonzero_size()</a>, <a class="el" href="a00090_source.html#l04059">bm::bit_find_in_block()</a>, <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00089_source.html#l00094">BM_IS_GAP</a>, <a class="el" href="a00089_source.html#l00092">BMGAP_PTR</a>, <a class="el" href="a00092_source.html#l00706">bm::serializer< BV >::encode_bit_interval()</a>, <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>, <a class="el" href="a00092_source.html#l00530">bm::serializer< BV >::encode_header()</a>, <a class="el" href="a00092_source.html#l00606">bm::serializer< BV >::gamma_gap_array()</a>, <a class="el" href="a00092_source.html#l00569">bm::serializer< BV >::gamma_gap_block()</a>, <a class="el" href="a00088_source.html#l00072">bm::gap_equiv_len</a>, <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>, <a class="el" href="a00100_source.html#l00554">bm::encoder::put_16()</a>, <a class="el" href="a00100_source.html#l00544">bm::encoder::put_8()</a>, <a class="el" href="a00100_source.html#l00516">bm::encoder::put_prefixed_array_32()</a>, <a class="el" href="a00092_source.html#l00105">SER_NEXT_GRP</a>, <a class="el" href="a00092_source.html#l00072">bm::set_block_16one</a>, <a class="el" href="a00092_source.html#l00071">bm::set_block_16zero</a>, <a class="el" href="a00092_source.html#l00068">bm::set_block_1one</a>, <a class="el" href="a00092_source.html#l00067">bm::set_block_1zero</a>, <a class="el" href="a00092_source.html#l00074">bm::set_block_32one</a>, <a class="el" href="a00092_source.html#l00073">bm::set_block_32zero</a>, <a class="el" href="a00092_source.html#l00070">bm::set_block_8one</a>, <a class="el" href="a00092_source.html#l00069">bm::set_block_8zero</a>, <a class="el" href="a00092_source.html#l00076">bm::set_block_aone</a>, <a class="el" href="a00092_source.html#l00075">bm::set_block_azero</a>, <a class="el" href="a00092_source.html#l00077">bm::set_block_bit</a>, <a class="el" href="a00092_source.html#l00085">bm::set_block_bit_1bit</a>, <a class="el" href="a00092_source.html#l00066">bm::set_block_end</a>, <a class="el" href="a00088_source.html#l00052">bm::set_block_size</a>, <a class="el" href="a00088_source.html#l00083">bm::set_total_blocks</a>, and <a class="el" href="a00100_source.html#l00603">bm::encoder::size()</a>.</p>
501
<p>Referenced by <a class="el" href="a00092_source.html#l01028">bm::serialize()</a>.</p>
505
<a class="anchor" id="ad433d790f07103d39c5f15a6caaf2823"></a><!-- doxytag: member="bm::serializer::set_compression_level" ref="ad433d790f07103d39c5f15a6caaf2823" args="(unsigned clevel)" -->
506
<div class="memitem">
507
<div class="memproto">
508
<div class="memtemplate">
509
template<class BV > </div>
510
<table class="memname">
512
<td class="memname">void <a class="el" href="a00080.html">bm::serializer</a>< BV >::set_compression_level </td>
514
<td class="paramtype">unsigned </td>
515
<td class="paramname"> <em>clevel</em></td>
516
<td> ) </td>
517
<td><code> [inline]</code></td>
523
<p>Set compression level. </p>
524
<p>Higher compression takes more time to process.</p>
525
<dl><dt><b>Parameters:</b></dt><dd>
526
<table border="0" cellspacing="2" cellpadding="0">
527
<tr><td valign="top"></td><td valign="top"><em>clevel</em> </td><td>- compression level (0-4) </td></tr>
532
<p>Definition at line <a class="el" href="a00092_source.html#l00499">499</a> of file <a class="el" href="a00092_source.html">bmserial.h</a>.</p>
534
<p>Referenced by <a class="el" href="a00104_source.html#l00107">main()</a>, and <a class="el" href="a00092_source.html#l01028">bm::serialize()</a>.</p>
120
<a class="anchor" id="a31f8e1425e1563f1f5890b77f736f323"></a><!-- doxytag: member="bm::bvector::reference::flip" ref="a31f8e1425e1563f1f5890b77f736f323" args="()" -->
121
<div class="memitem">
122
<div class="memproto">
123
<div class="memtemplate">
124
template<class Alloc, class MS> </div>
125
<table class="memname">
127
<td class="memname"><a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::flip </td>
129
<td class="paramname"></td>
130
<td> ) </td>
131
<td><code> [inline]</code></td>
136
<p>Negates the bit value </p>
138
<p>Definition at line <a class="el" href="a00087_source.html#l00214">214</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
142
<a class="anchor" id="a4d531a670ed0e8cfca01342fe02f030e"></a><!-- doxytag: member="bm::bvector::reference::operator bool" ref="a4d531a670ed0e8cfca01342fe02f030e" args="() const " -->
143
<div class="memitem">
144
<div class="memproto">
145
<div class="memtemplate">
146
template<class Alloc, class MS> </div>
147
<table class="memname">
149
<td class="memname"><a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator bool </td>
151
<td class="paramname"></td>
152
<td> ) </td>
153
<td> const<code> [inline]</code></td>
159
<p>Definition at line <a class="el" href="a00087_source.html#l00155">155</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
163
<a class="anchor" id="aa214fa361c24c57c9fd4d26441ff6c12"></a><!-- doxytag: member="bm::bvector::reference::operator!" ref="aa214fa361c24c57c9fd4d26441ff6c12" args="() const " -->
164
<div class="memitem">
165
<div class="memproto">
166
<div class="memtemplate">
167
template<class Alloc, class MS> </div>
168
<table class="memname">
170
<td class="memname">bool <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator! </td>
172
<td class="paramname"></td>
173
<td> ) </td>
174
<td> const<code> [inline]</code></td>
179
<p>Logical Not operator </p>
181
<p>Definition at line <a class="el" href="a00087_source.html#l00202">202</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
185
<a class="anchor" id="a78514f588110835ecd21f3c8737b6a3f"></a><!-- doxytag: member="bm::bvector::reference::operator&=" ref="a78514f588110835ecd21f3c8737b6a3f" args="(bool value) const " -->
186
<div class="memitem">
187
<div class="memproto">
188
<div class="memtemplate">
189
template<class Alloc, class MS> </div>
190
<table class="memname">
192
<td class="memname">const <a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator&= </td>
194
<td class="paramtype">bool </td>
195
<td class="paramname"> <em>value</em></td>
196
<td> ) </td>
197
<td> const<code> [inline]</code></td>
202
<p>Bitwise AND. Performs operation: bit = bit AND value </p>
204
<p>Definition at line <a class="el" href="a00087_source.html#l00178">178</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
208
<a class="anchor" id="ae7fd4a0de8fe3d984322e8a690feeb5a"></a><!-- doxytag: member="bm::bvector::reference::operator=" ref="ae7fd4a0de8fe3d984322e8a690feeb5a" args="(bool value) const " -->
209
<div class="memitem">
210
<div class="memproto">
211
<div class="memtemplate">
212
template<class Alloc, class MS> </div>
213
<table class="memname">
215
<td class="memname">const <a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator= </td>
217
<td class="paramtype">bool </td>
218
<td class="paramname"> <em>value</em></td>
219
<td> ) </td>
220
<td> const<code> [inline]</code></td>
226
<p>Definition at line <a class="el" href="a00087_source.html#l00166">166</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
230
<a class="anchor" id="ac597a766c4942da598682c4917ee41c6"></a><!-- doxytag: member="bm::bvector::reference::operator=" ref="ac597a766c4942da598682c4917ee41c6" args="(const reference &ref) const " -->
231
<div class="memitem">
232
<div class="memproto">
233
<div class="memtemplate">
234
template<class Alloc, class MS> </div>
235
<table class="memname">
237
<td class="memname">const <a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator= </td>
239
<td class="paramtype">const <a class="el" href="a00080.html">reference</a> & </td>
240
<td class="paramname"> <em>ref</em></td>
241
<td> ) </td>
242
<td> const<code> [inline]</code></td>
248
<p>Definition at line <a class="el" href="a00087_source.html#l00160">160</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
252
<a class="anchor" id="ab761552f565e9ecfe263fd8325d50852"></a><!-- doxytag: member="bm::bvector::reference::operator==" ref="ab761552f565e9ecfe263fd8325d50852" args="(const reference &ref) const " -->
253
<div class="memitem">
254
<div class="memproto">
255
<div class="memtemplate">
256
template<class Alloc, class MS> </div>
257
<table class="memname">
259
<td class="memname">bool <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator== </td>
261
<td class="paramtype">const <a class="el" href="a00080.html">reference</a> & </td>
262
<td class="paramname"> <em>ref</em></td>
263
<td> ) </td>
264
<td> const<code> [inline]</code></td>
270
<p>Definition at line <a class="el" href="a00087_source.html#l00172">172</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
274
<a class="anchor" id="a94e3b8c46d1f83c5999c8eaf426b8e9b"></a><!-- doxytag: member="bm::bvector::reference::operator^=" ref="a94e3b8c46d1f83c5999c8eaf426b8e9b" args="(bool value) const " -->
275
<div class="memitem">
276
<div class="memproto">
277
<div class="memtemplate">
278
template<class Alloc, class MS> </div>
279
<table class="memname">
281
<td class="memname">const <a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator^= </td>
283
<td class="paramtype">bool </td>
284
<td class="paramname"> <em>value</em></td>
285
<td> ) </td>
286
<td> const<code> [inline]</code></td>
291
<p>Bitwise exclusive-OR (XOR). Performs operation: bit = bit XOR value </p>
293
<p>Definition at line <a class="el" href="a00087_source.html#l00195">195</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
297
<a class="anchor" id="acbf8b97f7b52f1c9b81a1d9129986cff"></a><!-- doxytag: member="bm::bvector::reference::operator|=" ref="acbf8b97f7b52f1c9b81a1d9129986cff" args="(bool value) const " -->
298
<div class="memitem">
299
<div class="memproto">
300
<div class="memtemplate">
301
template<class Alloc, class MS> </div>
302
<table class="memname">
304
<td class="memname">const <a class="el" href="a00080.html">reference</a>& <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator|= </td>
306
<td class="paramtype">bool </td>
307
<td class="paramname"> <em>value</em></td>
308
<td> ) </td>
309
<td> const<code> [inline]</code></td>
314
<p>Bitwise OR. Performs operation: bit = bit OR value </p>
316
<p>Definition at line <a class="el" href="a00087_source.html#l00185">185</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
320
<a class="anchor" id="a70357e67d8022147971ad970a80108d0"></a><!-- doxytag: member="bm::bvector::reference::operator~" ref="a70357e67d8022147971ad970a80108d0" args="() const " -->
321
<div class="memitem">
322
<div class="memproto">
323
<div class="memtemplate">
324
template<class Alloc, class MS> </div>
325
<table class="memname">
327
<td class="memname">bool <a class="el" href="a00044.html">bm::bvector</a>< Alloc, MS >::reference::operator~ </td>
329
<td class="paramname"></td>
330
<td> ) </td>
331
<td> const<code> [inline]</code></td>
336
<p>Bit Not operator </p>
338
<p>Definition at line <a class="el" href="a00087_source.html#l00208">208</a> of file <a class="el" href="a00087_source.html">bm.h</a>.</p>
538
342
<hr/>The documentation for this class was generated from the following file:<ul>
539
<li><a class="el" href="a00092_source.html">bmserial.h</a></li>
343
<li><a class="el" href="a00087_source.html">bm.h</a></li>
542
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Nov 22 10:49:48 2009 for BitMagic by
346
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:20 2010 for BitMagic by
543
347
<a href="http://www.doxygen.org/index.html">
544
348
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>