diff options
Diffstat (limited to 'CPP/Common/StringConvert.h')
| -rw-r--r-- | CPP/Common/StringConvert.h | 110 |
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 | |||
| 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 | |||
| 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 | ||
| 98 | void MY_SetLocale(); | ||
| 99 | const char *GetLocale(void); | ||
| 100 | #endif | ||
| 101 | |||
| 102 | #if !defined(_WIN32) || defined(ENV_HAVE_LOCALE) | ||
| 103 | bool IsNativeUTF8(); | ||
| 104 | #endif | ||
| 105 | |||
| 106 | #ifndef _WIN32 | ||
| 107 | extern bool g_ForceToUTF8; | ||
| 108 | #endif | ||
| 109 | |||
| 110 | #endif | ||
