Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

misc.cpp

Go to the documentation of this file.
00001 /*
00002     This file is part of Advanced Strategic Command; http://www.asc-hq.de
00003     Copyright (C) 1994-2005  Martin Bickel  and  Marc Schellenberger
00004 
00005     This program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program; see the file COPYING. If not, write to the 
00017     Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
00018     Boston, MA  02111-1307  USA
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[] = { /* CRC polynomial 0xedb88320 */
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

Generated on Tue Jun 24 01:27:46 2008 for Advanced Strategic Command by  doxygen 1.4.2