ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/pxys-hybrid/trunk/libpeak/doc/html/group__alloc.html
Revision: 3262
Committed: Thu Apr 3 18:52:04 2014 UTC (10 years ago) by michael
Content type: text/html
File size: 13645 byte(s)
Log Message:
- Added libpeak

File Contents

# Content
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>PEAK Library: Allocation</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.5 -->
7 <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a></div>
8 <h1>Allocation</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
9 <dl compact><dt><b></b></dt><dd>Peak's allocation mechanism uses the standard malloc/free pair but can be configured as wish with <a class="el" href="group__alloc.html#ga3">peak_alloc_configure()</a> providing your own allocation and deallocation primitives.</dd></dl>
10 <dl compact><dt><b></b></dt><dd>Although written in C, peak is object oriented and features a lightweight support for reference counting in all peak objects. This module offers access to the <a class="el" href="group__alloc.html#ga6">peak_retain()</a> an <a class="el" href="group__alloc.html#ga7">peak_release()</a> method.<br>
11 Strings, however, are normal C strings and not wrapped by the peak library. For convenience, a <a class="el" href="group__alloc.html#ga6">peak_strdup()</a> method is provided as well. </dd></dl>
12
13 <p>
14 <table border=0 cellpadding=0 cellspacing=0>
15 <tr><td></td></tr>
16 <tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
17 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="ga0" doxytag="alloc::peak_alloc_malloc_func" ></a>
18 typedef void *(*&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga0">peak_alloc_malloc_func</a> )(size_t size)</td></tr>
19
20 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Malloc-like function pointer type. <br><br></td></tr>
21 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="ga1" doxytag="alloc::peak_alloc_free_func" ></a>
22 typedef void(*&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga1">peak_alloc_free_func</a> )(void *p)</td></tr>
23
24 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free-like function pointer type. <br><br></td></tr>
25 <tr><td colspan=2><br><h2>Functions</h2></td></tr>
26 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga2">peak_alloc_configure</a> (<a class="el" href="group__alloc.html#ga0">peak_alloc_malloc_func</a> malloc_fun, <a class="el" href="group__alloc.html#ga1">peak_alloc_free_func</a> free_fun)</td></tr>
27
28 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configure peak's allocation for your program. <a href="#ga2"></a><br><br></td></tr>
29 <tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga3">peak_allocate</a> (size_t size)</td></tr>
30
31 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate memory. <a href="#ga3"></a><br><br></td></tr>
32 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga4">peak_deallocate</a> (void *ptr)</td></tr>
33
34 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free memory. <a href="#ga4"></a><br><br></td></tr>
35 <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga5">peak_strdup</a> (const char *str)</td></tr>
36
37 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy a string. <a href="#ga5"></a><br><br></td></tr>
38 <tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga6">peak_retain</a> (void *obj)</td></tr>
39
40 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retain a peak object. <a href="#ga6"></a><br><br></td></tr>
41 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga7">peak_release</a> (void *obj)</td></tr>
42
43 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release a peak object. <a href="#ga7"></a><br><br></td></tr>
44 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__alloc.html#ga8">peak_get_retcnt</a> (void *obj)</td></tr>
45
46 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the retain count of a peak object. <a href="#ga8"></a><br><br></td></tr>
47 </table>
48 <hr><h2>Function Documentation</h2>
49 <a class="anchor" name="ga2" doxytag="alloc.h::peak_alloc_configure" ></a><p>
50 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
51 <tr>
52 <td class="mdRow">
53 <table cellpadding="0" cellspacing="0" border="0">
54 <tr>
55 <td class="md" nowrap valign="top"> void peak_alloc_configure </td>
56 <td class="md" valign="top">(&nbsp;</td>
57 <td class="md" nowrap valign="top"><a class="el" href="group__alloc.html#ga0">peak_alloc_malloc_func</a>&nbsp;</td>
58 <td class="mdname" nowrap> <em>malloc_fun</em>, </td>
59 </tr>
60 <tr>
61 <td></td>
62 <td></td>
63 <td class="md" nowrap><a class="el" href="group__alloc.html#ga1">peak_alloc_free_func</a>&nbsp;</td>
64 <td class="mdname" nowrap> <em>free_fun</em></td>
65 </tr>
66 <tr>
67 <td></td>
68 <td class="md">)&nbsp;</td>
69 <td class="md" colspan="2"></td>
70 </tr>
71
72 </table>
73 </td>
74 </tr>
75 </table>
76 <table cellspacing=5 cellpadding=0 border=0>
77 <tr>
78 <td>
79 &nbsp;
80 </td>
81 <td>
82
83 <p>
84 Configure peak's allocation for your program.
85 <p>
86 Pointed functions must properly align memory and be thread-safe like malloc() and free()...<p>
87 <dl compact><dt><b>Parameters:</b></dt><dd>
88 <table border="0" cellspacing="2" cellpadding="0">
89 <tr><td valign=top><em>malloc_fun</em>&nbsp;</td><td>A pointer to your custom malloc-like function. </td></tr>
90 <tr><td valign=top><em>free_fun</em>&nbsp;</td><td>A pointer to your custom free-like function. </td></tr>
91 </table>
92 </dl>
93 </td>
94 </tr>
95 </table>
96 <a class="anchor" name="ga3" doxytag="alloc.h::peak_allocate" ></a><p>
97 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
98 <tr>
99 <td class="mdRow">
100 <table cellpadding="0" cellspacing="0" border="0">
101 <tr>
102 <td class="md" nowrap valign="top"> void* peak_allocate </td>
103 <td class="md" valign="top">(&nbsp;</td>
104 <td class="md" nowrap valign="top">size_t&nbsp;</td>
105 <td class="mdname1" valign="top" nowrap> <em>size</em> </td>
106 <td class="md" valign="top">&nbsp;)&nbsp;</td>
107 <td class="md" nowrap></td>
108 </tr>
109
110 </table>
111 </td>
112 </tr>
113 </table>
114 <table cellspacing=5 cellpadding=0 border=0>
115 <tr>
116 <td>
117 &nbsp;
118 </td>
119 <td>
120
121 <p>
122 Allocate memory.
123 <p>
124 <dl compact><dt><b>Parameters:</b></dt><dd>
125 <table border="0" cellspacing="2" cellpadding="0">
126 <tr><td valign=top><em>size</em>&nbsp;</td><td>Number of bytes of memory to allocate.</td></tr>
127 </table>
128 </dl>
129 <dl compact><dt><b>Returns:</b></dt><dd>A pointer to the fresh allocated memory. </dd></dl>
130 </td>
131 </tr>
132 </table>
133 <a class="anchor" name="ga4" doxytag="alloc.h::peak_deallocate" ></a><p>
134 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
135 <tr>
136 <td class="mdRow">
137 <table cellpadding="0" cellspacing="0" border="0">
138 <tr>
139 <td class="md" nowrap valign="top"> void peak_deallocate </td>
140 <td class="md" valign="top">(&nbsp;</td>
141 <td class="md" nowrap valign="top">void *&nbsp;</td>
142 <td class="mdname1" valign="top" nowrap> <em>ptr</em> </td>
143 <td class="md" valign="top">&nbsp;)&nbsp;</td>
144 <td class="md" nowrap></td>
145 </tr>
146
147 </table>
148 </td>
149 </tr>
150 </table>
151 <table cellspacing=5 cellpadding=0 border=0>
152 <tr>
153 <td>
154 &nbsp;
155 </td>
156 <td>
157
158 <p>
159 Free memory.
160 <p>
161 <dl compact><dt><b>Parameters:</b></dt><dd>
162 <table border="0" cellspacing="2" cellpadding="0">
163 <tr><td valign=top><em>ptr</em>&nbsp;</td><td>Pointer to the memory space to deallocate. </td></tr>
164 </table>
165 </dl>
166 </td>
167 </tr>
168 </table>
169 <a class="anchor" name="ga8" doxytag="alloc.h::peak_get_retcnt" ></a><p>
170 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
171 <tr>
172 <td class="mdRow">
173 <table cellpadding="0" cellspacing="0" border="0">
174 <tr>
175 <td class="md" nowrap valign="top"> int peak_get_retcnt </td>
176 <td class="md" valign="top">(&nbsp;</td>
177 <td class="md" nowrap valign="top">void *&nbsp;</td>
178 <td class="mdname1" valign="top" nowrap> <em>obj</em> </td>
179 <td class="md" valign="top">&nbsp;)&nbsp;</td>
180 <td class="md" nowrap></td>
181 </tr>
182
183 </table>
184 </td>
185 </tr>
186 </table>
187 <table cellspacing=5 cellpadding=0 border=0>
188 <tr>
189 <td>
190 &nbsp;
191 </td>
192 <td>
193
194 <p>
195 Get the retain count of a peak object.
196 <p>
197 <dl compact><dt><b>Parameters:</b></dt><dd>
198 <table border="0" cellspacing="2" cellpadding="0">
199 <tr><td valign=top><em>obj</em>&nbsp;</td><td>Any peak object.</td></tr>
200 </table>
201 </dl>
202 <dl compact><dt><b>Returns:</b></dt><dd>Retain count or -1 for constant objects. </dd></dl>
203 </td>
204 </tr>
205 </table>
206 <a class="anchor" name="ga7" doxytag="alloc.h::peak_release" ></a><p>
207 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
208 <tr>
209 <td class="mdRow">
210 <table cellpadding="0" cellspacing="0" border="0">
211 <tr>
212 <td class="md" nowrap valign="top"> void peak_release </td>
213 <td class="md" valign="top">(&nbsp;</td>
214 <td class="md" nowrap valign="top">void *&nbsp;</td>
215 <td class="mdname1" valign="top" nowrap> <em>obj</em> </td>
216 <td class="md" valign="top">&nbsp;)&nbsp;</td>
217 <td class="md" nowrap></td>
218 </tr>
219
220 </table>
221 </td>
222 </tr>
223 </table>
224 <table cellspacing=5 cellpadding=0 border=0>
225 <tr>
226 <td>
227 &nbsp;
228 </td>
229 <td>
230
231 <p>
232 Release a peak object.
233 <p>
234 Decrease the reference count of the object <em>obj</em>. If the refcount is 0, the object is deallocated.<p>
235 <dl compact><dt><b>Parameters:</b></dt><dd>
236 <table border="0" cellspacing="2" cellpadding="0">
237 <tr><td valign=top><em>obj</em>&nbsp;</td><td>Any peak object. </td></tr>
238 </table>
239 </dl>
240 </td>
241 </tr>
242 </table>
243 <a class="anchor" name="ga6" doxytag="alloc.h::peak_retain" ></a><p>
244 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
245 <tr>
246 <td class="mdRow">
247 <table cellpadding="0" cellspacing="0" border="0">
248 <tr>
249 <td class="md" nowrap valign="top"> void* peak_retain </td>
250 <td class="md" valign="top">(&nbsp;</td>
251 <td class="md" nowrap valign="top">void *&nbsp;</td>
252 <td class="mdname1" valign="top" nowrap> <em>obj</em> </td>
253 <td class="md" valign="top">&nbsp;)&nbsp;</td>
254 <td class="md" nowrap></td>
255 </tr>
256
257 </table>
258 </td>
259 </tr>
260 </table>
261 <table cellspacing=5 cellpadding=0 border=0>
262 <tr>
263 <td>
264 &nbsp;
265 </td>
266 <td>
267
268 <p>
269 Retain a peak object.
270 <p>
271 Increase the reference count of the object <em>obj</em>.<p>
272 <dl compact><dt><b>Parameters:</b></dt><dd>
273 <table border="0" cellspacing="2" cellpadding="0">
274 <tr><td valign=top><em>obj</em>&nbsp;</td><td>Any peak object.</td></tr>
275 </table>
276 </dl>
277 <dl compact><dt><b>Returns:</b></dt><dd>For convenience, a pointer to <em>obj</em>. </dd></dl>
278 </td>
279 </tr>
280 </table>
281 <a class="anchor" name="ga5" doxytag="alloc.h::peak_strdup" ></a><p>
282 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
283 <tr>
284 <td class="mdRow">
285 <table cellpadding="0" cellspacing="0" border="0">
286 <tr>
287 <td class="md" nowrap valign="top"> char* peak_strdup </td>
288 <td class="md" valign="top">(&nbsp;</td>
289 <td class="md" nowrap valign="top">const char *&nbsp;</td>
290 <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
291 <td class="md" valign="top">&nbsp;)&nbsp;</td>
292 <td class="md" nowrap></td>
293 </tr>
294
295 </table>
296 </td>
297 </tr>
298 </table>
299 <table cellspacing=5 cellpadding=0 border=0>
300 <tr>
301 <td>
302 &nbsp;
303 </td>
304 <td>
305
306 <p>
307 Copy a string.
308 <p>
309 <dl compact><dt><b>Parameters:</b></dt><dd>
310 <table border="0" cellspacing="2" cellpadding="0">
311 <tr><td valign=top><em>str</em>&nbsp;</td><td>The string to copy/duplicate.</td></tr>
312 </table>
313 </dl>
314 <dl compact><dt><b>Returns:</b></dt><dd>A pointer to a new allocated copy of the string. It should be passed to <a class="el" href="group__alloc.html#ga5">peak_deallocate()</a> if you want to free it. </dd></dl>
315 </td>
316 </tr>
317 </table>
318 <hr size="1"><address style="align: right;"><small>Generated on Sat Jan 17 21:41:53 2004 for the PEAK Library by
319 <a href="http://www.doxygen.org/index.html">
320 <img src="doxygen.png" alt="doxygen" align="middle" border="0" >
321 </a></small>&nbsp; &nbsp; <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=98146&amp;type=1" width="88" height="31" align="middle" border="0" alt="SourceForge.net Logo" /></a></address>
322 </body>
323 </html>
324