00001
00002
00003
00004 #ifndef __ALL_H
00005 #define __ALL_H
00006
00007
00008
00009 #ifndef __WINDOWS_
00010 #include <windows.h>
00011 #endif
00012
00013 #ifndef __OMISC_H
00014 #include <OMISC.H>
00015 #endif
00016
00017 #ifndef __OSTR_H
00018 #include <OSTR.H>
00019 #endif
00020
00021 #ifndef __OFILE_H
00022 #include <OFILE.H>
00023 #endif
00024
00025 #ifndef __GAMEDEF_H
00026 #include <GAMEDEF.H>
00027 #endif
00028
00029
00030
00031 #ifdef DEBUG
00032 void __cdecl debug_msg( char* fmt, ... );
00033 #endif
00034
00035
00036
00037 struct MemInfo;
00038
00040 class Mem {
00041 public :
00042 MemInfo* info_array;
00043 short ptr_num;
00044 short ptr_used;
00045
00046 public :
00047 Mem();
00048 ~Mem();
00049
00050 char* add(unsigned,char*,int);
00051 char* add_clear(unsigned,char*,int);
00052
00053 char* resize(void*,unsigned,char*,int);
00054 char* resize_keep_data(void *orgPtr, unsigned orgSize, unsigned newSize, char* fileName, int fileLine);
00055
00056 void del(void*,char*,int);
00057
00058 int get_mem_size(void *memPtr);
00059 };
00060
00061
00062 char* mem_resize_keep_data(void*,unsigned,unsigned);
00063
00064 extern Mem mem;
00065
00066
00067
00068 typedef void (*ExtraHandler)();
00069
00071 class Error {
00072 private:
00073 ExtraHandler extra_handler;
00074
00075 public:
00076 Error();
00077
00078 void internal(char*,char*,int);
00079 void mem();
00080 void msg(char*,...);
00081 void run(char*,...);
00082
00083 void set_extra_handler(ExtraHandler extraHandler) { extra_handler = extraHandler; }
00084 };
00085
00086 extern Error err;
00087
00088
00089
00090 #ifdef DEBUG
00091
00092 #define err_when(cond) if(cond) err.internal(0,__FILE__, __LINE__)
00093
00094 #define err_here() err.internal(0,__FILE__, __LINE__)
00095 #define err_if(cond) if(cond)
00096 #define err_else else
00097 #define err_now(msg) err.run(msg) // internal error
00098
00099
00100 #else
00101 #define err_when(cond)
00102 #define err_here()
00103 #define err_if(cond)
00104 #define err_else
00105 #define err_now(msg)
00106 #endif
00107
00108
00109
00110 #ifndef NO_MEM_CLASS
00111
00112 #define mem_add(memSize) mem.add(memSize, __FILE__, __LINE__)
00113 #define mem_add_clear(memSize) mem.add_clear(memSize, __FILE__, __LINE__)
00114 #define mem_resize(orgPtr,newSize) mem.resize(orgPtr, newSize, __FILE__, __LINE__)
00115 #define mem_del(memPtr) mem.del(memPtr, __FILE__, __LINE__)
00116
00117 #define mem_resize_keep_data(orgPtr, orgSize, newSize) \
00118 mem.resize_keep_data(orgPtr, orgSize, newSize, __FILE__, __LINE__)
00119 #else
00120
00121 #define mem_add(memSize) ((char*)malloc(memSize))
00122 #define mem_add_clear(memSize) ((char*)calloc(1,memSize))
00123 #define mem_resize(orgPtr, newSize) ((char*)realloc(orgPtr,newSize))
00124 #define mem_del(memPtr) free(memPtr)
00125
00126
00127 #endif
00128
00129
00130 #endif