00001
00038 #ifndef _CAL_MEM
00039 #define _CAL_MEM
00040
00041 #include <stdio.h>
00042
00043
00044
00045
00046
00047
00048
00049
00050 #define CAL_ALLOC_ALIGNMENT sizeof(void *)
00051
00052
00053
00054
00055
00056
00057 typedef struct Cal_RecMgrStruct * Cal_RecMgr;
00058 typedef void *Cal_Pointer_t;
00059 typedef size_t Cal_Address_t;
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 #ifndef EXTERN
00071 # ifdef __cplusplus
00072 # define EXTERN extern "C"
00073 # else
00074 # define EXTERN extern
00075 # endif
00076 #endif
00077 #define Cal_Nil(obj) ((obj *)0)
00078 #define USE_OS_MEMORY_MANAGEMENT
00079 #ifdef USE_OS_MEMORY_MANAGEMENT
00080 #define Cal_MemAlloc(type, num) ((type *) malloc(sizeof(type) * (num)))
00081 #define Cal_MemRealloc(type, obj, num) \
00082 (obj) ? ((type *) realloc((char *) obj, sizeof(type) * (num))) : \
00083 ((type *) malloc(sizeof(type) * (num)))
00084 #define Cal_MemFree(obj) ((obj) ? (free((char *) (obj)), (obj) = 0) : 0)
00085 #else
00086 #define Cal_MemAlloc(type, num) ((type *) Cal_MemGetBlock(sizeof(type) * (num)))
00087 #define Cal_MemRealloc(type, obj, num) \
00088 (obj) ? ((type *) Cal_MemResizeBlock((Cal_Pointer_t) obj, sizeof(type) * (num))) : \
00089 ((type *) Cal_MemGetBlock(sizeof(type) * (num)))
00090 #define Cal_MemFree(obj) ((obj) ? (Cal_MemFreeBlock((Cal_Pointer_t) (obj)), (obj) = 0) : 0)
00091 #endif
00092 #define Cal_MemCopy(dest, src, size) ((void *) memcpy((void *)dest, (const void *)src, (size_t)size));
00093 #define Cal_MemZero(ptr, size) ((void)memset((void *)(ptr), 0, (Cal_Address_t)(size)))
00094
00095
00096
00097 #define CAL_ROUNDUP(size) ((((size)+CAL_ALLOC_ALIGNMENT-1)/CAL_ALLOC_ALIGNMENT)*CAL_ALLOC_ALIGNMENT)
00098
00101
00102
00103
00104 EXTERN void Cal_MemFatal(char *message);
00105 EXTERN Cal_Address_t Cal_MemAllocation(void);
00106 EXTERN Cal_Pointer_t Cal_MemGetBlock(Cal_Address_t size);
00107 EXTERN void Cal_MemFreeBlock(Cal_Pointer_t p);
00108 EXTERN Cal_Pointer_t Cal_MemResizeBlock(Cal_Pointer_t p, Cal_Address_t newSize);
00109 EXTERN Cal_Pointer_t Cal_MemNewRec(Cal_RecMgr mgr);
00110 EXTERN void Cal_MemFreeRec(Cal_RecMgr mgr, Cal_Pointer_t rec);
00111 EXTERN Cal_RecMgr Cal_MemNewRecMgr(int size);
00112 EXTERN void Cal_MemFreeRecMgr(Cal_RecMgr mgr);
00113
00116 #endif