12#ifndef __WMEM_CORE_H__
13#define __WMEM_CORE_H__
19#include <ws_symbol_export.h>
20#include <ws_attributes.h>
21#include <ws_posix_compat.h>
85#define wmem_new(allocator, type) \
86 ((type*)wmem_alloc((allocator), sizeof(type)))
93#define wmem_safe_mult_type_size(type, num) \
94 ((((num) <= 0) || ((size_t)sizeof(type) > (G_MAXSSIZE / (size_t)(num)))) ? 0 : (sizeof(type) * (num)))
103#define wmem_alloc_array(allocator, type, num) \
104 ((type*)wmem_alloc((allocator), wmem_safe_mult_type_size(type, (num))))
126#define wmem_new0(allocator, type) \
127 ((type*)wmem_alloc0((allocator), sizeof(type)))
137#define wmem_alloc0_array(allocator, type, num) \
138 ((type*)wmem_alloc0((allocator), wmem_safe_mult_type_size(type, (num))))
WS_DLL_PUBLIC void wmem_init(void)
Definition wmem_core.c:168
WS_DLL_PUBLIC void wmem_free_all(wmem_allocator_t *allocator)
Definition wmem_core.c:108
WS_DLL_PUBLIC wmem_allocator_t * wmem_allocator_new(const wmem_allocator_type_t type)
Definition wmem_core.c:129
WS_DLL_PUBLIC void wmem_free(wmem_allocator_t *allocator, void *ptr)
Definition wmem_core.c:62
_wmem_allocator_type_t
Definition wmem_core.h:47
WS_DLL_PUBLIC void wmem_cleanup(void)
Definition wmem_core.c:205
WS_DLL_PUBLIC void wmem_gc(wmem_allocator_t *allocator)
Definition wmem_core.c:114
WS_DLL_PUBLIC void * wmem_realloc(wmem_allocator_t *allocator, void *ptr, const size_t size) G_GNUC_ALLOC_SIZE(3)
Definition wmem_core.c:79
WS_DLL_PUBLIC void * wmem_alloc(wmem_allocator_t *allocator, const size_t size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2)
Definition wmem_core.c:32
WS_DLL_PUBLIC void wmem_destroy_allocator(wmem_allocator_t *allocator)
Definition wmem_core.c:120
enum _wmem_allocator_type_t wmem_allocator_type_t
WS_DLL_PUBLIC void * wmem_alloc0(wmem_allocator_t *allocator, const size_t size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2)
Definition wmem_core.c:48
@ WMEM_ALLOCATOR_BLOCK
Definition wmem_core.h:52
@ WMEM_ALLOCATOR_STRICT
Definition wmem_core.h:56
@ WMEM_ALLOCATOR_SIMPLE
Definition wmem_core.h:48
@ WMEM_ALLOCATOR_BLOCK_FAST
Definition wmem_core.h:60
Definition wmem_allocator.h:27