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

« back to all changes in this revision

Viewing changes to doc/html/a00007.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2010-04-08 16:47:58 UTC
  • mfrom: (4.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20100408164758-3vu6wmrk1dnzqnnj
Tags: 3.6.4-1
* New upstream release
* Update to Standards-Version 3.8.4 (no changes)

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
<span class="comment">// If you do not disable bits in pointer the second template parameter of bvector</span>
70
70
<span class="comment">// is simply ignored and portion of this example is becoming irrelevant.</span>
71
71
<span class="preprocessor">#define BM_DISBALE_BIT_IN_PTR</span>
72
 
<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="a00087.html">bm.h</a>&quot;</span>
 
72
<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="a00088.html">bm.h</a>&quot;</span>
73
73
 
74
74
<span class="keyword">using namespace </span>std;
75
75
 
80
80
                    <a name="_a2"></a><a class="code" href="a00075.html" title="Template class implements memory saving set functionality.">bm::miniset&lt;bm::block_allocator, bm::set_total_blocks&gt;</a> &gt; <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>;
81
81
 
82
82
 
83
 
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a3"></a><a class="code" href="a00112.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a> = 10000;
84
 
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a4"></a><a class="code" href="a00112.html#a0be29ed34efa43589f6c14e4e9f5dbc4">randombits</a> = 150;
85
 
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a5"></a><a class="code" href="a00112.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a> = 100000000;
 
83
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a3"></a><a class="code" href="a00113.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a> = 10000;
 
84
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a4"></a><a class="code" href="a00113.html#a0be29ed34efa43589f6c14e4e9f5dbc4">randombits</a> = 150;
 
85
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a name="a5"></a><a class="code" href="a00113.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a> = 100000000;
86
86
 
87
 
<a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>*  <a name="a6"></a><a class="code" href="a00112.html#aef9a3bedb74930ffc25d49f7ac4ba1eb">bitsets</a>[<a class="code" href="a00112.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>];
 
87
<a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>*  <a name="a6"></a><a class="code" href="a00113.html#aef9a3bedb74930ffc25d49f7ac4ba1eb">bitsets</a>[<a class="code" href="a00113.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>];
88
88
 
89
89
<span class="comment">// ---------------------------------------------------------</span>
90
90
 
91
 
<span class="keywordtype">void</span> <a name="a7"></a><a class="code" href="a00112.html#adb34fb3c04bbc949324b069298b6ad60">CreateSets</a>()
 
91
<span class="keywordtype">void</span> <a name="a7"></a><a class="code" href="a00113.html#adb34fb3c04bbc949324b069298b6ad60">CreateSets</a>()
92
92
{
93
93
    <span class="keywordtype">unsigned</span> mu = 0;
94
 
    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; <a class="code" href="a00112.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>; ++i)
 
94
    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; <a class="code" href="a00113.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>; ++i)
95
95
    {
96
96
        <span class="keywordflow">if</span> ((i % 100) == 0) { cout &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>; cout.flush(); }
97
97
        <span class="comment">// create bitvector using in GAP mode using an alternative</span>
98
98
        <span class="comment">// GAP levels table (minimalistic).</span>
99
99
        bitsets[i] = 
100
 
            <span class="keyword">new</span> <a name="a8"></a><a class="code" href="a00111.html#ac07bb102df543a0c581493c5f35b2129">bvect</a>(<a name="a9"></a><a class="code" href="a00118.html#ggad0b87b3b7292383a864d27feaf1c9effa7fe09d1d7c62a813db922c396c0cbc9c" title="GAP compression is ON.">bm::BM_GAP</a>, <a name="_a10"></a><a class="code" href="a00068.html" title="Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets...">bm::gap_len_table_min&lt;true&gt;::_len</a>, <a class="code" href="a00112.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>);
 
100
            <span class="keyword">new</span> <a name="a8"></a><a class="code" href="a00112.html#ac07bb102df543a0c581493c5f35b2129">bvect</a>(<a name="a9"></a><a class="code" href="a00119.html#ggad0b87b3b7292383a864d27feaf1c9effa7fe09d1d7c62a813db922c396c0cbc9c" title="GAP compression is ON.">bm::BM_GAP</a>, <a name="_a10"></a><a class="code" href="a00068.html" title="Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets...">bm::gap_len_table_min&lt;true&gt;::_len</a>, <a class="code" href="a00113.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>);
101
101
        <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>&amp; bv = *bitsets[i];
102
 
        <a name="_a11"></a><a class="code" href="a00085.html" title="Statistical information about bitset&amp;#39;s memory allocation details.">bvect::statistics</a> st;
 
102
        <a name="_a11"></a><a class="code" href="a00086.html" title="Statistical information about bitset&amp;#39;s memory allocation details.">bvect::statistics</a> st;
103
103
        bv.<a name="a12"></a><a class="code" href="a00044.html#a1eaaac76a97b9eb1d3c11f21cf9385ac" title="Calculates bitvector statistics.">calc_stat</a>(&amp;st);
104
104
        mu += st.<a name="a13"></a><a class="code" href="a00043.html#ad3b2190eb4afe24ecd56323cbc0a7666" title="Memory used by bitvector including temp and service blocks.">memory_used</a>;
105
105
    }
109
109
 
110
110
<span class="comment">// ---------------------------------------------------------</span>
111
111
 
112
 
<span class="keywordtype">void</span> <a name="a14"></a><a class="code" href="a00112.html#a8b36b27c3c40d9e559c078673a3a4dc9">FillSets</a>()
 
112
<span class="keywordtype">void</span> <a name="a14"></a><a class="code" href="a00113.html#a8b36b27c3c40d9e559c078673a3a4dc9">FillSets</a>()
113
113
{
114
114
    <span class="keywordtype">unsigned</span> mu, bit_blocks, gap_blocks;
115
115
    cout &lt;&lt; <span class="stringliteral">&quot;Filling sets...&quot;</span>;
116
116
    mu = bit_blocks = gap_blocks = 0;
117
 
    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; <a class="code" href="a00112.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>; ++i)
 
117
    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; <a class="code" href="a00113.html#a2508b4033cfced61642ad9358d67dd2a">setscount</a>; ++i)
118
118
    {
119
119
        <span class="keywordflow">if</span> ((i % 100) == 0) { cout &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>; cout.flush(); }
120
120
        <span class="keywordflow">if</span> ((i % 3) == 0) <span class="keywordflow">continue</span>;
121
121
        <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>&amp; bv = *bitsets[i];
122
122
        <span class="keywordtype">unsigned</span> bn = 0;
123
 
        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j &lt; <a class="code" href="a00112.html#a0be29ed34efa43589f6c14e4e9f5dbc4">randombits</a>; j+=3)
 
123
        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j &lt; <a class="code" href="a00113.html#a0be29ed34efa43589f6c14e4e9f5dbc4">randombits</a>; j+=3)
124
124
        {
125
 
            bn += (<a class="code" href="a00112.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a> / randombits) + rand() % 10;
126
 
            <span class="keywordflow">if</span> (bn &gt; <a class="code" href="a00112.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>) bn = rand() % <a class="code" href="a00112.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>;
 
125
            bn += (<a class="code" href="a00113.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a> / randombits) + rand() % 10;
 
126
            <span class="keywordflow">if</span> (bn &gt; <a class="code" href="a00113.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>) bn = rand() % <a class="code" href="a00113.html#a1b239e2f0f190ff4df0b359f8b601644">maxbit</a>;
127
127
 
128
128
            bv[bn] = <span class="keyword">true</span>;
129
129
            bv[bn+1] = <span class="keyword">true</span>;
130
130
            bv[bn+2] = <span class="keyword">true</span>;
131
131
        }
132
 
        <a class="code" href="a00085.html" title="Statistical information about bitset&amp;#39;s memory allocation details.">bvect::statistics</a> st;
 
132
        <a class="code" href="a00086.html" title="Statistical information about bitset&amp;#39;s memory allocation details.">bvect::statistics</a> st;
133
133
        bv.<a class="code" href="a00044.html#a1eaaac76a97b9eb1d3c11f21cf9385ac" title="Calculates bitvector statistics.">calc_stat</a>(&amp;st);
134
134
        mu += st.<a class="code" href="a00043.html#ad3b2190eb4afe24ecd56323cbc0a7666" title="Memory used by bitvector including temp and service blocks.">memory_used</a>;
135
135
        bit_blocks += st.<a name="a15"></a><a class="code" href="a00043.html#a4ec8ba190b4ba31c431c008402881c62" title="Number of bit blocks.">bit_blocks</a>;
143
143
 
144
144
<span class="comment">// ---------------------------------------------------------</span>
145
145
 
146
 
<span class="keywordtype">void</span> <a name="a17"></a><a class="code" href="a00112.html#a5cb27a7766b9e7c1ea79b2741714b404">EnumerateSets</a>()
 
146
<span class="keywordtype">void</span> <a name="a17"></a><a class="code" href="a00113.html#a5cb27a7766b9e7c1ea79b2741714b404">EnumerateSets</a>()
147
147
{
148
148
    cout &lt;&lt; <span class="stringliteral">&quot;Enumerating sets...&quot;</span>;
149
149
    <span class="keywordtype">unsigned</span> bitcnt = 0;
165
165
 
166
166
<span class="comment">// ---------------------------------------------------------</span>
167
167
 
168
 
<span class="keywordtype">void</span> <a name="a21"></a><a class="code" href="a00112.html#aa777f579687be6096cdbb8b2d70baf6e">DestroySets</a>()
 
168
<span class="keywordtype">void</span> <a name="a21"></a><a class="code" href="a00113.html#aa777f579687be6096cdbb8b2d70baf6e">DestroySets</a>()
169
169
{
170
170
    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; setscount; ++i)
171
171
    {
175
175
 
176
176
<span class="comment">// ---------------------------------------------------------</span>
177
177
 
178
 
<span class="keywordtype">void</span> <a name="a22"></a><a class="code" href="a00112.html#a1bdd608971ec7ea3d5c76cf21c7d92e7">OrSets</a>()
 
178
<span class="keywordtype">void</span> <a name="a22"></a><a class="code" href="a00113.html#a1bdd608971ec7ea3d5c76cf21c7d92e7">OrSets</a>()
179
179
{
180
180
    <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a> res;
181
181
    cout &lt;&lt; <span class="stringliteral">&quot;Calculating Or...&quot;</span>;
193
193
 
194
194
 
195
195
 
196
 
<span class="keywordtype">int</span> <a name="a24"></a><a class="code" href="a00105.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
 
196
<span class="keywordtype">int</span> <a name="a24"></a><a class="code" href="a00106.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
197
197
{
198
198
    time_t start_time = time(0);
199
199
 
200
 
    <a class="code" href="a00112.html#adb34fb3c04bbc949324b069298b6ad60">CreateSets</a>();
201
 
    <a class="code" href="a00112.html#a8b36b27c3c40d9e559c078673a3a4dc9">FillSets</a>();
202
 
    <a class="code" href="a00112.html#a5cb27a7766b9e7c1ea79b2741714b404">EnumerateSets</a>();
203
 
    <a class="code" href="a00112.html#a1bdd608971ec7ea3d5c76cf21c7d92e7">OrSets</a>();
 
200
    <a class="code" href="a00113.html#adb34fb3c04bbc949324b069298b6ad60">CreateSets</a>();
 
201
    <a class="code" href="a00113.html#a8b36b27c3c40d9e559c078673a3a4dc9">FillSets</a>();
 
202
    <a class="code" href="a00113.html#a5cb27a7766b9e7c1ea79b2741714b404">EnumerateSets</a>();
 
203
    <a class="code" href="a00113.html#a1bdd608971ec7ea3d5c76cf21c7d92e7">OrSets</a>();
204
204
 
205
205
    time_t end_time = time(0);
206
206
    <span class="keywordtype">unsigned</span> elapsed = unsigned(end_time - start_time);
214
214
    cout &lt;&lt; <span class="stringliteral">&quot;Time = &quot;</span> &lt;&lt; (end_time - start_time) &lt;&lt; endl;
215
215
    cout &lt;&lt; <span class="stringliteral">&quot;Operations per second:&quot;</span> &lt;&lt; ops &lt;&lt; endl;
216
216
 
217
 
    <a class="code" href="a00112.html#aa777f579687be6096cdbb8b2d70baf6e">DestroySets</a>();
 
217
    <a class="code" href="a00113.html#aa777f579687be6096cdbb8b2d70baf6e">DestroySets</a>();
218
218
 
219
219
    <span class="keywordflow">return</span> 0;
220
220
}
221
221
 
222
222
  
223
223
</pre></div> </div>
224
 
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:19 2010 for BitMagic by&nbsp;
 
224
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 23 20:47:54 2010 for BitMagic by&nbsp;
225
225
<a href="http://www.doxygen.org/index.html">
226
226
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
227
227
</body>