aboutsummaryrefslogtreecommitdiff
path: root/CPP/Common/StringConvert.h
diff options
context:
space:
mode:
authorIgor Pavlov <87184205+ip7z@users.noreply.github.com>2021-12-27 00:00:00 +0000
committerIgor Pavlov <87184205+ip7z@users.noreply.github.com>2022-03-18 15:35:13 +0500
commitf19f813537c7aea1c20749c914e756b54a9c3cf5 (patch)
tree816ba62ca7c0fa19f2eb46d9e9d6f7dd7c3a744d /CPP/Common/StringConvert.h
parent98e06a519b63b81986abe76d28887f6984a7732b (diff)
download7zip-21.07.tar.gz
7zip-21.07.tar.bz2
7zip-21.07.zip
'21.07'21.07
Diffstat (limited to '')
-rw-r--r--CPP/Common/StringConvert.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/CPP/Common/StringConvert.h b/CPP/Common/StringConvert.h
new file mode 100644
index 0000000..865c025
--- /dev/null
+++ b/CPP/Common/StringConvert.h
@@ -0,0 +1,110 @@
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
9UString MultiByteToUnicodeString(const AString &src, UINT codePage = CP_ACP);
10UString MultiByteToUnicodeString(const char *src, UINT codePage = CP_ACP);
11
12// optimized versions that work faster for ASCII strings
13void MultiByteToUnicodeString2(UString &dest, const AString &src, UINT codePage = CP_ACP);
14// void UnicodeStringToMultiByte2(AString &dest, const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
15void UnicodeStringToMultiByte2(AString &dest, const UString &src, UINT codePage);
16
17AString UnicodeStringToMultiByte(const UString &src, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
18AString UnicodeStringToMultiByte(const UString &src, UINT codePage = CP_ACP);
19
20inline const wchar_t* GetUnicodeString(const wchar_t *u) { return u; }
21inline const UString& GetUnicodeString(const UString &u) { return u; }
22
23inline UString GetUnicodeString(const AString &a) { return MultiByteToUnicodeString(a); }
24inline UString GetUnicodeString(const char *a) { return MultiByteToUnicodeString(a); }
25
26inline UString GetUnicodeString(const AString &a, UINT codePage)
27 { return MultiByteToUnicodeString(a, codePage); }
28inline UString GetUnicodeString(const char *a, UINT codePage)
29 { return MultiByteToUnicodeString(a, codePage); }
30
31inline const wchar_t* GetUnicodeString(const wchar_t *u, UINT) { return u; }
32inline const UString& GetUnicodeString(const UString &u, UINT) { return u; }
33
34inline const char* GetAnsiString(const char *a) { return a; }
35inline const AString& GetAnsiString(const AString &a) { return a; }
36
37inline AString GetAnsiString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); }
38inline AString GetAnsiString(const UString &u) { return UnicodeStringToMultiByte(u); }
39
40/*
41inline const char* GetOemString(const char* oem)
42 { return oem; }
43inline const AString& GetOemString(const AString &oem)
44 { return oem; }
45*/
46const char* GetOemString(const char* oem);
47const AString& GetOemString(const AString &oem);
48inline 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
85AString SystemStringToOemString(const CSysString &src);
86#endif
87
88
89#ifdef _WIN32
90/* we don't need locale functions in Windows
91 but we can define ENV_HAVE_LOCALE here for debug purposes */
92// #define ENV_HAVE_LOCALE
93#else
94#define ENV_HAVE_LOCALE
95#endif
96
97#ifdef ENV_HAVE_LOCALE
98void MY_SetLocale();
99const char *GetLocale(void);
100#endif
101
102#if !defined(_WIN32) || defined(ENV_HAVE_LOCALE)
103bool IsNativeUTF8();
104#endif
105
106#ifndef _WIN32
107extern bool g_ForceToUTF8;
108#endif
109
110#endif