Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / Common / StringConvert.h
1 // Common/StringConvert.h\r
2 \r
3 #ifndef __COMMON_STRING_CONVERT_H\r
4 #define __COMMON_STRING_CONVERT_H\r
5 \r
6 #include "MyWindows.h"\r
7 #include "MyString.h"\r
8 #include "Types.h"\r
9 \r
10 UString MultiByteToUnicodeString(const AString &srcString, UINT codePage = CP_ACP);\r
11 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage, char defaultChar, bool &defaultCharWasUsed);\r
12 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage = CP_ACP);\r
13 \r
14 \r
15 inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString)\r
16   { return unicodeString; }\r
17 inline const UString& GetUnicodeString(const UString &unicodeString)\r
18   { return unicodeString; }\r
19 inline UString GetUnicodeString(const AString &ansiString)\r
20   { return MultiByteToUnicodeString(ansiString); }\r
21 inline UString GetUnicodeString(const AString &multiByteString, UINT codePage)\r
22   { return MultiByteToUnicodeString(multiByteString, codePage); }\r
23 inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString, UINT)\r
24   { return unicodeString; }\r
25 inline const UString& GetUnicodeString(const UString &unicodeString, UINT)\r
26   { return unicodeString; }\r
27 \r
28 inline const char* GetAnsiString(const char* ansiString)\r
29   { return ansiString; }\r
30 inline const AString& GetAnsiString(const AString &ansiString)\r
31   { return ansiString; }\r
32 inline AString GetAnsiString(const UString &unicodeString)\r
33   { return UnicodeStringToMultiByte(unicodeString); }\r
34 \r
35 inline const char* GetOemString(const char* oemString)\r
36   { return oemString; }\r
37 inline const AString& GetOemString(const AString &oemString)\r
38   { return oemString; }\r
39 inline AString GetOemString(const UString &unicodeString)\r
40   { return UnicodeStringToMultiByte(unicodeString, CP_OEMCP); }\r
41 \r
42 \r
43 #ifdef _UNICODE\r
44   inline const wchar_t* GetSystemString(const wchar_t* unicodeString)\r
45     { return unicodeString;}\r
46   inline const UString& GetSystemString(const UString &unicodeString)\r
47     { return unicodeString;}\r
48   inline const wchar_t* GetSystemString(const wchar_t* unicodeString, UINT /* codePage */)\r
49     { return unicodeString;}\r
50   inline const UString& GetSystemString(const UString &unicodeString, UINT /* codePage */)\r
51     { return unicodeString;}\r
52   inline UString GetSystemString(const AString &multiByteString, UINT codePage)\r
53     { return MultiByteToUnicodeString(multiByteString, codePage);}\r
54   inline UString GetSystemString(const AString &multiByteString)\r
55     { return MultiByteToUnicodeString(multiByteString);}\r
56 #else\r
57   inline const char* GetSystemString(const char *ansiString)\r
58     { return ansiString; }\r
59   inline const AString& GetSystemString(const AString &multiByteString, UINT)\r
60     { return multiByteString; }\r
61   inline const char * GetSystemString(const char *multiByteString, UINT)\r
62     { return multiByteString; }\r
63   inline AString GetSystemString(const UString &unicodeString)\r
64     { return UnicodeStringToMultiByte(unicodeString); }\r
65   inline AString GetSystemString(const UString &unicodeString, UINT codePage)\r
66     { return UnicodeStringToMultiByte(unicodeString, codePage); }\r
67 #endif\r
68 \r
69 #ifndef UNDER_CE\r
70 AString SystemStringToOemString(const CSysString &srcString);\r
71 #endif\r
72 \r
73 #endif\r