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-2010  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 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[] = { /* CRC polynomial 0xedb88320 */
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

Generated on Mon May 21 01:26:35 2012 for Advanced Strategic Command by  doxygen 1.5.1