00001
00018 #ifndef INC_MI32_MEMALLOC_H
00019 #define INC_MI32_MEMALLOC_H
00020
00021 #ifndef INC_MI32_STDDEFNS_H
00022 #include <mi32/stddefns.h>
00023 #endif
00024
00025 #ifndef INC_STDLIB_H
00026 #include <stdlib.h>
00027 #define INC_STDLIB_H
00028 #endif
00029
00030 #ifdef MISYSTEMDLL
00031 #define LIBEXPORT MI_DLLEXPORT
00032 #else
00033 #define LIBEXPORT MI_DLLIMPORT
00034 #endif
00035
00036
00039
00041 #if defined(__cplusplus)
00042 template <class _CT> inline void MmFree(_CT *& p) { if (p != 0) { free(p); p = NULL; } }
00043 #elif !defined(GENERATING_DOXYGEN_OUTPUT)
00044 #define MmFree(p) do {if ((p) != NULL) {free((p));(p) = NULL;}} while (0)
00045 #endif
00046
00047 #if defined(__cplusplus)
00048 extern "C" {
00049 #endif
00050
00060 LIBEXPORT ERRVALUE MmAlloc (
00061 void** ptr,
00062 int size
00063 );
00064
00067 LIBEXPORT ERRVALUE MmAllocC (
00068 void** ptr,
00069 int size
00070 );
00071
00074 LIBEXPORT void MmAllocCExc (
00075 void** ptr,
00076 int size
00077 );
00078
00081 LIBEXPORT void MmAllocExc (
00082 void** ptr,
00083 int size
00084 );
00085
00088 LIBEXPORT ERRVALUE MmRealloc (
00089 void** ptr,
00090 int newsize
00091 );
00092
00093 #if defined(__cplusplus)
00096 LIBEXPORT ERRVALUE MmReallocC (
00097 void** ptr,
00098 int newsize,
00099 int oldsize = 0
00100 );
00101 #elif !defined(GENERATING_DOXYGEN_OUTPUT) // normal "C"
00102 LIBEXPORT ERRVALUE MmReallocC (
00103 void** ptr,
00104 int newsize,
00105 int oldsize
00106 );
00107 #endif
00108
00109 #if defined(__cplusplus)
00112 LIBEXPORT void MmReallocCExc (
00113 void** ptr,
00114 int newsize,
00115 int oldsize = 0
00116 );
00117 #endif
00118
00119 #if defined(__cplusplus)
00122 inline ERRVALUE MmReallocD (
00123 void** ptr,
00124 int newsize
00125 ) {
00126 if (*ptr != 0) {
00127 free(*ptr);
00128 }
00129 return (MmAlloc(ptr,newsize));
00130 }
00131 #endif
00132
00133 #if defined(__cplusplus)
00136 inline void MmReallocDExc (
00137 void** ptr,
00138 int newsize
00139 ) {
00140 if (*ptr != 0) {
00141 free(*ptr);
00142 }
00143 MmAllocExc(ptr,newsize);
00144 return;
00145 }
00146 #endif
00147
00148 #if defined(__cplusplus)
00151 LIBEXPORT void MmReallocExc (
00152 void** ptr,
00153 int newsize
00154 );
00155 #endif
00156
00157 #if defined(__cplusplus)
00158 }
00159 #endif
00160
00162
00163 #undef LIBEXPORT
00164
00165 #endif // INC_MI32_MEMALLOC_H