Home | History | Annotate | Download | only in Common
      1 // Common/StringConvert.h
      2 
      3 #ifndef __COMMON_STRING_CONVERT_H
      4 #define __COMMON_STRING_CONVERT_H
      5 
      6 #include "MyString.h"
      7 #include "MyWindows.h"
      8 
      9 UString MultiByteToUnicodeString(const AString &src, UINT codePage = CP_ACP);
     10 UString MultiByteToUnicodeString(const char *src, UINT codePage = CP_ACP);
     11 
     12 // optimized versions that work faster for ASCII strings
     13 void MultiByteToUnicodeString2(UString &dest, const AString &src, UINT codePage = CP_ACP);
     14 // void UnicodeStringToMultiByte2(AString &dest, const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
     15 void UnicodeStringToMultiByte2(AString &dest, const UString &src, UINT codePage);
     16 
     17 AString UnicodeStringToMultiByte(const UString &src, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
     18 AString UnicodeStringToMultiByte(const UString &src, UINT codePage = CP_ACP);
     19 
     20 inline const wchar_t* GetUnicodeString(const wchar_t *u)  { return u; }
     21 inline const UString& GetUnicodeString(const UString &u)  { return u; }
     22 
     23 inline UString GetUnicodeString(const AString &a)  { return MultiByteToUnicodeString(a); }
     24 inline UString GetUnicodeString(const char *a)     { return MultiByteToUnicodeString(a); }
     25 
     26 inline UString GetUnicodeString(const AString &a, UINT codePage)
     27   { return MultiByteToUnicodeString(a, codePage); }
     28 inline UString GetUnicodeString(const char *a, UINT codePage)
     29   { return MultiByteToUnicodeString(a, codePage); }
     30 
     31 inline const wchar_t* GetUnicodeString(const wchar_t *u, UINT) { return u; }
     32 inline const UString& GetUnicodeString(const UString &u, UINT) { return u; }
     33 
     34 inline const char*    GetAnsiString(const char    *a) { return a; }
     35 inline const AString& GetAnsiString(const AString &a) { return a; }
     36 
     37 inline AString GetAnsiString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); }
     38 inline AString GetAnsiString(const UString &u) { return UnicodeStringToMultiByte(u); }
     39 
     40 /*
     41 inline const char* GetOemString(const char* oem)
     42   { return oem; }
     43 inline const AString& GetOemString(const AString &oem)
     44   { return oem; }
     45 */
     46 const char* GetOemString(const char* oem);
     47 const AString& GetOemString(const AString &oem);
     48 inline AString GetOemString(const UString &u)
     49   { return UnicodeStringToMultiByte(u, CP_OEMCP); }
     50 
     51 #ifdef _UNICODE
     52   inline const wchar_t* GetSystemString(const wchar_t *u) { return u;}
     53   inline const UString& GetSystemString(const UString &u) { return u;}
     54   inline const wchar_t* GetSystemString(const wchar_t *u, UINT /* codePage */) { return u;}
     55   inline const UString& GetSystemString(const UString &u, UINT /* codePage */) { return u;}
     56 
     57   inline UString GetSystemString(const AString &a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); }
     58   inline UString GetSystemString(const char    *a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); }
     59   inline UString GetSystemString(const AString &a) { return MultiByteToUnicodeString(a); }
     60   inline UString GetSystemString(const char    *a) { return MultiByteToUnicodeString(a); }
     61 #else
     62   inline const char*    GetSystemString(const char    *a) { return a; }
     63   inline const AString& GetSystemString(const AString &a) { return a; }
     64   inline const char*    GetSystemString(const char    *a, UINT) { return a; }
     65   inline const AString& GetSystemString(const AString &a, UINT) { return a; }
     66 
     67   inline AString GetSystemString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); }
     68   inline AString GetSystemString(const UString &u) { return UnicodeStringToMultiByte(u); }
     69   inline AString GetSystemString(const UString &u, UINT codePage) { return UnicodeStringToMultiByte(u, codePage); }
     70 
     71 
     72 
     73   /*
     74   inline AString GetSystemString(const wchar_t *u)
     75   {
     76     UString s;
     77     s = u;
     78     return UnicodeStringToMultiByte(s);
     79   }
     80   */
     81 
     82 #endif
     83 
     84 #ifndef UNDER_CE
     85 AString SystemStringToOemString(const CSysString &src);
     86 #endif
     87 
     88 #endif
     89