28 |
28 |
29 #include "cx/allocator.h" |
29 #include "cx/allocator.h" |
30 |
30 |
31 #include <stdlib.h> |
31 #include <stdlib.h> |
32 |
32 |
|
33 void *cx_malloc_stdlib(void *unused, size_t n) { |
|
34 return malloc(n); |
|
35 } |
|
36 |
|
37 void *cx_realloc_stdlib(void *unused, void *mem, size_t n) { |
|
38 return realloc(mem, n); |
|
39 } |
|
40 |
|
41 void *cx_calloc_stdlib(void *unused, size_t nelem, size_t n) { |
|
42 return calloc(nelem, n); |
|
43 } |
|
44 |
|
45 void cx_free_stdlib(void *unused, void *mem) { |
|
46 free(mem); |
|
47 } |
|
48 |
33 cx_allocator_class cx_default_allocator_class = { |
49 cx_allocator_class cx_default_allocator_class = { |
34 cx_malloc_stdlib, |
50 cx_malloc_stdlib, |
35 cx_realloc_stdlib, |
51 cx_realloc_stdlib, |
36 cx_calloc_stdlib, |
52 cx_calloc_stdlib, |
37 cx_free_stdlib |
53 cx_free_stdlib |
41 &cx_default_allocator_class, |
57 &cx_default_allocator_class, |
42 NULL |
58 NULL |
43 }; |
59 }; |
44 CxAllocator cxDefaultAllocator = &cx_default_allocator; |
60 CxAllocator cxDefaultAllocator = &cx_default_allocator; |
45 |
61 |
46 void* cx_malloc_stdlib(cx_allocator a, size_t n) { |
62 void *cxMalloc(CxAllocator allocator, size_t n) { |
47 return malloc(n); |
|
48 } |
|
49 |
|
50 void* cx_realloc_stdlib(cx_allocator a, void* mem, size_t n) { |
|
51 return realloc(mem, n); |
|
52 } |
|
53 |
|
54 void* cx_calloc_stdlib(cx_allocator a, size_t nelem, size_t n) { |
|
55 return calloc(nelem, n); |
|
56 } |
|
57 |
|
58 void cx_free_stdlib(cx_allocator a, void* mem) { |
|
59 free(mem); |
|
60 } |
|
61 |
|
62 void* cxMalloc(CxAllocator allocator, size_t n) { |
|
63 return allocator->cl->malloc(allocator->data, n); |
63 return allocator->cl->malloc(allocator->data, n); |
64 } |
64 } |
65 |
65 |
66 void* cxRealloc(CxAllocator allocator, void* mem, size_t n) { |
66 void *cxRealloc(CxAllocator allocator, void *mem, size_t n) { |
67 return allocator->cl->realloc(allocator->data, mem, n); |
67 return allocator->cl->realloc(allocator->data, mem, n); |
68 } |
68 } |
69 |
69 |
70 void* cxCalloc(CxAllocator allocator, size_t nelem, size_t n) { |
70 void *cxCalloc(CxAllocator allocator, size_t nelem, size_t n) { |
71 return allocator->cl->calloc(allocator->data, nelem, n); |
71 return allocator->cl->calloc(allocator->data, nelem, n); |
72 } |
72 } |
73 |
73 |
74 void cxFree(CxAllocator allocator, void* mem) { |
74 void cxFree(CxAllocator allocator, void *mem) { |
75 allocator->cl->free(allocator->data, mem); |
75 allocator->cl->free(allocator->data, mem); |
76 } |
76 } |