~ubuntu-branches/ubuntu/trusty/bmagic/trusty-proposed

« back to all changes in this revision

Viewing changes to doc/html/a00126.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2010-01-24 14:45:39 UTC
  • mfrom: (4.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100124144539-4ipk5rt64dpp38hl
Tags: 3.6.3-1
* New upstream release
* debian/patches/config.guess.patch: drop obsolete patch
* Add ${misc:Depends} as requested by lintian

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
 
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
 
<title>BitMagic: sample8.cpp Source File</title>
4
 
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
 
<link href="tabs.css" rel="stylesheet" type="text/css">
6
 
</head><body>
7
 
<!-- Generated by Doxygen 1.5.5 -->
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
2
<html xmlns="http://www.w3.org/1999/xhtml">
 
3
<head>
 
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
5
<title>BitMagic: bvector serialization</title>
 
6
<link href="tabs.css" rel="stylesheet" type="text/css"/>
 
7
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
 
8
</head>
 
9
<body>
 
10
<!-- Generated by Doxygen 1.6.1 -->
8
11
<div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
    <ul>
11
14
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12
15
      <li><a href="modules.html"><span>Modules</span></a></li>
13
16
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
 
      <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
15
 
      <li class="current"><a href="files.html"><span>Files</span></a></li>
 
17
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
 
18
      <li><a href="files.html"><span>Files</span></a></li>
16
19
      <li><a href="examples.html"><span>Examples</span></a></li>
17
20
    </ul>
18
21
  </div>
19
 
<h1>sample8.cpp</h1><a href="a00104.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
20
 
<a name="l00002"></a>00002 <span class="comment">Copyright(c) 2002-2005 Anatoliy Kuznetsov(anatoliy_kuznetsov at yahoo.com)</span>
21
 
<a name="l00003"></a>00003 <span class="comment"></span>
22
 
<a name="l00004"></a>00004 <span class="comment">Permission is hereby granted, free of charge, to any person </span>
23
 
<a name="l00005"></a>00005 <span class="comment">obtaining a copy of this software and associated documentation </span>
24
 
<a name="l00006"></a>00006 <span class="comment">files (the "Software"), to deal in the Software without restriction, </span>
25
 
<a name="l00007"></a>00007 <span class="comment">including without limitation the rights to use, copy, modify, merge, </span>
26
 
<a name="l00008"></a>00008 <span class="comment">publish, distribute, sublicense, and/or sell copies of the Software, </span>
27
 
<a name="l00009"></a>00009 <span class="comment">and to permit persons to whom the Software is furnished to do so, </span>
28
 
<a name="l00010"></a>00010 <span class="comment">subject to the following conditions:</span>
29
 
<a name="l00011"></a>00011 <span class="comment"></span>
30
 
<a name="l00012"></a>00012 <span class="comment">The above copyright notice and this permission notice shall be included </span>
31
 
<a name="l00013"></a>00013 <span class="comment">in all copies or substantial portions of the Software.</span>
32
 
<a name="l00014"></a>00014 <span class="comment"></span>
33
 
<a name="l00015"></a>00015 <span class="comment">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, </span>
34
 
<a name="l00016"></a>00016 <span class="comment">EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES </span>
35
 
<a name="l00017"></a>00017 <span class="comment">OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. </span>
36
 
<a name="l00018"></a>00018 <span class="comment">IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, </span>
37
 
<a name="l00019"></a>00019 <span class="comment">DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, </span>
38
 
<a name="l00020"></a>00020 <span class="comment">ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR </span>
39
 
<a name="l00021"></a>00021 <span class="comment">OTHER DEALINGS IN THE SOFTWARE.</span>
40
 
<a name="l00022"></a>00022 <span class="comment">*/</span>
41
 
<a name="l00023"></a>00023 <span class="comment"></span>
42
 
<a name="l00024"></a>00024 <span class="comment">/** \example sample8.cpp</span>
43
 
<a name="l00025"></a>00025 <span class="comment"></span>
44
 
<a name="l00026"></a>00026 <span class="comment">    Example demonstrates some STL compatability set operations using</span>
45
 
<a name="l00027"></a>00027 <span class="comment">    set iterators.</span>
46
 
<a name="l00028"></a>00028 <span class="comment"> </span>
47
 
<a name="l00029"></a>00029 <span class="comment">  \sa bm::bvector&lt;&gt;::enumerator </span>
48
 
<a name="l00030"></a>00030 <span class="comment">  \sa bm::bvector&lt;&gt;::insert_iterator</span>
49
 
<a name="l00031"></a>00031 <span class="comment"></span>
50
 
<a name="l00032"></a>00032 <span class="comment">   For more information please visit:  http://bmagic.sourceforge.net</span>
51
 
<a name="l00033"></a>00033 <span class="comment"></span>
52
 
<a name="l00034"></a>00034 <span class="comment">*/</span>
53
 
<a name="l00035"></a>00035 
54
 
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;iostream&gt;</span>
55
 
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;algorithm&gt;</span>
56
 
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;vector&gt;</span>
57
 
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;list&gt;</span>
58
 
<a name="l00040"></a>00040 
59
 
<a name="l00041"></a>00041 <span class="keyword">using</span> std::vector;
60
 
<a name="l00042"></a>00042 <span class="keyword">using</span> std::list;
61
 
<a name="l00043"></a>00043 
62
 
<a name="l00044"></a>00044 <span class="comment">// This example requires STL compatibility</span>
63
 
<a name="l00045"></a>00045 <span class="preprocessor">#ifdef BM_NO_STL</span>
64
 
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor"># undef BM_NO_STL</span>
65
 
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
66
 
<a name="l00048"></a>00048 <span class="preprocessor"></span>
67
 
<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="a00082.html">bm.h</a>"</span>
68
 
<a name="l00050"></a>00050 
69
 
<a name="l00051"></a>00051 <span class="keyword">using namespace </span>std;
70
 
<a name="l00052"></a>00052 
71
 
<a name="l00053"></a><a class="code" href="a00104.html#80085d7c877f4c6f36d10c67dc163845">00053</a> <span class="keywordtype">void</span> <a class="code" href="a00101.html#80085d7c877f4c6f36d10c67dc163845">Print</a>(<span class="keywordtype">unsigned</span> n)
72
 
<a name="l00054"></a>00054 {
73
 
<a name="l00055"></a>00055     cout &lt;&lt; n &lt;&lt; endl;;
74
 
<a name="l00056"></a>00056 }
75
 
<a name="l00057"></a>00057 
76
 
<a name="l00058"></a>00058 <span class="comment">// Utility template function used to print container</span>
77
 
<a name="l00059"></a><a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">00059</a> <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(T first, T last)
78
 
<a name="l00060"></a>00060 {
79
 
<a name="l00061"></a>00061     <span class="keywordflow">if</span> (first == last)
80
 
<a name="l00062"></a>00062         cout &lt;&lt; <span class="stringliteral">"&lt;EMPTY SET&gt;"</span>;
81
 
<a name="l00063"></a>00063     <span class="keywordflow">else</span>
82
 
<a name="l00064"></a>00064         <span class="keywordflow">for</span>(;first != last; ++first)
83
 
<a name="l00065"></a>00065             cout &lt;&lt; *first &lt;&lt; <span class="stringliteral">";"</span>;
84
 
<a name="l00066"></a>00066     cout &lt;&lt; endl;
85
 
<a name="l00067"></a>00067 }
86
 
<a name="l00068"></a>00068 
87
 
<a name="l00069"></a><a class="code" href="a00104.html#840291bc02cba5474a4cb46a9b9566fe">00069</a> <span class="keywordtype">int</span> <a class="code" href="a00097.html#840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
88
 
<a name="l00070"></a>00070 {
89
 
<a name="l00071"></a>00071     <a class="code" href="a00040.html" title="bitvector with runtime compression of bits.">bm::bvector&lt;&gt;</a>   bv;    
90
 
<a name="l00072"></a>00072 
91
 
<a name="l00073"></a>00073     bv[10] = <span class="keyword">true</span>;
92
 
<a name="l00074"></a>00074     bv[100] = <span class="keyword">true</span>;
93
 
<a name="l00075"></a>00075     bv[10000] = <span class="keyword">true</span>;
94
 
<a name="l00076"></a>00076     
95
 
<a name="l00077"></a>00077     cout &lt;&lt; <span class="stringliteral">"Source set:"</span>;
96
 
<a name="l00078"></a>00078     <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>());
97
 
<a name="l00079"></a>00079     
98
 
<a name="l00080"></a>00080     <span class="comment">// copy all bitset information into STL vector using copy algorithm</span>
99
 
<a name="l00081"></a>00081     {
100
 
<a name="l00082"></a>00082         vector&lt;unsigned&gt; vect;
101
 
<a name="l00083"></a>00083         vect.resize(bv.<a class="code" href="a00040.html#71077c1315555301532e24d4d2b95ea2" title="Returns count of bits which are 1.">count</a>());
102
 
<a name="l00084"></a>00084         std::copy(bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>(), vect.begin());
103
 
<a name="l00085"></a>00085         cout &lt;&lt; <span class="stringliteral">"Vector:"</span>;
104
 
<a name="l00086"></a>00086         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(vect.begin(), vect.end());
105
 
<a name="l00087"></a>00087     }
106
 
<a name="l00088"></a>00088 
107
 
<a name="l00089"></a>00089     <span class="comment">// doing the same with the help of back_inserter</span>
108
 
<a name="l00090"></a>00090 
109
 
<a name="l00091"></a>00091     {
110
 
<a name="l00092"></a>00092         list&lt;unsigned&gt; lst;
111
 
<a name="l00093"></a>00093         std::copy(bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>(), std::back_inserter(lst));
112
 
<a name="l00094"></a>00094         cout &lt;&lt; <span class="stringliteral">"List:"</span>;
113
 
<a name="l00095"></a>00095         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(lst.begin(), lst.end());
114
 
<a name="l00096"></a>00096     }
115
 
<a name="l00097"></a>00097 
116
 
<a name="l00098"></a>00098     {
117
 
<a name="l00099"></a>00099         vector&lt;unsigned&gt;   vect;
118
 
<a name="l00100"></a>00100         vector&lt;unsigned&gt;   res1, res2, res3;
119
 
<a name="l00101"></a>00101         
120
 
<a name="l00102"></a>00102         vect.push_back(100);
121
 
<a name="l00103"></a>00103         vect.push_back(15);
122
 
<a name="l00104"></a>00104         vect.push_back(150);
123
 
<a name="l00105"></a>00105         
124
 
<a name="l00106"></a>00106         cout &lt;&lt; <span class="stringliteral">"Argument vector for set operations:"</span>;
125
 
<a name="l00107"></a>00107         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(vect.begin(), vect.end());
126
 
<a name="l00108"></a>00108         
127
 
<a name="l00109"></a>00109         <span class="comment">// set should be ordered by &lt; to make set algorithms possible</span>
128
 
<a name="l00110"></a>00110         std::sort(vect.begin(), vect.end());
129
 
<a name="l00111"></a>00111         cout &lt;&lt; endl;
130
 
<a name="l00112"></a>00112         
131
 
<a name="l00113"></a>00113         std::set_union(bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>(),
132
 
<a name="l00114"></a>00114                        vect.begin(), vect.end(),
133
 
<a name="l00115"></a>00115                        std::back_inserter(res1)); <span class="comment">//10;15;100;150;10000</span>
134
 
<a name="l00116"></a>00116         cout &lt;&lt; <span class="stringliteral">"Set union:"</span> &lt;&lt; endl;
135
 
<a name="l00117"></a>00117         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(res1.begin(), res1.end());
136
 
<a name="l00118"></a>00118         
137
 
<a name="l00119"></a>00119         std::set_intersection(bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>(),
138
 
<a name="l00120"></a>00120                               vect.begin(), vect.end(),
139
 
<a name="l00121"></a>00121                               std::back_inserter(res2));  <span class="comment">// 100</span>
140
 
<a name="l00122"></a>00122         cout &lt;&lt; <span class="stringliteral">"Set intersection:"</span> &lt;&lt; endl;
141
 
<a name="l00123"></a>00123         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(res2.begin(), res2.end());
142
 
<a name="l00124"></a>00124 
143
 
<a name="l00125"></a>00125         vector&lt;unsigned&gt;::const_iterator it1 = vect.begin();
144
 
<a name="l00126"></a>00126         vector&lt;unsigned&gt;::const_iterator it2 = vect.end();
145
 
<a name="l00127"></a>00127         <a class="code" href="a00040.html" title="bitvector with runtime compression of bits.">bm::bvector&lt;&gt;::enumerator</a> en = bv.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>();
146
 
<a name="l00128"></a>00128         <a class="code" href="a00040.html" title="bitvector with runtime compression of bits.">bm::bvector&lt;&gt;::enumerator</a> en2= bv.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>();
147
 
<a name="l00129"></a>00129         
148
 
<a name="l00130"></a>00130         std::set_difference(en, en2,
149
 
<a name="l00131"></a>00131                             it1, it2,
150
 
<a name="l00132"></a>00132                             std::back_inserter(res3));  <span class="comment">// 10;10000</span>
151
 
<a name="l00133"></a>00133 
152
 
<a name="l00134"></a>00134         cout &lt;&lt; <span class="stringliteral">"Set diff:"</span> &lt;&lt; endl;
153
 
<a name="l00135"></a>00135         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(res3.begin(), res3.end());
154
 
<a name="l00136"></a>00136         
155
 
<a name="l00137"></a>00137     }
156
 
<a name="l00138"></a>00138 
157
 
<a name="l00139"></a>00139     <span class="comment">// Using bvector&lt;&gt;::insert_iterator to set bits</span>
158
 
<a name="l00140"></a>00140     {
159
 
<a name="l00141"></a>00141         <a class="code" href="a00040.html" title="bitvector with runtime compression of bits.">bm::bvector&lt;&gt;</a> bv1;
160
 
<a name="l00142"></a>00142         std::vector&lt;unsigned&gt; vect;
161
 
<a name="l00143"></a>00143         
162
 
<a name="l00144"></a>00144         vect.push_back(300);
163
 
<a name="l00145"></a>00145         vect.push_back(200);
164
 
<a name="l00146"></a>00146         vect.push_back(275);
165
 
<a name="l00147"></a>00147         vect.push_back(200);
166
 
<a name="l00148"></a>00148         
167
 
<a name="l00149"></a>00149         cout &lt;&lt; endl &lt;&lt; <span class="stringliteral">"Source vector:"</span>;
168
 
<a name="l00150"></a>00150         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(vect.begin(), vect.end()); <span class="comment">// 300;200;275;200;</span>
169
 
<a name="l00151"></a>00151         
170
 
<a name="l00152"></a>00152         <span class="comment">// The "side effect" of this operation is that we sorted</span>
171
 
<a name="l00153"></a>00153         <span class="comment">// the input sequence and eliminated duplicates</span>
172
 
<a name="l00154"></a>00154         
173
 
<a name="l00155"></a>00155         std::copy(vect.begin(), vect.end(), bv1.<a class="code" href="a00040.html#da0d32bbd1a135722a7790b13d866451">inserter</a>());
174
 
<a name="l00156"></a>00156         cout &lt;&lt; <span class="stringliteral">"Bitset:"</span>;
175
 
<a name="l00157"></a>00157         
176
 
<a name="l00158"></a>00158         <a class="code" href="a00104.html#b7f435443f8dbf9f50e4ad0efea8b1f8">PrintContainer</a>(bv1.<a class="code" href="a00040.html#ad48c661f843e32c9893438a6f27a8f0" title="Returns enumerator pointing on the first non-zero bit.">first</a>(), bv1.<a class="code" href="a00040.html#2c6e522f858fdc466765d2c0f269f590" title="Returns enumerator pointing on the next bit after the last.">end</a>());  <span class="comment">// 200;275;300</span>
177
 
<a name="l00159"></a>00159     }
178
 
<a name="l00160"></a>00160     
179
 
<a name="l00161"></a>00161     
180
 
<a name="l00162"></a>00162     <span class="keywordflow">return</span> 0;
181
 
<a name="l00163"></a>00163 }
182
 
<a name="l00164"></a>00164 
183
 
</pre></div></div>
184
 
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Oct 12 12:16:39 2009 for BitMagic by&nbsp;
 
22
</div>
 
23
<div class="contents">
 
24
<h1>bvector serialization<br/>
 
25
<small>
 
26
[<a class="el" href="a00117.html">BitMagic C++ Library</a>]</small>
 
27
</h1>
 
28
<p><div class="dynheader">
 
29
Collaboration diagram for bvector serialization:</div>
 
30
<div class="dynsection">
 
31
<center><table><tr><td><img src="a00126.png" border="0" alt="" usemap="#a00126_map"/>
 
32
<map name="a00126_map" id="a00126">
 
33
<area shape="rect" href="a00117.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
 
34
</div>
 
35
</p>
 
36
<table border="0" cellpadding="0" cellspacing="0">
 
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
 
38
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00083.html">bm::serializer&lt; BV &gt;</a></td></tr>
 
39
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bit-vector serialization class.  <a href="a00083.html#_details">More...</a><br/></td></tr>
 
40
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00058.html">bm::deseriaizer_base&lt; DEC &gt;</a></td></tr>
 
41
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Base deserialization class.  <a href="a00058.html#_details">More...</a><br/></td></tr>
 
42
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00059.html">bm::deserializer&lt; BV, DEC &gt;</a></td></tr>
 
43
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class <a class="el" href="a00059.html" title="Class deserializer.">deserializer</a>.  <a href="a00059.html#_details">More...</a><br/></td></tr>
 
44
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00082.html">bm::serial_stream_iterator&lt; DEC &gt;</a></td></tr>
 
45
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Serialization stream iterator.  <a href="a00082.html#_details">More...</a><br/></td></tr>
 
46
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00076.html">bm::operation_deserializer&lt; BV &gt;</a></td></tr>
 
47
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class <a class="el" href="a00059.html" title="Class deserializer.">deserializer</a>, can perform logical operation on bit-vector and serialized bit-vector.  <a href="a00076.html#_details">More...</a><br/></td></tr>
 
48
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
 
49
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#ga537dfe6318f1f1fe18d86dac312be978">bm::serialization_flags</a> { <a class="el" href="a00126.html#gga537dfe6318f1f1fe18d86dac312be978acdd8c071c079589388c3ca7bd4f367c8">bm::BM_NO_BYTE_ORDER</a> =  1, 
 
50
<a class="el" href="a00126.html#gga537dfe6318f1f1fe18d86dac312be978a5521473081d341bc32ac59538e6a8096">bm::BM_NO_GAP_LENGTH</a> =  (1 &lt;&lt; 1)
 
51
 }</td></tr>
 
52
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Bit mask flags for serialization algorithm. </p>
 
53
 <a href="a00126.html#ga537dfe6318f1f1fe18d86dac312be978">More...</a><br/></td></tr>
 
54
<tr><td colspan="2"><h2>Functions</h2></td></tr>
 
55
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
 
56
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00126.html#ga5210c3bda57254ef2e8c71e23306cc88">bm::serialize</a> (const BV &amp;bv, unsigned char *buf, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *temp_block, unsigned serialization_flags=0)</td></tr>
 
57
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Saves bitvector into memory.  <a href="#ga5210c3bda57254ef2e8c71e23306cc88"></a><br/></td></tr>
 
58
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
 
59
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00126.html#ga213033b5cc6add74aa4bd1d614b56192">bm::serialize</a> (BV &amp;bv, unsigned char *buf, unsigned serialization_flags=0)</td></tr>
 
60
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Saves bitvector into memory. Allocates temporary memory block for <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a>.  <a href="#ga213033b5cc6add74aa4bd1d614b56192"></a><br/></td></tr>
 
61
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
 
62
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00126.html#gafbe633db8da3d867f098468269fd8d3d">bm::deserialize</a> (BV &amp;bv, const unsigned char *buf, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *temp_block=0)</td></tr>
 
63
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitvector deserialization from memory.  <a href="#gafbe633db8da3d867f098468269fd8d3d"></a><br/></td></tr>
 
64
</table>
 
65
<hr/><a name="_details"></a><h2>Detailed Description</h2>
 
66
<p>bvector serialization </p>
 
67
<hr/><h2>Enumeration Type Documentation</h2>
 
68
<a class="anchor" id="ga537dfe6318f1f1fe18d86dac312be978"></a><!-- doxytag: member="bm::serialization_flags" ref="ga537dfe6318f1f1fe18d86dac312be978" args="" -->
 
69
<div class="memitem">
 
70
<div class="memproto">
 
71
      <table class="memname">
 
72
        <tr>
 
73
          <td class="memname">enum <a class="el" href="a00126.html#ga537dfe6318f1f1fe18d86dac312be978">bm::serialization_flags</a></td>
 
74
        </tr>
 
75
      </table>
 
76
</div>
 
77
<div class="memdoc">
 
78
 
 
79
<p>Bit mask flags for serialization algorithm. </p>
 
80
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
 
81
<tr><td valign="top"><em><a class="anchor" id="gga537dfe6318f1f1fe18d86dac312be978acdd8c071c079589388c3ca7bd4f367c8"></a><!-- doxytag: member="BM_NO_BYTE_ORDER" ref="gga537dfe6318f1f1fe18d86dac312be978acdd8c071c079589388c3ca7bd4f367c8" args="" -->BM_NO_BYTE_ORDER</em>&nbsp;</td><td>
 
82
<p>save no byte-order info (save some space) </p>
 
83
</td></tr>
 
84
<tr><td valign="top"><em><a class="anchor" id="gga537dfe6318f1f1fe18d86dac312be978a5521473081d341bc32ac59538e6a8096"></a><!-- doxytag: member="BM_NO_GAP_LENGTH" ref="gga537dfe6318f1f1fe18d86dac312be978a5521473081d341bc32ac59538e6a8096" args="" -->BM_NO_GAP_LENGTH</em>&nbsp;</td><td>
 
85
<p>save no GAP info (save some space) </p>
 
86
</td></tr>
 
87
</table>
 
88
</dd>
 
89
</dl>
 
90
 
 
91
<p>Definition at line <a class="el" href="a00096_source.html#l00981">981</a> of file <a class="el" href="a00096_source.html">bmserial.h</a>.</p>
 
92
 
 
93
</div>
 
94
</div>
 
95
<hr/><h2>Function Documentation</h2>
 
96
<a class="anchor" id="gafbe633db8da3d867f098468269fd8d3d"></a><!-- doxytag: member="bm::deserialize" ref="gafbe633db8da3d867f098468269fd8d3d" args="(BV &amp;bv, const unsigned char *buf, bm::word_t *temp_block=0)" -->
 
97
<div class="memitem">
 
98
<div class="memproto">
 
99
<div class="memtemplate">
 
100
template&lt;class BV &gt; </div>
 
101
      <table class="memname">
 
102
        <tr>
 
103
          <td class="memname">unsigned bm::deserialize </td>
 
104
          <td>(</td>
 
105
          <td class="paramtype">BV &amp;&nbsp;</td>
 
106
          <td class="paramname"> <em>bv</em>, </td>
 
107
        </tr>
 
108
        <tr>
 
109
          <td class="paramkey"></td>
 
110
          <td></td>
 
111
          <td class="paramtype">const unsigned char *&nbsp;</td>
 
112
          <td class="paramname"> <em>buf</em>, </td>
 
113
        </tr>
 
114
        <tr>
 
115
          <td class="paramkey"></td>
 
116
          <td></td>
 
117
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
118
          <td class="paramname"> <em>temp_block</em> = <code>0</code></td><td>&nbsp;</td>
 
119
        </tr>
 
120
        <tr>
 
121
          <td></td>
 
122
          <td>)</td>
 
123
          <td></td><td></td><td><code> [inline]</code></td>
 
124
        </tr>
 
125
      </table>
 
126
</div>
 
127
<div class="memdoc">
 
128
 
 
129
<p>Bitvector deserialization from memory. </p>
 
130
<dl><dt><b>Parameters:</b></dt><dd>
 
131
  <table border="0" cellspacing="2" cellpadding="0">
 
132
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- pointer on memory which keeps serialized <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> </td></tr>
 
133
    <tr><td valign="top"></td><td valign="top"><em>temp_block</em>&nbsp;</td><td>- pointer on temporary block, if NULL <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> allocates own. </td></tr>
 
134
  </table>
 
135
  </dd>
 
136
</dl>
 
137
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of bytes consumed by <a class="el" href="a00059.html" title="Class deserializer.">deserializer</a>.</dd></dl>
 
138
<p>Function desrializes bitvector from memory block containig results of previous serialization. Function does not remove bits which are currently set. Effectively it means OR logical operation between current bitset and previously serialized one. </p>
 
139
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00004.html#a21">sample4.cpp</a>.</dd>
 
140
</dl>
 
141
<p>Definition at line <a class="el" href="a00096_source.html#l01090">1090</a> of file <a class="el" href="a00096_source.html">bmserial.h</a>.</p>
 
142
 
 
143
<p>References <a class="el" href="a00093_source.html#l00399">bm::BigEndian</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00096_source.html#l00099">bm::BM_HM_NO_BO</a>, <a class="el" href="a00093_source.html#l00441">bm::globals&lt; T &gt;::byte_order()</a>, <a class="el" href="a00096_source.html#l01453">bm::deserializer&lt; BV, DEC &gt;::deserialize()</a>, <a class="el" href="a00104_source.html#l00079">bm::decoder_base::get_8()</a>, and <a class="el" href="a00093_source.html#l00400">bm::LittleEndian</a>.</p>
 
144
 
 
145
<p>Referenced by <a class="el" href="a00109_source.html#l00107">main()</a>.</p>
 
146
 
 
147
</div>
 
148
</div>
 
149
<a class="anchor" id="ga213033b5cc6add74aa4bd1d614b56192"></a><!-- doxytag: member="bm::serialize" ref="ga213033b5cc6add74aa4bd1d614b56192" args="(BV &amp;bv, unsigned char *buf, unsigned serialization_flags=0)" -->
 
150
<div class="memitem">
 
151
<div class="memproto">
 
152
<div class="memtemplate">
 
153
template&lt;class BV &gt; </div>
 
154
      <table class="memname">
 
155
        <tr>
 
156
          <td class="memname">unsigned bm::serialize </td>
 
157
          <td>(</td>
 
158
          <td class="paramtype">BV &amp;&nbsp;</td>
 
159
          <td class="paramname"> <em>bv</em>, </td>
 
160
        </tr>
 
161
        <tr>
 
162
          <td class="paramkey"></td>
 
163
          <td></td>
 
164
          <td class="paramtype">unsigned char *&nbsp;</td>
 
165
          <td class="paramname"> <em>buf</em>, </td>
 
166
        </tr>
 
167
        <tr>
 
168
          <td class="paramkey"></td>
 
169
          <td></td>
 
170
          <td class="paramtype">unsigned&nbsp;</td>
 
171
          <td class="paramname"> <em>serialization_flags</em> = <code>0</code></td><td>&nbsp;</td>
 
172
        </tr>
 
173
        <tr>
 
174
          <td></td>
 
175
          <td>)</td>
 
176
          <td></td><td></td><td><code> [inline]</code></td>
 
177
        </tr>
 
178
      </table>
 
179
</div>
 
180
<div class="memdoc">
 
181
 
 
182
<p>Saves bitvector into memory. Allocates temporary memory block for <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a>. </p>
 
183
 
 
184
<p>Definition at line <a class="el" href="a00096_source.html#l01054">1054</a> of file <a class="el" href="a00096_source.html">bmserial.h</a>.</p>
 
185
 
 
186
<p>References <a class="el" href="a00096_source.html#l00982">bm::BM_NO_BYTE_ORDER</a>, <a class="el" href="a00096_source.html#l00983">bm::BM_NO_GAP_LENGTH</a>, <a class="el" href="a00096_source.html#l00524">bm::serializer&lt; BV &gt;::byte_order_serialization()</a>, <a class="el" href="a00096_source.html#l00518">bm::serializer&lt; BV &gt;::gap_length_serialization()</a>, <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>, and <a class="el" href="a00096_source.html#l00499">bm::serializer&lt; BV &gt;::set_compression_level()</a>.</p>
 
187
 
 
188
</div>
 
189
</div>
 
190
<a class="anchor" id="ga5210c3bda57254ef2e8c71e23306cc88"></a><!-- doxytag: member="bm::serialize" ref="ga5210c3bda57254ef2e8c71e23306cc88" args="(const BV &amp;bv, unsigned char *buf, bm::word_t *temp_block, unsigned serialization_flags=0)" -->
 
191
<div class="memitem">
 
192
<div class="memproto">
 
193
<div class="memtemplate">
 
194
template&lt;class BV &gt; </div>
 
195
      <table class="memname">
 
196
        <tr>
 
197
          <td class="memname">unsigned bm::serialize </td>
 
198
          <td>(</td>
 
199
          <td class="paramtype">const BV &amp;&nbsp;</td>
 
200
          <td class="paramname"> <em>bv</em>, </td>
 
201
        </tr>
 
202
        <tr>
 
203
          <td class="paramkey"></td>
 
204
          <td></td>
 
205
          <td class="paramtype">unsigned char *&nbsp;</td>
 
206
          <td class="paramname"> <em>buf</em>, </td>
 
207
        </tr>
 
208
        <tr>
 
209
          <td class="paramkey"></td>
 
210
          <td></td>
 
211
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
212
          <td class="paramname"> <em>temp_block</em>, </td>
 
213
        </tr>
 
214
        <tr>
 
215
          <td class="paramkey"></td>
 
216
          <td></td>
 
217
          <td class="paramtype">unsigned&nbsp;</td>
 
218
          <td class="paramname"> <em>serialization_flags</em> = <code>0</code></td><td>&nbsp;</td>
 
219
        </tr>
 
220
        <tr>
 
221
          <td></td>
 
222
          <td>)</td>
 
223
          <td></td><td></td><td><code> [inline]</code></td>
 
224
        </tr>
 
225
      </table>
 
226
</div>
 
227
<div class="memdoc">
 
228
 
 
229
<p>Saves bitvector into memory. </p>
 
230
<p>Function serializes content of the bitvector into memory. Serialization adaptively uses compression(variation of GAP encoding) when it is benefitial.</p>
 
231
<dl><dt><b>Parameters:</b></dt><dd>
 
232
  <table border="0" cellspacing="2" cellpadding="0">
 
233
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</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>
 
234
    <tr><td valign="top"></td><td valign="top"><em>temp_block</em>&nbsp;</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. (Of course serialize does not deallocate temp_block.)</td></tr>
 
235
    <tr><td valign="top"></td><td valign="top"><em>serialization_flags</em>&nbsp;</td><td>Flags controlling serilization (bit-mask) (use OR-ed serialization flags)</td></tr>
 
236
  </table>
 
237
  </dd>
 
238
</dl>
 
239
<dl class="return"><dt><b>Returns:</b></dt><dd>Size of serialization block. </dd></dl>
 
240
<dl class="see"><dt><b>See also:</b></dt><dd>calc_stat, <a class="el" href="a00126.html#ga537dfe6318f1f1fe18d86dac312be978" title="Bit mask flags for serialization algorithm.">serialization_flags</a> </dd></dl>
 
241
 
 
242
<p>Definition at line <a class="el" href="a00096_source.html#l01028">1028</a> of file <a class="el" href="a00096_source.html">bmserial.h</a>.</p>
 
243
 
 
244
<p>References <a class="el" href="a00096_source.html#l00982">bm::BM_NO_BYTE_ORDER</a>, <a class="el" href="a00096_source.html#l00983">bm::BM_NO_GAP_LENGTH</a>, <a class="el" href="a00096_source.html#l00524">bm::serializer&lt; BV &gt;::byte_order_serialization()</a>, <a class="el" href="a00096_source.html#l00518">bm::serializer&lt; BV &gt;::gap_length_serialization()</a>, <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>, and <a class="el" href="a00096_source.html#l00499">bm::serializer&lt; BV &gt;::set_compression_level()</a>.</p>
 
245
 
 
246
</div>
 
247
</div>
 
248
</div>
 
249
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:20 2010 for BitMagic by&nbsp;
185
250
<a href="http://www.doxygen.org/index.html">
186
 
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
 
251
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
187
252
</body>
188
253
</html>