00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_UTIL_H__
00020 #define __CS_UTIL_H__
00021
00022 #include <stdio.h>
00023 #include "cssys/csunicode.h"
00024
00038 extern char *csStrNew (const char *s);
00043 extern char *csStrNew (const wchar_t *s);
00047 extern wchar_t* csStrNewW (const wchar_t *s);
00052 extern wchar_t* csStrNewW (const char *s);
00053
00066 struct csWtoC
00067 {
00068 private:
00069 char* s;
00070 public:
00075 csWtoC (const wchar_t* ws)
00076 { s = csStrNew (ws); }
00080 ~csWtoC ()
00081 { delete[] s; }
00085 operator const char* () const
00086 { return s; }
00087 };
00088
00095 struct csCtoW
00096 {
00097 private:
00098 wchar_t* ws;
00099 public:
00104 csCtoW (const char* s)
00105 { ws = csStrNewW (s); }
00109 ~csCtoW ()
00110 { delete[] ws; }
00114 operator const wchar_t* () const
00115 { return ws; }
00116 };
00117
00127 extern char *csExpandName (const char *iName);
00128
00133 extern void csSplitPath (const char *iPathName, char *oPath, size_t iPathSize,
00134 char *oName, size_t iNameSize);
00135
00145 extern bool csGlobMatches (const char *fName, const char *fMask);
00146
00151 int csFindNearestPowerOf2 (int n);
00152
00154 bool csIsPowerOf2 (int n);
00155
00157 static inline int csLog2 (int n)
00158 {
00159 int l = 31; unsigned x = 0x80000000;
00160 while (x && !(n & x))
00161 l--, x >>= 1;
00162 return l;
00163 }
00164
00170 void csFindReplace (char *dest, const char *src, const char *search,
00171 const char *replace, int max);
00172
00175 #endif // __CS_UTIL_H__