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 cx_allocator_class cx_default_allocator_class = { |
|
34 cx_malloc_stdlib, |
|
35 cx_realloc_stdlib, |
|
36 cx_calloc_stdlib, |
|
37 cx_free_stdlib |
|
38 }; |
|
39 |
33 struct cx_allocator_s cx_default_allocator = { |
40 struct cx_allocator_s cx_default_allocator = { |
34 { |
41 &cx_default_allocator_class, |
35 cx_malloc_stdlib, |
|
36 cx_realloc_stdlib, |
|
37 cx_calloc_stdlib, |
|
38 cx_free_stdlib |
|
39 }, |
|
40 NULL |
42 NULL |
41 }; |
43 }; |
42 CxAllocator cxDefaultAllocator = &cx_default_allocator; |
44 CxAllocator cxDefaultAllocator = &cx_default_allocator; |
43 |
45 |
44 void* cx_malloc_stdlib(cx_allocator a, size_t n) { |
46 void* cx_malloc_stdlib(cx_allocator a, size_t n) { |
56 void cx_free_stdlib(cx_allocator a, void* mem) { |
58 void cx_free_stdlib(cx_allocator a, void* mem) { |
57 free(mem); |
59 free(mem); |
58 } |
60 } |
59 |
61 |
60 void* cxMalloc(CxAllocator allocator, size_t n) { |
62 void* cxMalloc(CxAllocator allocator, size_t n) { |
61 return allocator->allocatorClass.malloc(allocator, n); |
63 return allocator->cl->malloc(allocator->data, n); |
62 } |
64 } |
63 |
65 |
64 void* cxRealloc(CxAllocator allocator, void* mem, size_t n) { |
66 void* cxRealloc(CxAllocator allocator, void* mem, size_t n) { |
65 return allocator->allocatorClass.realloc(allocator, mem, n); |
67 return allocator->cl->realloc(allocator->data, mem, n); |
66 } |
68 } |
67 |
69 |
68 void* cxCalloc(CxAllocator allocator, size_t nelem, size_t n) { |
70 void* cxCalloc(CxAllocator allocator, size_t nelem, size_t n) { |
69 return allocator->allocatorClass.calloc(allocator, nelem, n); |
71 return allocator->cl->calloc(allocator->data, nelem, n); |
70 } |
72 } |
71 |
73 |
72 void cxFree(CxAllocator allocator, void* mem) { |
74 void cxFree(CxAllocator allocator, void* mem) { |
73 allocator->allocatorClass.free(allocator, mem); |
75 allocator->cl->free(allocator->data, mem); |
74 } |
76 } |