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 */