src/cx/allocator.h

changeset 1180
4c3a69b9723a
parent 1134
60edcd57d54c
equal deleted inserted replaced
1179:ca4c6f590a08 1180:4c3a69b9723a
98 typedef struct cx_allocator_s CxAllocator; 98 typedef struct cx_allocator_s CxAllocator;
99 99
100 /** 100 /**
101 * A default allocator using standard library malloc() etc. 101 * A default allocator using standard library malloc() etc.
102 */ 102 */
103 extern CxAllocator *cxDefaultAllocator; 103 cx_attr_export
104 extern const CxAllocator * const cxDefaultAllocator;
104 105
105 /** 106 /**
106 * Function pointer type for destructor functions. 107 * Function pointer type for destructor functions.
107 * 108 *
108 * A destructor function deallocates possible contents and MAY free the memory 109 * A destructor function deallocates possible contents and MAY free the memory
143 * @retval non-zero failure 144 * @retval non-zero failure
144 * @see cx_reallocatearray() 145 * @see cx_reallocatearray()
145 */ 146 */
146 cx_attr_nonnull 147 cx_attr_nonnull
147 cx_attr_nodiscard 148 cx_attr_nodiscard
149 cx_attr_export
148 int cx_reallocate_( 150 int cx_reallocate_(
149 void **mem, 151 void **mem,
150 size_t n 152 size_t n
151 ); 153 );
152 154
167 * @retval non-zero failure 169 * @retval non-zero failure
168 * @see cx_reallocate() 170 * @see cx_reallocate()
169 */ 171 */
170 cx_attr_nonnull 172 cx_attr_nonnull
171 cx_attr_nodiscard 173 cx_attr_nodiscard
174 cx_attr_export
172 int cx_reallocatearray_( 175 int cx_reallocatearray_(
173 void **mem, 176 void **mem,
174 size_t nmemb, 177 size_t nmemb,
175 size_t size 178 size_t size
176 ); 179 );
216 * 219 *
217 * @param allocator the allocator 220 * @param allocator the allocator
218 * @param mem a pointer to the block to free 221 * @param mem a pointer to the block to free
219 */ 222 */
220 cx_attr_nonnull_arg(1) 223 cx_attr_nonnull_arg(1)
224 cx_attr_export
221 void cxFree( 225 void cxFree(
222 const CxAllocator *allocator, 226 const CxAllocator *allocator,
223 void *mem 227 void *mem
224 ); 228 );
225 229
233 cx_attr_nodiscard 237 cx_attr_nodiscard
234 cx_attr_nonnull 238 cx_attr_nonnull
235 cx_attr_malloc 239 cx_attr_malloc
236 cx_attr_dealloc_ucx 240 cx_attr_dealloc_ucx
237 cx_attr_allocsize(2) 241 cx_attr_allocsize(2)
242 cx_attr_export
238 void *cxMalloc( 243 void *cxMalloc(
239 const CxAllocator *allocator, 244 const CxAllocator *allocator,
240 size_t n 245 size_t n
241 ); 246 );
242 247
255 */ 260 */
256 cx_attr_nodiscard 261 cx_attr_nodiscard
257 cx_attr_nonnull_arg(1) 262 cx_attr_nonnull_arg(1)
258 cx_attr_dealloc_ucx 263 cx_attr_dealloc_ucx
259 cx_attr_allocsize(3) 264 cx_attr_allocsize(3)
265 cx_attr_export
260 void *cxRealloc( 266 void *cxRealloc(
261 const CxAllocator *allocator, 267 const CxAllocator *allocator,
262 void *mem, 268 void *mem,
263 size_t n 269 size_t n
264 ); 270 );
283 */ 289 */
284 cx_attr_nodiscard 290 cx_attr_nodiscard
285 cx_attr_nonnull_arg(1) 291 cx_attr_nonnull_arg(1)
286 cx_attr_dealloc_ucx 292 cx_attr_dealloc_ucx
287 cx_attr_allocsize(3, 4) 293 cx_attr_allocsize(3, 4)
294 cx_attr_export
288 void *cxReallocArray( 295 void *cxReallocArray(
289 const CxAllocator *allocator, 296 const CxAllocator *allocator,
290 void *mem, 297 void *mem,
291 size_t nmemb, 298 size_t nmemb,
292 size_t size 299 size_t size
308 * @retval zero success 315 * @retval zero success
309 * @retval non-zero failure 316 * @retval non-zero failure
310 */ 317 */
311 cx_attr_nodiscard 318 cx_attr_nodiscard
312 cx_attr_nonnull 319 cx_attr_nonnull
320 cx_attr_export
313 int cxReallocate_( 321 int cxReallocate_(
314 const CxAllocator *allocator, 322 const CxAllocator *allocator,
315 void **mem, 323 void **mem,
316 size_t n 324 size_t n
317 ); 325 );
354 * @retval zero success 362 * @retval zero success
355 * @retval non-zero on failure 363 * @retval non-zero on failure
356 */ 364 */
357 cx_attr_nodiscard 365 cx_attr_nodiscard
358 cx_attr_nonnull 366 cx_attr_nonnull
367 cx_attr_export
359 int cxReallocateArray_( 368 int cxReallocateArray_(
360 const CxAllocator *allocator, 369 const CxAllocator *allocator,
361 void **mem, 370 void **mem,
362 size_t nmemb, 371 size_t nmemb,
363 size_t size 372 size_t size
396 cx_attr_nonnull_arg(1) 405 cx_attr_nonnull_arg(1)
397 cx_attr_nodiscard 406 cx_attr_nodiscard
398 cx_attr_malloc 407 cx_attr_malloc
399 cx_attr_dealloc_ucx 408 cx_attr_dealloc_ucx
400 cx_attr_allocsize(2, 3) 409 cx_attr_allocsize(2, 3)
410 cx_attr_export
401 void *cxCalloc( 411 void *cxCalloc(
402 const CxAllocator *allocator, 412 const CxAllocator *allocator,
403 size_t nelem, 413 size_t nelem,
404 size_t n 414 size_t n
405 ); 415 );

mercurial