heap.h

Go to the documentation of this file.
00001 
00043 #ifndef STRUCT_HEAP_H
00044 #define STRUCT_HEAP_H
00045 
00046 #include "cfg/cfg_heap.h"
00047 #include <cfg/compiler.h>
00048 
00049 struct _MemChunk;
00050 
00052 struct Heap
00053 {
00054     struct _MemChunk *FreeList;     
00055 };
00056 
00057 
00059 void heap_init(struct Heap* heap, void* memory, size_t size);
00060 
00062 void *heap_allocmem(struct Heap* heap, size_t size);
00063 
00065 void heap_freemem(struct Heap* heap, void *mem, size_t size);
00066 
00067 
00068 #define HNEW(heap, type) \
00069     (type*)heap_allocmem(heap, sizeof(type))
00070 
00071 #define HNEWVEC(heap, type, nelem) \
00072     (type*)heap_allocmem(heap, sizeof(type) * (nelem))
00073 
00074 #define HDELETE(heap, type, mem) \
00075     heap_freemem(heap, mem, sizeof(type))
00076 
00077 #define HDELETEVEC(heap, type, nelem, mem) \
00078     heap_freemem(heap, mem, sizeof(type) * (nelem))
00079 
00080 
00081 #if CONFIG_HEAP_MALLOC
00082 
00083 void *heap_malloc(struct Heap* heap, size_t size);
00084 void *heap_calloc(struct Heap* heap, size_t size);
00085 void heap_free(struct Heap* heap, void * mem);
00086 
00087 #endif
00088 
00089 #endif /* STRUCT_HEAP_H */