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 getFirstBit(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
00060 char* strrr ( int a ) {
00061 itoa ( a, strstring, 10 );
00062 return strstring;
00063 }
00064
00065 char* strrr ( Uint32 a ) {
00066 sprintf(strstring, "%d", a);
00067 return strstring;
00068 }
00069
00070 char* strrr ( double f ) {
00071 sprintf(strstring,"%f",f);
00072 return strstring;
00073 }
00074
00075
00076 typedef unsigned int UNS_32_BITS;
00077
00078
00079 static UNS_32_BITS crc_32_tab[] = {
00080 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
00081 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
00082 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
00083 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
00084 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
00085 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
00086 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
00087 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
00088 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
00089 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
00090 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
00091 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
00092 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
00093 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
00094 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
00095 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
00096 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
00097 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
00098 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
00099 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
00100 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
00101 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
00102 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
00103 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
00104 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
00105 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
00106 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
00107 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
00108 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
00109 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
00110 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
00111 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
00112 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
00113 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
00114 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
00115 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
00116 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
00117 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
00118 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
00119 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
00120 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
00121 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
00122 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
00123 };
00124
00125
00126 #define UPDC32(octet,crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
00127
00128
00129 int crc32buf(const void *vbuf, int len)
00130 {
00131 const char* buf = (const char*) vbuf;
00132
00133 unsigned int crc;
00134 unsigned int oldcrc32;
00135
00136 oldcrc32 = 0xFFFFFFFF;
00137
00138 for ( ; len; --len, ++buf)
00139 {
00140 oldcrc32 = UPDC32(*buf, oldcrc32);
00141 }
00142
00143 return crc = oldcrc32 = ~oldcrc32;
00144
00145 }
00146
00147
00148 int atoi ( const std::string& s )
00149 {
00150 return atoi ( s.c_str() );
00151 }
00152
00153 double atof ( const std::string& s )
00154 {
00155 return atof ( s.c_str() );
00156 }
00157
00158
00159 #ifndef HAVE_STRICMP
00160 char *strupr (const char *a)
00161 {
00162 int i;
00163 int j;
00164 char *b;
00165
00166 j = strlen (a);
00167 b = (char *) malloc (j+1);
00168 for (i = 0; i < j; i++) b[i] = toupper (a[i]);
00169 b[j] = '\0';
00170 return (b);
00171 }
00172 #endif
00173
00174 #ifndef HAVE_ITOA
00175 char* itoa ( int a, char* b, int c)
00176 {
00177 sprintf(b, "%d", a );
00178 return b;
00179 }
00180 #endif