Mercurial > molko
comparison libmlk-core/mlk/core/alloc.h @ 438:25a56ca53ac2
core: update mlk-alloc module
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 17 Oct 2022 14:22:07 +0200 |
parents | 862b15c3a3ae |
children | 9c3b3935f0aa |
comparison
equal
deleted
inserted
replaced
437:e1eebc6bf25d | 438:25a56ca53ac2 |
---|---|
22 #include <stddef.h> | 22 #include <stddef.h> |
23 | 23 |
24 #include "core.h" | 24 #include "core.h" |
25 | 25 |
26 /* Must be power of 2. */ | 26 /* Must be power of 2. */ |
27 #define ALLOC_POOL_INIT_DEFAULT (32) | 27 #define MLK_ALLOC_POOL_INIT_DEFAULT (32) |
28 | 28 |
29 /* Custom allocator. */ | 29 /* Custom allocator. */ |
30 struct alloc_funcs { | 30 struct mlk_alloc_funcs { |
31 void *(*alloc)(size_t); | 31 void *(*alloc)(size_t); |
32 void *(*realloc)(void *, size_t); | 32 void *(*realloc)(void *, size_t); |
33 void (*free)(void *); | 33 void (*free)(void *); |
34 }; | 34 }; |
35 | 35 |
36 /* Minimalist growable array for loading data. */ | 36 /* Minimalist growable array for loading data. */ |
37 struct alloc_pool { | 37 struct mlk_alloc_pool { |
38 void *data; | 38 void *data; |
39 size_t elemsize; | 39 size_t elemsize; |
40 size_t size; | 40 size_t size; |
41 size_t capacity; | 41 size_t capacity; |
42 void (*finalizer)(void *); | 42 void (*finalizer)(void *); |
44 | 44 |
45 CORE_BEGIN_DECLS | 45 CORE_BEGIN_DECLS |
46 | 46 |
47 /* allocator functions. */ | 47 /* allocator functions. */ |
48 void | 48 void |
49 alloc_set(const struct alloc_funcs *); | 49 mlk_alloc_set(const struct mlk_alloc_funcs *); |
50 | 50 |
51 void * | 51 void * |
52 alloc_new(size_t); | 52 mlk_alloc_new(size_t); |
53 | 53 |
54 void * | 54 void * |
55 alloc_new0(size_t); | 55 mlk_alloc_new0(size_t); |
56 | 56 |
57 void * | 57 void * |
58 alloc_array(size_t, size_t); | 58 mlk_alloc_array(size_t, size_t); |
59 | 59 |
60 void * | 60 void * |
61 alloc_array0(size_t, size_t); | 61 mlk_alloc_array0(size_t, size_t); |
62 | 62 |
63 void * | 63 void * |
64 alloc_renew(void *, size_t); | 64 mlk_alloc_renew(void *, size_t); |
65 | 65 |
66 void * | 66 void * |
67 alloc_rearray(void *, size_t, size_t); | 67 mlk_alloc_rearray(void *, size_t, size_t); |
68 | 68 |
69 void * | 69 void * |
70 alloc_rearray0(void *, size_t, size_t, size_t); | 70 mlk_alloc_rearray0(void *, size_t, size_t, size_t); |
71 | 71 |
72 void * | 72 void * |
73 alloc_dup(const void *, size_t); | 73 mlk_alloc_dup(const void *, size_t); |
74 | 74 |
75 char * | 75 char * |
76 alloc_sdup(const char *); | 76 mlk_alloc_sdup(const char *); |
77 | 77 |
78 char * | 78 char * |
79 alloc_sdupf(const char *, ...); | 79 mlk_alloc_sdupf(const char *, ...); |
80 | 80 |
81 void | 81 void |
82 alloc_free(void *); | 82 mlk_alloc_free(void *); |
83 | 83 |
84 /* alloc_pool functions. */ | 84 /* alloc_pool functions. */ |
85 void | 85 void |
86 alloc_pool_init(struct alloc_pool *, size_t , void (*)(void *)); | 86 mlk_alloc_pool_init(struct mlk_alloc_pool *, size_t , void (*)(void *)); |
87 | 87 |
88 void * | 88 void * |
89 alloc_pool_new(struct alloc_pool *); | 89 mlk_alloc_pool_new(struct mlk_alloc_pool *); |
90 | 90 |
91 void * | 91 void * |
92 alloc_pool_get(const struct alloc_pool *, size_t); | 92 mlk_alloc_pool_get(const struct mlk_alloc_pool *, size_t); |
93 | 93 |
94 void * | 94 void * |
95 alloc_pool_shrink(struct alloc_pool *); | 95 mlk_alloc_pool_shrink(struct mlk_alloc_pool *); |
96 | 96 |
97 void | 97 void |
98 alloc_pool_finish(struct alloc_pool *); | 98 mlk_alloc_pool_finish(struct mlk_alloc_pool *); |
99 | 99 |
100 CORE_END_DECLS | 100 CORE_END_DECLS |
101 | 101 |
102 #endif /* !MLK_CORE_ALLOC_H */ | 102 #endif /* !MLK_CORE_ALLOC_H */ |