heap.h
Go to the documentation of this file.00001
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 #ifndef MWARE_HEAP_H
00078 #define MWARE_HEAP_H
00079
00080 #include <cfg/compiler.h>
00081 #include <appconfig.h>
00082
00083 struct _MemChunk;
00084
00086 struct Heap
00087 {
00088 struct _MemChunk *FreeList;
00089 };
00090
00091
00093 void heap_init(struct Heap* heap, void* memory, size_t size);
00094
00096 void *heap_allocmem(struct Heap* heap, size_t size);
00097
00099 void heap_freemem(struct Heap* heap, void *mem, size_t size);
00100
00101
00102 #define HNEW(heap, type) \
00103 (type*)heap_allocmem(heap, sizeof(type))
00104
00105 #define HNEWVEC(heap, type, nelem) \
00106 (type*)heap_allocmem(heap, sizeof(type) * (nelem))
00107
00108 #define HDELETE(heap, type, mem) \
00109 heap_freemem(heap, mem, sizeof(type))
00110
00111 #define HDELETEVEC(heap, type, nelem, mem) \
00112 heap_freemem(heap, mem, sizeof(type) * (nelem))
00113
00114
00115 #if CONFIG_HEAP_MALLOC
00116
00117 void *heap_malloc(struct Heap* heap, size_t size);
00118 void *heap_calloc(struct Heap* heap, size_t size);
00119 void heap_free(struct Heap* heap, void * mem);
00120
00121 #endif
00122
00123 #endif