#define __TMALLOC_H__
#include <sys/types.h>
+#include "tools.h"
void * tmalloc(size_t size);
void * trealloc(void * ptr, size_t size);
char * strlower(char * src);
char * strupper(char * src);
int clrspace(char *buf);
+
+/* fast allocate */
+
+#define CNTXCHUNK (1024*1024)
+
+typedef struct MemoryChunk {
+ size_t size;
+ size_t freesize;
+ struct MemoryChunk *next;
+ char data[1];
+} MemoryChunk;
+
+#define MEMCHNKHDRSZ offsetof(MemoryChunk, data)
+
+typedef struct MemoryContext {
+ u_int32_t flags;
+ struct MemoryContext *parent;
+ struct MemoryContext *child;
+ MemoryChunk *chunk;
+} MemoryContext;
+
+#define MC_DEBUG 0x01
+
+typedef struct {
+ size_t size;
+ MemoryContext *cntx;
+ char data[1];
+} MCAllocatedSpace;
+
+#define MCASHDRSZ ( sizeof(size_t) + sizeof(MemoryContext*) )
+#define MCMAGICKNUMBER (0xFE0FBEEF)
+
+MemoryContext *allocMemoryContext(MemoryContext* parent, int flags);
+void freeMemoryContext(MemoryContext* cntx);
+void* mcalloc(MemoryContext *cntx, size_t size);
+void* mc0alloc(MemoryContext *cntx, size_t size);
+void* mcrealloc(void * ptr, size_t size);
+void mcfree(void * ptr);
+char * mcstrdup(MemoryContext *cntx, char * src);
+char * mcnstrdup(MemoryContext *cntx, char *src, int len);
+
+
#endif