00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <cstring>
00024 #include <ctype.h>
00025 #include <stdarg.h>
00026 #include <iostream>
00027 #include <SDL.h>
00028
00029 #ifdef _WIN32_
00030 #include <windows.h>
00031 #endif
00032
00033 #include "global.h"
00034 #include "misc.h"
00035 #include "ascstring.h"
00036
00037 const char* digit[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
00038 const char* letter[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
00039 "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
00040
00041
00042 char strstring[1000];
00043
00044
00045 int firstBit(int zahl)
00046 {
00047 if (zahl != 0) {
00048 int log = 0;
00049 while ( !(zahl & 1)) {
00050 zahl>>=1;
00051 log++;
00052 }
00053 return log;
00054 } else
00055 return 0;
00056 }
00057
00058
00059 char* strr ( int a ) {
00060 char* s;
00061 s = new char [33];
00062 itoa ( a, s, 10 );
00063 return s;
00064 }
00065
00066
00067 char* strrr ( int a ) {
00068 itoa ( a, strstring, 10 );
00069 return strstring;
00070 }
00071
00072 char* strrr ( Uint32 a ) {
00073 sprintf(strstring, "%d", a);
00074 return strstring;
00075 }
00076
00077 char* strrr ( double f ) {
00078 sprintf(strstring,"%f",f);
00079 return strstring;
00080 }
00081
00082
00083 void beep ( void )
00084 {
00085 printf("\a");
00086 }
00087
00088
00089 typedef unsigned int UNS_32_BITS;
00090
00091
00092 static UNS_32_BITS crc_32_tab[] = {
00093 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
00094 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
00095 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
00096 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
00097 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
00098 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
00099 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
00100 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
00101 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
00102 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
00103 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
00104 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
00105 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
00106 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
00107 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
00108 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
00109 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
00110 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
00111 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
00112 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
00113 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
00114 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
00115 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
00116 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
00117 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
00118 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
00119 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
00120 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
00121 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
00122 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
00123 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
00124 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
00125 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
00126 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
00127 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
00128 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
00129 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
00130 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
00131 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
00132 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
00133 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
00134 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
00135 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
00136 };
00137
00138
00139 #define UPDC32(octet,crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
00140
00141
00142 int crc32buf(const void *vbuf, int len)
00143 {
00144 const char* buf = (const char*) vbuf;
00145
00146 unsigned int crc;
00147 unsigned int oldcrc32;
00148
00149 oldcrc32 = 0xFFFFFFFF;
00150
00151 for ( ; len; --len, ++buf)
00152 {
00153 oldcrc32 = UPDC32(*buf, oldcrc32);
00154 }
00155
00156 return crc = oldcrc32 = ~oldcrc32;
00157
00158 }
00159
00160
00161 int atoi ( const std::string& s )
00162 {
00163 return atoi ( s.c_str() );
00164 }
00165
00166 double atof ( const std::string& s )
00167 {
00168 return atof ( s.c_str() );
00169 }
00170
00171
00172 #ifndef HAVE_STRICMP
00173 char *strupr (const char *a)
00174 {
00175 int i;
00176 int j;
00177 char *b;
00178
00179 j = strlen (a);
00180 b = (char *) malloc (j+1);
00181 for (i = 0; i < j; i++) b[i] = toupper (a[i]);
00182 b[j] = '\0';
00183 return (b);
00184 }
00185 #endif
00186
00187 #ifndef HAVE_ITOA
00188 char* itoa ( int a, char* b, int c)
00189 {
00190 sprintf(b, "%d", a );
00191 return b;
00192 }
00193 #endif