66
66
<span class="comment">// number of elements allocated. On deallocation it makes sure</span>
67
67
<span class="comment">// it deallocates the same size as allocated</span>
69
<span class="keyword">class </span><a name="_a0"></a><a class="code" href="a00051.html">dbg_block_allocator</a>
69
<span class="keyword">class </span><a name="_a0"></a><a class="code" href="a00050.html">dbg_block_allocator</a>
71
71
<span class="keyword">public</span>:
72
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a1"></a><a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
73
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a2"></a><a class="code" href="a00051.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
72
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a1"></a><a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
73
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a2"></a><a class="code" href="a00050.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
75
<span class="keyword">static</span> <a name="a3"></a><a class="code" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* <a name="a4"></a><a class="code" href="a00051.html#a93d82be8946cf5b72c9d7c6cb956e804">allocate</a>(<span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">void</span> *)
75
<span class="keyword">static</span> <a name="a3"></a><a class="code" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* <a name="a4"></a><a class="code" href="a00050.html#a93d82be8946cf5b72c9d7c6cb956e804">allocate</a>(<span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">void</span> *)
77
++<a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
77
++<a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
79
<a class="code" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* p =
80
(<a class="code" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>*) ::malloc((n+1) * <span class="keyword">sizeof</span>(<a class="code" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>));
79
<a class="code" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* p =
80
(<a class="code" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>*) ::malloc((n+1) * <span class="keyword">sizeof</span>(<a class="code" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>));
82
82
<span class="keywordflow">return</span> ++p;
85
<span class="keyword">static</span> <span class="keywordtype">void</span> <a name="a5"></a><a class="code" href="a00051.html#a56d40f419ba5f9e54b61d8ab88f93866">deallocate</a>(<a class="code" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* p, <span class="keywordtype">size_t</span> n)
85
<span class="keyword">static</span> <span class="keywordtype">void</span> <a name="a5"></a><a class="code" href="a00050.html#a56d40f419ba5f9e54b61d8ab88f93866">deallocate</a>(<a class="code" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* p, <span class="keywordtype">size_t</span> n)
87
++<a class="code" href="a00051.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
87
++<a class="code" href="a00050.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
93
<span class="keyword">static</span> <span class="keywordtype">int</span> <a name="a6"></a><a class="code" href="a00051.html#a316046faa0e5010b9d4b4881977dde49">balance</a>()
93
<span class="keyword">static</span> <span class="keywordtype">int</span> <a name="a6"></a><a class="code" href="a00050.html#a316046faa0e5010b9d4b4881977dde49">balance</a>()
95
<span class="keywordflow">return</span> <a class="code" href="a00051.html#aadb605865e1f0ea195000e51e90001e6">nf_</a> - <a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
95
<span class="keywordflow">return</span> <a class="code" href="a00050.html#aadb605865e1f0ea195000e51e90001e6">nf_</a> - <a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
99
<span class="keywordtype">unsigned</span> <a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> = 0;
100
<span class="keywordtype">unsigned</span> <a class="code" href="a00051.html#aadb605865e1f0ea195000e51e90001e6">dbg_block_allocator::nf_</a> = 0;
99
<span class="keywordtype">unsigned</span> <a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> = 0;
100
<span class="keywordtype">unsigned</span> <a class="code" href="a00050.html#aadb605865e1f0ea195000e51e90001e6">dbg_block_allocator::nf_</a> = 0;
102
<span class="keyword">class </span><a name="_a7"></a><a class="code" href="a00052.html">dbg_ptr_allocator</a>
102
<span class="keyword">class </span><a name="_a7"></a><a class="code" href="a00051.html">dbg_ptr_allocator</a>
104
104
<span class="keyword">public</span>:
105
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a8"></a><a class="code" href="a00052.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
106
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a9"></a><a class="code" href="a00052.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a>;
105
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a8"></a><a class="code" href="a00051.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
106
<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a name="a9"></a><a class="code" href="a00051.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a>;
108
<span class="keyword">static</span> <span class="keywordtype">void</span>* <a name="a10"></a><a class="code" href="a00052.html#a15a6c29419ebabc9221051cdd63e9495">allocate</a>(<span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">void</span> *)
108
<span class="keyword">static</span> <span class="keywordtype">void</span>* <a name="a10"></a><a class="code" href="a00051.html#a15a6c29419ebabc9221051cdd63e9495">allocate</a>(<span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">void</span> *)
110
++<a class="code" href="a00052.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
110
++<a class="code" href="a00051.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
111
111
assert(<span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>) == <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*));
112
112
<span class="keywordtype">void</span>* p = ::malloc((n+1) * <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*));
113
113
<span class="keywordtype">size_t</span>* s = (<span class="keywordtype">size_t</span>*) p;
115
115
<span class="keywordflow">return</span> (<span class="keywordtype">void</span>*)++s;
118
<span class="keyword">static</span> <span class="keywordtype">void</span> <a name="a11"></a><a class="code" href="a00052.html#a89cd3e8e84ef4a4598446ba8fa8c10a3">deallocate</a>(<span class="keywordtype">void</span>* p, <span class="keywordtype">size_t</span> n)
118
<span class="keyword">static</span> <span class="keywordtype">void</span> <a name="a11"></a><a class="code" href="a00051.html#a89cd3e8e84ef4a4598446ba8fa8c10a3">deallocate</a>(<span class="keywordtype">void</span>* p, <span class="keywordtype">size_t</span> n)
120
++<a class="code" href="a00052.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a>;
120
++<a class="code" href="a00051.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a>;
121
121
<span class="keywordtype">size_t</span>* s = (<span class="keywordtype">size_t</span>*) p;
127
<span class="keyword">static</span> <span class="keywordtype">int</span> <a name="a12"></a><a class="code" href="a00052.html#a521bc1068c669de23dc20d582d229918">balance</a>()
127
<span class="keyword">static</span> <span class="keywordtype">int</span> <a name="a12"></a><a class="code" href="a00051.html#a521bc1068c669de23dc20d582d229918">balance</a>()
129
<span class="keywordflow">return</span> <a class="code" href="a00052.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a> - <a class="code" href="a00052.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
129
<span class="keywordflow">return</span> <a class="code" href="a00051.html#afbbe7e12818ba2c51358b66d00fc05f0">nf_</a> - <a class="code" href="a00051.html#a1839c318b76fefce64ba0a0aba52e2b0">na_</a>;
134
<span class="keywordtype">unsigned</span> <a class="code" href="a00052.html#a1839c318b76fefce64ba0a0aba52e2b0">dbg_ptr_allocator::na_</a> = 0;
135
<span class="keywordtype">unsigned</span> <a class="code" href="a00052.html#afbbe7e12818ba2c51358b66d00fc05f0">dbg_ptr_allocator::nf_</a> = 0;
138
<span class="keyword">typedef</span> <a name="_a13"></a><a class="code" href="a00074.html" title="BM style allocator adapter.">bm::mem_alloc<dbg_block_allocator, dbg_ptr_allocator></a> <a class="code" href="a00074.html" title="BM style allocator adapter.">dbg_alloc</a>;
140
<span class="keyword">typedef</span> <a name="_a14"></a><a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bm::bvector<dbg_alloc></a> <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>;
144
<span class="keywordtype">int</span> <a name="a15"></a><a class="code" href="a00106.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
134
<span class="keywordtype">unsigned</span> <a class="code" href="a00051.html#a1839c318b76fefce64ba0a0aba52e2b0">dbg_ptr_allocator::na_</a> = 0;
135
<span class="keywordtype">unsigned</span> <a class="code" href="a00051.html#afbbe7e12818ba2c51358b66d00fc05f0">dbg_ptr_allocator::nf_</a> = 0;
138
<span class="keyword">typedef</span> <a name="_a13"></a><a class="code" href="a00073.html" title="BM style allocator adapter.">bm::mem_alloc<dbg_block_allocator, dbg_ptr_allocator></a> <a class="code" href="a00073.html" title="BM style allocator adapter.">dbg_alloc</a>;
140
<span class="keyword">typedef</span> <a name="_a14"></a><a class="code" href="a00043.html" title="bitvector with runtime compression of bits.">bm::bvector<dbg_alloc></a> <a class="code" href="a00043.html" title="bitvector with runtime compression of bits.">bvect</a>;
144
<span class="keywordtype">int</span> <a name="a15"></a><a class="code" href="a00105.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
151
151
bv[10000000] = <span class="keyword">false</span>;
154
cout << <span class="stringliteral">"Number of BLOCK allocations = "</span> << <a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> << endl;
154
cout << <span class="stringliteral">"Number of BLOCK allocations = "</span> << <a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> << endl;
155
155
cout << <span class="stringliteral">"Number of PTR allocations = "</span> << dbg_ptr_allocator::na_ << endl;
157
assert(<a class="code" href="a00051.html#a316046faa0e5010b9d4b4881977dde49">dbg_block_allocator::balance</a>() == 0);
158
assert(<a class="code" href="a00052.html#a521bc1068c669de23dc20d582d229918">dbg_ptr_allocator::balance</a>() == 0);
157
assert(<a class="code" href="a00050.html#a316046faa0e5010b9d4b4881977dde49">dbg_block_allocator::balance</a>() == 0);
158
assert(<a class="code" href="a00051.html#a521bc1068c669de23dc20d582d229918">dbg_ptr_allocator::balance</a>() == 0);
160
160
<span class="keywordflow">return</span> 0;
164
164
</pre></div> </div>
165
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 23 20:47:54 2010 for BitMagic by
165
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Apr 25 09:37:27 2010 for BitMagic by
166
166
<a href="http://www.doxygen.org/index.html">
167
167
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>