|
util.h00001 /* 00002 Copyright (C) 1998 by Jorrit Tyberghein 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public 00015 License along with this library; if not, write to the Free 00016 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00017 */ 00018 00019 #ifndef __UTIL_H__ 00020 #define __UTIL_H__ 00021 00022 #include <stdio.h> 00023 00025 long csRndNum (long minRange, long maxRange); 00026 00033 extern char *csStrNew (const char *s); 00034 00040 extern void csCombinations (int m, int n, 00041 bool (*callback) (int *vector, int count, 00042 void *arg), void *arg); 00043 00053 extern char *csExpandName (const char *iName); 00054 00059 extern void csSplitPath (const char *iPathName, char *oPath, size_t iPathSize, 00060 char *oName, size_t iNameSize); 00061 00070 extern bool csGlobMatches (const char *fName, const char *fMask); 00071 00073 static inline void csSwapInt (int &a, int &b) 00074 { 00075 int tmp = a; 00076 a = b; b = tmp; 00077 } 00078 00080 static inline void csSwapFloat (float &a, float &b) 00081 { 00082 float tmp = a; 00083 a = b; b = tmp; 00084 } 00085 00087 static inline float csSquareFloat (float x) 00088 { 00089 return x*x; 00090 } 00091 00093 static inline unsigned long csByteSwap32bit( const unsigned long value ) 00094 { 00095 return ((value >> 24 ) & 0x000000FF ) | ((value >> 8) & 0x0000FF00) 00096 | ((value << 8) & 0x00FF0000) | (( value << 24) & 0xFF000000); 00097 } 00098 00100 static inline unsigned short csByteSwap16bit( const unsigned short value ) 00101 { 00102 return (( value >> 8 ) & 0x000000FF ) | (( value << 8 ) & 0x0000FF00 ); 00103 } 00104 00106 void csByteSwap32bitBuffer( register unsigned long* const place, 00107 register unsigned long count ); 00108 00110 void csByteSwap16bitBuffer( register unsigned short* const place, 00111 register unsigned long count ); 00112 00117 int csFindNearestPowerOf2 (int n); 00118 00120 bool csIsPowerOf2 (int n); 00121 00123 static inline int csLog2 (int n) 00124 { 00125 int l = 31; unsigned x = 0x80000000; 00126 while (x && !(n & x)) 00127 l--, x >>= 1; 00128 return l; 00129 } 00130 00136 void csFindReplace (char *dest, const char *src, const char *search, 00137 const char *replace, int max); 00138 00139 #endif // __UTIL_H__ Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000 |