~ubuntu-branches/ubuntu/oneiric/bmagic/oneiric

« back to all changes in this revision

Viewing changes to doc/html/a00006.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2011-03-03 12:22:16 UTC
  • mfrom: (4.1.8 sid)
  • Revision ID: james.westby@ubuntu.com-20110303122216-qll5migewxnxe3s5
Tags: 3.7.0-1
* New upstream release (Closes: #615929)
* Update to Standards-Version 3.9.1 (no changes)
* Specify Debian source format as '3.0 (quilt)'

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
<span class="comment">*/</span>
56
56
 
57
57
<span class="preprocessor">#include &lt;iostream&gt;</span>
58
 
<span class="preprocessor">#include &lt;assert.h&gt;</span>
59
 
<span class="preprocessor">#include &quot;<a class="code" href="a00088.html">bm.h</a>&quot;</span>
 
58
<span class="preprocessor">#include &lt;cassert&gt;</span>
 
59
<span class="preprocessor">#include &quot;<a class="code" href="a00087.html">bm.h</a>&quot;</span>
60
60
 
61
61
<span class="keyword">using namespace </span>std;
62
62
 
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>
68
68
 
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>
70
70
{
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>;
74
74
 
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> *)
76
76
    {
77
 
        ++<a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
 
77
        ++<a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">na_</a>;
78
78
        assert(n);
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>));
81
81
        *p = n;
82
82
        <span class="keywordflow">return</span> ++p;
83
83
    }
84
84
 
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)
86
86
    {
87
 
        ++<a class="code" href="a00051.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
 
87
        ++<a class="code" href="a00050.html#aadb605865e1f0ea195000e51e90001e6">nf_</a>;
88
88
        --p;
89
89
        assert(*p == n);
90
90
        ::free(p);
91
91
    }
92
92
 
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>()
94
94
    {
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>;
96
96
    }
97
97
};
98
98
 
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;
101
101
 
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>
103
103
{
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>;
107
107
 
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> *)
109
109
    {
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;
116
116
    }
117
117
 
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)
119
119
    {
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;
122
122
        --s;
123
123
        assert(*s == n);
124
124
        ::free(s);
125
125
    }
126
126
 
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>()
128
128
    {
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>;
130
130
    }
131
131
 
132
132
};
133
133
 
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;
136
 
 
137
 
 
138
 
<span class="keyword">typedef</span> <a name="_a13"></a><a class="code" href="a00074.html" title="BM style allocator adapter.">bm::mem_alloc&lt;dbg_block_allocator, dbg_ptr_allocator&gt;</a> <a class="code" href="a00074.html" title="BM style allocator adapter.">dbg_alloc</a>;
139
 
 
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&lt;dbg_alloc&gt;</a> <a class="code" href="a00044.html" title="bitvector with runtime compression of bits.">bvect</a>;
141
 
 
142
 
 
143
 
 
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;
 
136
 
 
137
 
 
138
<span class="keyword">typedef</span> <a name="_a13"></a><a class="code" href="a00073.html" title="BM style allocator adapter.">bm::mem_alloc&lt;dbg_block_allocator, dbg_ptr_allocator&gt;</a> <a class="code" href="a00073.html" title="BM style allocator adapter.">dbg_alloc</a>;
 
139
 
 
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&lt;dbg_alloc&gt;</a> <a class="code" href="a00043.html" title="bitvector with runtime compression of bits.">bvect</a>;
 
141
 
 
142
 
 
143
 
 
144
<span class="keywordtype">int</span> <a name="a15"></a><a class="code" href="a00105.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
145
145
{
146
146
    {
147
147
        bvect bv;
151
151
        bv[10000000] = <span class="keyword">false</span>;
152
152
    }
153
153
 
154
 
    cout &lt;&lt; <span class="stringliteral">&quot;Number of BLOCK allocations = &quot;</span> &lt;&lt;  <a class="code" href="a00051.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> &lt;&lt; endl;
 
154
    cout &lt;&lt; <span class="stringliteral">&quot;Number of BLOCK allocations = &quot;</span> &lt;&lt;  <a class="code" href="a00050.html#a2e3f8148fefdb34093ebf3db55b6175b">dbg_block_allocator::na_</a> &lt;&lt; endl;
155
155
    cout &lt;&lt; <span class="stringliteral">&quot;Number of PTR allocations = &quot;</span> &lt;&lt;  dbg_ptr_allocator::na_ &lt;&lt; endl;
156
156
 
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);
159
159
 
160
160
    <span class="keywordflow">return</span> 0;
161
161
}
162
162
 
163
163
  
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&nbsp;
 
165
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Apr 25 09:37:27 2010 for BitMagic by&nbsp;
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>
168
168
</body>