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 
GetUnicodeString(const wchar_t * u)20 inline const wchar_t* GetUnicodeString(const wchar_t *u)  { return u; }
GetUnicodeString(const UString & u)21 inline const UString& GetUnicodeString(const UString &u)  { return u; }
22 
GetUnicodeString(const AString & a)23 inline UString GetUnicodeString(const AString &a)  { return MultiByteToUnicodeString(a); }
GetUnicodeString(const char * a)24 inline UString GetUnicodeString(const char *a)     { return MultiByteToUnicodeString(a); }
25 
GetUnicodeString(const AString & a,UINT codePage)26 inline UString GetUnicodeString(const AString &a, UINT codePage)
27   { return MultiByteToUnicodeString(a, codePage); }
GetUnicodeString(const char * a,UINT codePage)28 inline UString GetUnicodeString(const char *a, UINT codePage)
29   { return MultiByteToUnicodeString(a, codePage); }
30 
GetUnicodeString(const wchar_t * u,UINT)31 inline const wchar_t* GetUnicodeString(const wchar_t *u, UINT) { return u; }
GetUnicodeString(const UString & u,UINT)32 inline const UString& GetUnicodeString(const UString &u, UINT) { return u; }
33 
GetAnsiString(const char * a)34 inline const char*    GetAnsiString(const char    *a) { return a; }
GetAnsiString(const AString & a)35 inline const AString& GetAnsiString(const AString &a) { return a; }
36 
GetAnsiString(const wchar_t * u)37 inline AString GetAnsiString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); }
GetAnsiString(const 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);
GetOemString(const UString & u)48 inline AString GetOemString(const UString &u)
49   { return UnicodeStringToMultiByte(u, CP_OEMCP); }
50 
51 #ifdef _UNICODE
GetSystemString(const wchar_t * u)52   inline const wchar_t* GetSystemString(const wchar_t *u) { return u;}
GetSystemString(const UString & u)53   inline const UString& GetSystemString(const UString &u) { return u;}
GetSystemString(const wchar_t * u,UINT)54   inline const wchar_t* GetSystemString(const wchar_t *u, UINT /* codePage */) { return u;}
GetSystemString(const UString & u,UINT)55   inline const UString& GetSystemString(const UString &u, UINT /* codePage */) { return u;}
56 
GetSystemString(const AString & a,UINT codePage)57   inline UString GetSystemString(const AString &a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); }
GetSystemString(const char * a,UINT codePage)58   inline UString GetSystemString(const char    *a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); }
GetSystemString(const AString & a)59   inline UString GetSystemString(const AString &a) { return MultiByteToUnicodeString(a); }
GetSystemString(const char * a)60   inline UString GetSystemString(const char    *a) { return MultiByteToUnicodeString(a); }
61 #else
GetSystemString(const char * a)62   inline const char*    GetSystemString(const char    *a) { return a; }
GetSystemString(const AString & a)63   inline const AString& GetSystemString(const AString &a) { return a; }
GetSystemString(const char * a,UINT)64   inline const char*    GetSystemString(const char    *a, UINT) { return a; }
GetSystemString(const AString & a,UINT)65   inline const AString& GetSystemString(const AString &a, UINT) { return a; }
66 
GetSystemString(const wchar_t * u)67   inline AString GetSystemString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); }
GetSystemString(const UString & u)68   inline AString GetSystemString(const UString &u) { return UnicodeStringToMultiByte(u); }
GetSystemString(const UString & u,UINT codePage)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