File: group__bvserial.html

package info (click to toggle)
bmagic 6.3.0-1
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 49,956 kB
  • sloc: cpp: 84,298; ansic: 9,703; sh: 1,664; makefile: 742
file content (397 lines) | stat: -rwxr-xr-x 26,417 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BitMagic-C++: bvector&lt;&gt; serialization</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">BitMagic-C++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">bvector&lt;&gt; serialization<div class="ingroups"><a class="el" href="group__bmagic.html">BitMagic Library</a> &raquo; <a class="el" href="group__bvector.html">bvector&lt;&gt; container</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Serialization for <a class="el" href="classbm_1_1bvector.html">bvector&lt;&gt;</a> container.  
<a href="#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for bvector&lt;&gt; serialization:</div>
<div class="dyncontent">
<div class="center"><img src="group__bvserial.png" border="0" usemap="#group____bvserial" alt=""/></div>
<map name="group____bvserial" id="group____bvserial">
<area shape="rect" href="group__bvector.html" title="The Main bvector&lt;&gt; Group bvector&lt;&gt; template: front end of the BitMagic library." alt="" coords="5,5,141,31"/>
<area shape="rect" title="Serialization for bvector&lt;&gt; container." alt="" coords="189,5,341,31"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbm_1_1serializer.html">bm::serializer&lt; BV &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit-vector serialization class.  <a href="classbm_1_1serializer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbm_1_1deseriaizer__base.html">bm::deseriaizer_base&lt; DEC, BLOCK_IDX &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base deserialization class.  <a href="classbm_1_1deseriaizer__base.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbm_1_1deserializer.html">bm::deserializer&lt; BV, DEC &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserializer for bit-vector.  <a href="classbm_1_1deserializer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbm_1_1serial__stream__iterator.html">bm::serial_stream_iterator&lt; DEC, BLOCK_IDX &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialization stream iterator.  <a href="classbm_1_1serial__stream__iterator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbm_1_1operation__deserializer.html">bm::operation_deserializer&lt; BV &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserializer, performs logical operations between bit-vector and serialized bit-vector.  <a href="classbm_1_1operation__deserializer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga537dfe6318f1f1fe18d86dac312be978"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978">bm::serialization_flags</a> { <a class="el" href="group__bvserial.html#gga537dfe6318f1f1fe18d86dac312be978acdd8c071c079589388c3ca7bd4f367c8">bm::BM_NO_BYTE_ORDER</a> = 1, 
<a class="el" href="group__bvserial.html#gga537dfe6318f1f1fe18d86dac312be978a5521473081d341bc32ac59538e6a8096">bm::BM_NO_GAP_LENGTH</a> = (1 &lt;&lt; 1)
 }</td></tr>
<tr class="memdesc:ga537dfe6318f1f1fe18d86dac312be978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit mask flags for serialization algorithm.  <a href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978">More...</a><br /></td></tr>
<tr class="separator:ga537dfe6318f1f1fe18d86dac312be978"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga358a18616953b31e63c73348a31a98f5"><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
<tr class="memitem:ga358a18616953b31e63c73348a31a98f5"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__bvserial.html#ga358a18616953b31e63c73348a31a98f5">bm::serialize</a> (const BV &amp;bv, unsigned char *buf, <a class="el" href="namespacebm.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *temp_block=0, unsigned <a class="el" href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978">serialization_flags</a>=0)</td></tr>
<tr class="memdesc:ga358a18616953b31e63c73348a31a98f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves bitvector into memory.  <a href="group__bvserial.html#ga358a18616953b31e63c73348a31a98f5">More...</a><br /></td></tr>
<tr class="separator:ga358a18616953b31e63c73348a31a98f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafda186fa12a6181b11adbde1124161cc"><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
<tr class="memitem:gafda186fa12a6181b11adbde1124161cc"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__bvserial.html#gafda186fa12a6181b11adbde1124161cc">bm::serialize</a> (BV &amp;bv, unsigned char *buf, unsigned <a class="el" href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978">serialization_flags</a>=0)</td></tr>
<tr class="memdesc:gafda186fa12a6181b11adbde1124161cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves bitvector into memory. Allocates temporary memory block for bvector.  <a href="group__bvserial.html#gafda186fa12a6181b11adbde1124161cc">More...</a><br /></td></tr>
<tr class="separator:gafda186fa12a6181b11adbde1124161cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6e8907a847b2b124fe97b244aa9e0306"><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
<tr class="memitem:ga6e8907a847b2b124fe97b244aa9e0306"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__bvserial.html#ga6e8907a847b2b124fe97b244aa9e0306">bm::deserialize</a> (BV &amp;bv, const unsigned char *buf, <a class="el" href="namespacebm.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *temp_block=0, const <a class="el" href="classbm_1_1bv__ref__vector.html">bm::bv_ref_vector</a>&lt; BV &gt; *ref_vect=0)</td></tr>
<tr class="memdesc:ga6e8907a847b2b124fe97b244aa9e0306"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitvector deserialization from a memory BLOB.  <a href="group__bvserial.html#ga6e8907a847b2b124fe97b244aa9e0306">More...</a><br /></td></tr>
<tr class="separator:ga6e8907a847b2b124fe97b244aa9e0306"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8057580b944fa3ad68419f2673772999"><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
<tr class="memitem:ga8057580b944fa3ad68419f2673772999"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__bvserial.html#ga8057580b944fa3ad68419f2673772999">bm::deserialize_range</a> (BV &amp;bv, const unsigned char *buf, typename BV::size_type from, typename BV::size_type to, const <a class="el" href="classbm_1_1bv__ref__vector.html">bm::bv_ref_vector</a>&lt; BV &gt; *ref_vect=0)</td></tr>
<tr class="memdesc:ga8057580b944fa3ad68419f2673772999"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitvector range deserialization from a memory BLOB.  <a href="group__bvserial.html#ga8057580b944fa3ad68419f2673772999">More...</a><br /></td></tr>
<tr class="separator:ga8057580b944fa3ad68419f2673772999"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Serialization for <a class="el" href="classbm_1_1bvector.html">bvector&lt;&gt;</a> container. </p>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga537dfe6318f1f1fe18d86dac312be978"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga537dfe6318f1f1fe18d86dac312be978">&#9670;&nbsp;</a></span>serialization_flags</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978">bm::serialization_flags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bit mask flags for serialization algorithm. </p>
<p><br  />
 </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga537dfe6318f1f1fe18d86dac312be978acdd8c071c079589388c3ca7bd4f367c8"></a>BM_NO_BYTE_ORDER&#160;</td><td class="fielddoc"><p>save no byte-order info (save some space) </p>
</td></tr>
<tr><td class="fieldname"><a id="gga537dfe6318f1f1fe18d86dac312be978a5521473081d341bc32ac59538e6a8096"></a>BM_NO_GAP_LENGTH&#160;</td><td class="fielddoc"><p>save no GAP info (save some space) </p>
</td></tr>
</table>

<p class="definition">Definition at line <a class="el" href="bmserial_8h_source.html#l02574">2574</a> of file <a class="el" href="bmserial_8h_source.html">bmserial.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga6e8907a847b2b124fe97b244aa9e0306"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6e8907a847b2b124fe97b244aa9e0306">&#9670;&nbsp;</a></span>deserialize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class BV &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t bm::deserialize </td>
          <td>(</td>
          <td class="paramtype">BV &amp;&#160;</td>
          <td class="paramname"><em>bv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacebm.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&#160;</td>
          <td class="paramname"><em>temp_block</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classbm_1_1bv__ref__vector.html">bm::bv_ref_vector</a>&lt; BV &gt; *&#160;</td>
          <td class="paramname"><em>ref_vect</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bitvector deserialization from a memory BLOB. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">bv</td><td>- target bvector </td></tr>
    <tr><td class="paramname">buf</td><td>- pointer on memory which keeps serialized bvector </td></tr>
    <tr><td class="paramname">temp_block</td><td>- pointer on temporary block, if NULL bvector allocates own. </td></tr>
    <tr><td class="paramname">ref_vect</td><td>- [in] optional pointer to a list of reference vectors used for XOR compression.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of bytes consumed by deserializer.</dd></dl>
<p>Function deserializes bitvector from memory block containig results of previous serialization. Function does not remove bits which are currently set. Effectively it is OR logical operation between the target bit-vector and serialized one.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__bvserial.html#ga8057580b944fa3ad68419f2673772999" title="Bitvector range deserialization from a memory BLOB.">deserialize_range</a> </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="sample14_8cpp-example.html#a13">sample14.cpp</a>, <a class="el" href="sample4_8cpp-example.html#a23">sample4.cpp</a>, and <a class="el" href="xsample01_8cpp-example.html#a55">xsample01.cpp</a>.</dd>
</dl>

<p class="definition">Definition at line <a class="el" href="bmserial_8h_source.html#l02688">2688</a> of file <a class="el" href="bmserial_8h_source.html">bmserial.h</a>.</p>

<p class="reference">References <a class="el" href="bmconst_8h_source.html#l00430">bm::BigEndian</a>, <a class="el" href="bmdef_8h_source.html#l00130">BM_ASSERT</a>, <a class="el" href="bmserial_8h_source.html#l00969">bm::BM_HM_NO_BO</a>, <a class="el" href="bmserial_8h_source.html#l03531">bm::deserializer&lt; BV, DEC &gt;::deserialize()</a>, <a class="el" href="encoding_8h_source.html#l00089">bm::decoder_base::get_8()</a>, <a class="el" href="bmconst_8h_source.html#l00431">bm::LittleEndian</a>, and <a class="el" href="bmserial_8h_source.html#l03240">bm::deserializer&lt; BV, DEC &gt;::set_ref_vectors()</a>.</p>

<p class="reference">Referenced by <a class="el" href="xsample01_8cpp_source.html#l00303">convert_bv2bvs()</a>, <a class="el" href="bmsparsevec__serial_8h_source.html#l00529">bm::compressed_collection_deserializer&lt; CBC &gt;::deserialize()</a>, and <a class="el" href="sample14_8cpp_source.html#l00057">main()</a>.</p>

</div>
</div>
<a id="ga8057580b944fa3ad68419f2673772999"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8057580b944fa3ad68419f2673772999">&#9670;&nbsp;</a></span>deserialize_range()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class BV &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void bm::deserialize_range </td>
          <td>(</td>
          <td class="paramtype">BV &amp;&#160;</td>
          <td class="paramname"><em>bv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename BV::size_type&#160;</td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename BV::size_type&#160;</td>
          <td class="paramname"><em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classbm_1_1bv__ref__vector.html">bm::bv_ref_vector</a>&lt; BV &gt; *&#160;</td>
          <td class="paramname"><em>ref_vect</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bitvector range deserialization from a memory BLOB. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">bv</td><td>- target bvector </td></tr>
    <tr><td class="paramname">buf</td><td>- pointer on memory which keeps serialized bvector </td></tr>
    <tr><td class="paramname">from</td><td>- bit-vector index to deserialize from </td></tr>
    <tr><td class="paramname">to</td><td>- bit-vector index to deserialize to </td></tr>
    <tr><td class="paramname">ref_vect</td><td>- [in] optional pointer to a list of reference vectors used for XOR compression.</td></tr>
  </table>
  </dd>
</dl>
<p>Function deserializes bitvector from memory block containig results of previous serialization. Function does not remove bits which are currently set. Effectively it is OR logical operation between the target bit-vector and serialized one.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__bvserial.html#ga6e8907a847b2b124fe97b244aa9e0306" title="Bitvector deserialization from a memory BLOB.">deserialize</a> </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="sample22_8cpp-example.html#a13">sample22.cpp</a>.</dd>
</dl>

<p class="definition">Definition at line <a class="el" href="bmserial_8h_source.html#l02751">2751</a> of file <a class="el" href="bmserial_8h_source.html">bmserial.h</a>.</p>

<p class="reference">References <a class="el" href="bmconst_8h_source.html#l00430">bm::BigEndian</a>, <a class="el" href="bmdef_8h_source.html#l00130">BM_ASSERT</a>, <a class="el" href="bmserial_8h_source.html#l00969">bm::BM_HM_NO_BO</a>, <a class="el" href="bmserial_8h_source.html#l03531">bm::deserializer&lt; BV, DEC &gt;::deserialize()</a>, <a class="el" href="encoding_8h_source.html#l00089">bm::decoder_base::get_8()</a>, <a class="el" href="bmconst_8h_source.html#l00431">bm::LittleEndian</a>, <a class="el" href="bmserial_8h_source.html#l00531">bm::deserializer&lt; BV, DEC &gt;::set_range()</a>, and <a class="el" href="bmserial_8h_source.html#l03240">bm::deserializer&lt; BV, DEC &gt;::set_ref_vectors()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sample22_8cpp_source.html#l00069">main()</a>.</p>

</div>
</div>
<a id="gafda186fa12a6181b11adbde1124161cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafda186fa12a6181b11adbde1124161cc">&#9670;&nbsp;</a></span>serialize() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class BV &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t bm::serialize </td>
          <td>(</td>
          <td class="paramtype">BV &amp;&#160;</td>
          <td class="paramname"><em>bv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>serialization_flags</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Saves bitvector into memory. Allocates temporary memory block for bvector. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">bv</td><td>- source bvecor </td></tr>
    <tr><td class="paramname">buf</td><td>- pointer on target memory area. No range checking in the function. It is responsibility of programmer to allocate sufficient amount of memory using information from calc_stat function.</td></tr>
    <tr><td class="paramname">serialization_flags</td><td>Flags controlling serilization (bit-mask) (use OR-ed serialization flags) </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="bmserial_8h_source.html#l02656">2656</a> of file <a class="el" href="bmserial_8h_source.html">bmserial.h</a>.</p>

<p class="reference">References <a class="el" href="bmserial_8h_source.html#l02622">bm::serialize()</a>.</p>

<p class="reference">Referenced by <a class="el" href="bmserial_8h_source.html#l01925">bm::serializer&lt; bvector_type &gt;::optimize_serialize_destroy()</a>, and <a class="el" href="bmserial_8h_source.html#l01903">bm::serializer&lt; bvector_type &gt;::serialize()</a>.</p>

</div>
</div>
<a id="ga358a18616953b31e63c73348a31a98f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga358a18616953b31e63c73348a31a98f5">&#9670;&nbsp;</a></span>serialize() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class BV &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t bm::serialize </td>
          <td>(</td>
          <td class="paramtype">const BV &amp;&#160;</td>
          <td class="paramname"><em>bv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacebm.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&#160;</td>
          <td class="paramname"><em>temp_block</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>serialization_flags</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Saves bitvector into memory. </p>
<p>Function serializes content of the bitvector into memory. Serialization adaptively uses compression(variation of GAP encoding) when it is benefitial.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">bv</td><td>- source bvecor </td></tr>
    <tr><td class="paramname">buf</td><td>- pointer on target memory area. No range checking in the function. It is responsibility of programmer to allocate sufficient amount of memory using information from calc_stat function.</td></tr>
    <tr><td class="paramname">temp_block</td><td>- pointer on temporary memory block. Cannot be 0; If you want to save memory across multiple bvectors allocate temporary block using allocate_tempblock and pass it to serialize. (Serialize does not deallocate temp_block.)</td></tr>
    <tr><td class="paramname">serialization_flags</td><td>Flags controlling serilization (bit-mask) (use OR-ed serialization flags)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Size of serialization block. </dd></dl>
<dl class="section see"><dt>See also</dt><dd>calc_stat, <a class="el" href="group__bvserial.html#ga537dfe6318f1f1fe18d86dac312be978" title="Bit mask flags for serialization algorithm.">serialization_flags</a></dd></dl>
<p>Serialization format: </p><pre></pre><pre>| HEADER | BLOCKS |</pre><pre>Header structure:
  BYTE : Serialization header (bit mask of BM_HM_*)
  BYTE : Byte order ( 0 - Big Endian, 1 - Little Endian)
  INT16: Reserved (0)
  INT16: Reserved Flags (0)</pre><pre></pre> 
<p class="definition">Definition at line <a class="el" href="bmserial_8h_source.html#l02622">2622</a> of file <a class="el" href="bmserial_8h_source.html">bmserial.h</a>.</p>

<p class="reference">References <a class="el" href="bmserial_8h_source.html#l02575">bm::BM_NO_BYTE_ORDER</a>, <a class="el" href="bmserial_8h_source.html#l02576">bm::BM_NO_GAP_LENGTH</a>, <a class="el" href="bmserial_8h_source.html#l01132">bm::serializer&lt; BV &gt;::byte_order_serialization()</a>, <a class="el" href="bmserial_8h_source.html#l01126">bm::serializer&lt; BV &gt;::gap_length_serialization()</a>, and <a class="el" href="bmserial_8h_source.html#l02264">bm::serializer&lt; BV &gt;::serialize()</a>.</p>

<p class="reference">Referenced by <a class="el" href="bmserial_8h_source.html#l02656">bm::serialize()</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>