1 /*
2 * Copyright (C) 2018 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7 #include "lexbor/core/base.h"
8
9 static lexbor_memory_malloc_f lexbor_memory_malloc = malloc;
10 static lexbor_memory_realloc_f lexbor_memory_realloc = realloc;
11 static lexbor_memory_calloc_f lexbor_memory_calloc = calloc;
12 static lexbor_memory_free_f lexbor_memory_free = free;
13
14 void *
lexbor_malloc(size_t size)15 lexbor_malloc(size_t size)
16 {
17 return lexbor_memory_malloc(size);
18 }
19
20 void *
lexbor_realloc(void * dst,size_t size)21 lexbor_realloc(void *dst, size_t size)
22 {
23 return lexbor_memory_realloc(dst, size);
24 }
25
26 void *
lexbor_calloc(size_t num,size_t size)27 lexbor_calloc(size_t num, size_t size)
28 {
29 return lexbor_memory_calloc(num, size);
30 }
31
32 void *
lexbor_free(void * dst)33 lexbor_free(void *dst)
34 {
35 lexbor_memory_free(dst);
36 return NULL;
37 }
38
39 lxb_status_t
lexbor_memory_setup(lexbor_memory_malloc_f new_malloc,lexbor_memory_realloc_f new_realloc,lexbor_memory_calloc_f new_calloc,lexbor_memory_free_f new_free)40 lexbor_memory_setup(lexbor_memory_malloc_f new_malloc, lexbor_memory_realloc_f new_realloc,
41 lexbor_memory_calloc_f new_calloc, lexbor_memory_free_f new_free)
42 {
43 if (new_malloc == NULL || new_realloc == NULL || new_calloc == NULL || new_free == NULL) {
44 return LXB_STATUS_ERROR_OBJECT_IS_NULL;
45 }
46
47 lexbor_memory_malloc = new_malloc;
48 lexbor_memory_realloc = new_realloc;
49 lexbor_memory_calloc = new_calloc;
50 lexbor_memory_free = new_free;
51
52 return LXB_STATUS_OK;
53 }
54