00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef INC_MI32_MEMALLOC_H
00016 #define INC_MI32_MEMALLOC_H
00017
00018 #ifndef INC_MI32_STDDEFNS_H
00019 #include <mi32/stddefns.h>
00020 #endif
00021
00022 #ifndef INC_STDLIB_H
00023 #include <stdlib.h>
00024 #define INC_STDLIB_H
00025 #endif
00026
00027 #ifdef MISYSTEMDLL
00028 #define LIBEXPORT MI_DLLEXPORT
00029 #else
00030 #define LIBEXPORT MI_DLLIMPORT
00031 #endif
00032
00033
00034
00035
00036
00037
00038 #if defined(__cplusplus)
00039 template <class _CT> inline void MmFree(_CT *& p) { if (p != 0) { free(p); p = NULL; } }
00040 #elif !defined(GENERATING_DOXYGEN_OUTPUT)
00041 #define MmFree(p) do {if ((p) != NULL) {free((p));(p) = NULL;}} while (0)
00042 #endif
00043
00044 #if defined(__cplusplus)
00045 extern "C" {
00046 #endif
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 LIBEXPORT ERRVALUE MmAlloc (
00057 void** ptr,
00058 int size
00059 );
00060
00061
00062
00063 LIBEXPORT ERRVALUE MmAllocC (
00064 void** ptr,
00065 int size
00066 );
00067
00068
00069
00070 LIBEXPORT void MmAllocCExc (
00071 void** ptr,
00072 int size
00073 );
00074
00075
00076
00077 LIBEXPORT void MmAllocExc (
00078 void** ptr,
00079 int size
00080 );
00081
00082
00083
00084 LIBEXPORT ERRVALUE MmRealloc (
00085 void** ptr,
00086 int newsize
00087 );
00088
00089 #if defined(__cplusplus)
00090
00091
00092 LIBEXPORT ERRVALUE MmReallocC (
00093 void** ptr,
00094 int newsize,
00095 int oldsize = 0
00096 );
00097 #elif !defined(GENERATING_DOXYGEN_OUTPUT) // normal "C"
00098 LIBEXPORT ERRVALUE MmReallocC (
00099 void** ptr,
00100 int newsize,
00101 int oldsize
00102 );
00103 #endif
00104
00105 #if defined(__cplusplus)
00106
00107
00108 LIBEXPORT void MmReallocCExc (
00109 void** ptr,
00110 int newsize,
00111 int oldsize = 0
00112 );
00113 #endif
00114
00115 #if defined(__cplusplus)
00116
00117
00118 inline ERRVALUE MmReallocD (
00119 void** ptr,
00120 int newsize
00121 ) {
00122 if (*ptr != 0) {
00123 free(*ptr);
00124 }
00125 return (MmAlloc(ptr,newsize));
00126 }
00127 #endif
00128
00129 #if defined(__cplusplus)
00130
00131
00132 inline void MmReallocDExc (
00133 void** ptr,
00134 int newsize
00135 ) {
00136 if (*ptr != 0) {
00137 free(*ptr);
00138 }
00139 MmAllocExc(ptr,newsize);
00140 return;
00141 }
00142 #endif
00143
00144 #if defined(__cplusplus)
00145
00146
00147 LIBEXPORT void MmReallocExc (
00148 void** ptr,
00149 int newsize
00150 );
00151 #endif
00152
00153 #if defined(__cplusplus)
00154 }
00155 #endif
00156
00157
00158
00159 #undef LIBEXPORT
00160
00161 #endif // INC_MI32_MEMALLOC_H