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 &srcString, UINT codePage = CP_ACP);
10
11 // optimized versions that work faster for ASCII strings
12 void MultiByteToUnicodeString2(UString &dest, const AString &srcString, UINT codePage = CP_ACP);
13 void UnicodeStringToMultiByte2(AString &dest, const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
14 void UnicodeStringToMultiByte2(AString &dest, const UString &srcString, UINT codePage);
15
16 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
17 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage = CP_ACP);
18
GetUnicodeString(const wchar_t * unicodeString)19 inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString)
20 { return unicodeString; }
GetUnicodeString(const UString & unicodeString)21 inline const UString& GetUnicodeString(const UString &unicodeString)
22 { return unicodeString; }
GetUnicodeString(const AString & ansiString)23 inline UString GetUnicodeString(const AString &ansiString)
24 { return MultiByteToUnicodeString(ansiString); }
GetUnicodeString(const AString & multiByteString,UINT codePage)25 inline UString GetUnicodeString(const AString &multiByteString, UINT codePage)
26 { return MultiByteToUnicodeString(multiByteString, codePage); }
GetUnicodeString(const wchar_t * unicodeString,UINT)27 inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString, UINT)
28 { return unicodeString; }
GetUnicodeString(const UString & unicodeString,UINT)29 inline const UString& GetUnicodeString(const UString &unicodeString, UINT)
30 { return unicodeString; }
31
GetAnsiString(const char * ansiString)32 inline const char* GetAnsiString(const char* ansiString)
33 { return ansiString; }
GetAnsiString(const AString & ansiString)34 inline const AString& GetAnsiString(const AString &ansiString)
35 { return ansiString; }
GetAnsiString(const UString & unicodeString)36 inline AString GetAnsiString(const UString &unicodeString)
37 { return UnicodeStringToMultiByte(unicodeString); }
38
GetOemString(const char * oemString)39 inline const char* GetOemString(const char* oemString)
40 { return oemString; }
GetOemString(const AString & oemString)41 inline const AString& GetOemString(const AString &oemString)
42 { return oemString; }
GetOemString(const UString & unicodeString)43 inline AString GetOemString(const UString &unicodeString)
44 { return UnicodeStringToMultiByte(unicodeString, CP_OEMCP); }
45
46
47 #ifdef _UNICODE
GetSystemString(const wchar_t * unicodeString)48 inline const wchar_t* GetSystemString(const wchar_t* unicodeString)
49 { return unicodeString;}
GetSystemString(const UString & unicodeString)50 inline const UString& GetSystemString(const UString &unicodeString)
51 { return unicodeString;}
GetSystemString(const wchar_t * unicodeString,UINT)52 inline const wchar_t* GetSystemString(const wchar_t* unicodeString, UINT /* codePage */)
53 { return unicodeString;}
GetSystemString(const UString & unicodeString,UINT)54 inline const UString& GetSystemString(const UString &unicodeString, UINT /* codePage */)
55 { return unicodeString;}
GetSystemString(const AString & multiByteString,UINT codePage)56 inline UString GetSystemString(const AString &multiByteString, UINT codePage)
57 { return MultiByteToUnicodeString(multiByteString, codePage);}
GetSystemString(const AString & multiByteString)58 inline UString GetSystemString(const AString &multiByteString)
59 { return MultiByteToUnicodeString(multiByteString);}
60 #else
GetSystemString(const char * ansiString)61 inline const char* GetSystemString(const char *ansiString)
62 { return ansiString; }
GetSystemString(const AString & multiByteString,UINT)63 inline const AString& GetSystemString(const AString &multiByteString, UINT)
64 { return multiByteString; }
GetSystemString(const char * multiByteString,UINT)65 inline const char * GetSystemString(const char *multiByteString, UINT)
66 { return multiByteString; }
GetSystemString(const UString & unicodeString)67 inline AString GetSystemString(const UString &unicodeString)
68 { return UnicodeStringToMultiByte(unicodeString); }
GetSystemString(const UString & unicodeString,UINT codePage)69 inline AString GetSystemString(const UString &unicodeString, UINT codePage)
70 { return UnicodeStringToMultiByte(unicodeString, codePage); }
71 #endif
72
73 #ifndef UNDER_CE
74 AString SystemStringToOemString(const CSysString &srcString);
75 #endif
76
77 #endif
78