Virtual U.org
Get Personal Training on VU Today
    
Top shadow
 
 register/help
User Name:

Password:

ALL.H Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

ALL.H

Go to the documentation of this file.
00001 //Filename    : ALL.H
00002 //Description : General-purpose header file, include Mem & Error
00003 
00004 #ifndef __ALL_H
00005 #define __ALL_H
00006 
00007 //--------- Include other headers -------//
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 //---------- Debug functions -------//
00030 
00031 #ifdef DEBUG
00032 void __cdecl debug_msg( char* fmt, ... );
00033 #endif
00034 
00035 //---------- define class Mem ----------//
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 // called when DEBUG mode is off
00062 char* mem_resize_keep_data(void*,unsigned,unsigned);
00063 
00064 extern Mem mem;
00065 
00066 //------- Define Class Error ------------//
00067 
00068 typedef void (*ExtraHandler)();
00069 
00071 class Error {
00072 private:
00073     ExtraHandler extra_handler;                   // extra error 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 //-------- error handling functions ----------//
00089 
00090 #ifdef DEBUG
00091 // 0 for null
00092 #define err_when(cond)   if(cond) err.internal(0,__FILE__, __LINE__)
00093 // 0 for null
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 // always use err_if(cond) together with err_now(), so when debug is turn off, these two statement will turn off
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 //------ memory allocation functions --------//
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 // mem_resize_keep_data() will be called directly when not in DEBUG mode
00127 #endif
00128 
00129 //--------------------------------------------//
00130 #endif

Generated on Fri Aug 23 01:37:00 2002 for VirtualU by doxygen1.2.17