aboutsummaryrefslogtreecommitdiff
path: root/allocator.c
diff options
context:
space:
mode:
Diffstat (limited to 'allocator.c')
-rw-r--r--allocator.c79
1 files changed, 0 insertions, 79 deletions
diff --git a/allocator.c b/allocator.c
deleted file mode 100644
index 98fa69f..0000000
--- a/allocator.c
+++ /dev/null
@@ -1,79 +0,0 @@
1#include "allocator.h"
2
3#include <stdlib.h> /* malloc */
4
5/* Interface Code */
6static void *
7default_allocate(struct allocator *allocator, size_t n)
8{
9 (void) allocator;
10 return malloc(n);
11}
12
13static void
14default_deallocate(struct allocator *allocator, void *ptr)
15{
16 (void) allocator;
17 free(ptr);
18}
19
20struct allocator allocator_default_allocator = {
21 .allocate = &default_allocate,
22 .deallocate = &default_deallocate
23};
24
25/* Libary Code */
26#include <string.h>
27
28void *
29allocator_malloc(struct allocator *allocator, size_t n)
30{
31 if ( !allocator ) {
32 allocator = &allocator_default_allocator;
33 }
34
35 return allocator->allocate(allocator, n);
36}
37
38void
39allocator_free(struct allocator *allocator, void *ptr)
40{
41 if ( !allocator ) {
42 allocator = &allocator_default_allocator;
43 }
44
45 allocator->deallocate(allocator, ptr);
46}
47
48char *
49allocator_strdup(struct allocator *allocator, const char *str)
50{
51 size_t n;
52 char * dest;
53
54 n = strlen(str) + 1;
55 dest = allocator_malloc(allocator, n);
56 if ( dest ) {
57 memcpy(dest, str, n);
58 }
59
60 return dest;
61}
62
63void *
64allocator_malloc_zero(struct allocator *allocator, size_t n)
65{
66 void *ptr;
67
68 ptr = allocator_malloc(allocator, n);
69 if ( ptr ) {
70 memset(ptr, 0, n);
71 }
72
73 return ptr;
74}
75
76int
77main()
78{
79}