1370b324cSopenharmony_ci// Common/StringConvert.h 2370b324cSopenharmony_ci 3370b324cSopenharmony_ci#ifndef ZIP7_INC_COMMON_STRING_CONVERT_H 4370b324cSopenharmony_ci#define ZIP7_INC_COMMON_STRING_CONVERT_H 5370b324cSopenharmony_ci 6370b324cSopenharmony_ci#include "MyString.h" 7370b324cSopenharmony_ci#include "MyWindows.h" 8370b324cSopenharmony_ci 9370b324cSopenharmony_ciUString MultiByteToUnicodeString(const AString &src, UINT codePage = CP_ACP); 10370b324cSopenharmony_ciUString MultiByteToUnicodeString(const char *src, UINT codePage = CP_ACP); 11370b324cSopenharmony_ci 12370b324cSopenharmony_ci// optimized versions that work faster for ASCII strings 13370b324cSopenharmony_civoid MultiByteToUnicodeString2(UString &dest, const AString &src, UINT codePage = CP_ACP); 14370b324cSopenharmony_ci// void UnicodeStringToMultiByte2(AString &dest, const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed); 15370b324cSopenharmony_civoid UnicodeStringToMultiByte2(AString &dest, const UString &src, UINT codePage); 16370b324cSopenharmony_ci 17370b324cSopenharmony_ciAString UnicodeStringToMultiByte(const UString &src, UINT codePage, char defaultChar, bool &defaultCharWasUsed); 18370b324cSopenharmony_ciAString UnicodeStringToMultiByte(const UString &src, UINT codePage = CP_ACP); 19370b324cSopenharmony_ci 20370b324cSopenharmony_ciinline const wchar_t* GetUnicodeString(const wchar_t *u) { return u; } 21370b324cSopenharmony_ciinline const UString& GetUnicodeString(const UString &u) { return u; } 22370b324cSopenharmony_ci 23370b324cSopenharmony_ciinline UString GetUnicodeString(const AString &a) { return MultiByteToUnicodeString(a); } 24370b324cSopenharmony_ciinline UString GetUnicodeString(const char *a) { return MultiByteToUnicodeString(a); } 25370b324cSopenharmony_ci 26370b324cSopenharmony_ciinline UString GetUnicodeString(const AString &a, UINT codePage) 27370b324cSopenharmony_ci { return MultiByteToUnicodeString(a, codePage); } 28370b324cSopenharmony_ciinline UString GetUnicodeString(const char *a, UINT codePage) 29370b324cSopenharmony_ci { return MultiByteToUnicodeString(a, codePage); } 30370b324cSopenharmony_ci 31370b324cSopenharmony_ciinline const wchar_t* GetUnicodeString(const wchar_t *u, UINT) { return u; } 32370b324cSopenharmony_ciinline const UString& GetUnicodeString(const UString &u, UINT) { return u; } 33370b324cSopenharmony_ci 34370b324cSopenharmony_ciinline const char* GetAnsiString(const char *a) { return a; } 35370b324cSopenharmony_ciinline const AString& GetAnsiString(const AString &a) { return a; } 36370b324cSopenharmony_ci 37370b324cSopenharmony_ciinline AString GetAnsiString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); } 38370b324cSopenharmony_ciinline AString GetAnsiString(const UString &u) { return UnicodeStringToMultiByte(u); } 39370b324cSopenharmony_ci 40370b324cSopenharmony_ci/* 41370b324cSopenharmony_ciinline const char* GetOemString(const char* oem) 42370b324cSopenharmony_ci { return oem; } 43370b324cSopenharmony_ciinline const AString& GetOemString(const AString &oem) 44370b324cSopenharmony_ci { return oem; } 45370b324cSopenharmony_ci*/ 46370b324cSopenharmony_ciconst char* GetOemString(const char* oem); 47370b324cSopenharmony_ciconst AString& GetOemString(const AString &oem); 48370b324cSopenharmony_ciinline AString GetOemString(const UString &u) 49370b324cSopenharmony_ci { return UnicodeStringToMultiByte(u, CP_OEMCP); } 50370b324cSopenharmony_ci 51370b324cSopenharmony_ci#ifdef _UNICODE 52370b324cSopenharmony_ci inline const wchar_t* GetSystemString(const wchar_t *u) { return u;} 53370b324cSopenharmony_ci inline const UString& GetSystemString(const UString &u) { return u;} 54370b324cSopenharmony_ci inline const wchar_t* GetSystemString(const wchar_t *u, UINT /* codePage */) { return u;} 55370b324cSopenharmony_ci inline const UString& GetSystemString(const UString &u, UINT /* codePage */) { return u;} 56370b324cSopenharmony_ci 57370b324cSopenharmony_ci inline UString GetSystemString(const AString &a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); } 58370b324cSopenharmony_ci inline UString GetSystemString(const char *a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); } 59370b324cSopenharmony_ci inline UString GetSystemString(const AString &a) { return MultiByteToUnicodeString(a); } 60370b324cSopenharmony_ci inline UString GetSystemString(const char *a) { return MultiByteToUnicodeString(a); } 61370b324cSopenharmony_ci#else 62370b324cSopenharmony_ci inline const char* GetSystemString(const char *a) { return a; } 63370b324cSopenharmony_ci inline const AString& GetSystemString(const AString &a) { return a; } 64370b324cSopenharmony_ci inline const char* GetSystemString(const char *a, UINT) { return a; } 65370b324cSopenharmony_ci inline const AString& GetSystemString(const AString &a, UINT) { return a; } 66370b324cSopenharmony_ci 67370b324cSopenharmony_ci inline AString GetSystemString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); } 68370b324cSopenharmony_ci inline AString GetSystemString(const UString &u) { return UnicodeStringToMultiByte(u); } 69370b324cSopenharmony_ci inline AString GetSystemString(const UString &u, UINT codePage) { return UnicodeStringToMultiByte(u, codePage); } 70370b324cSopenharmony_ci 71370b324cSopenharmony_ci 72370b324cSopenharmony_ci 73370b324cSopenharmony_ci /* 74370b324cSopenharmony_ci inline AString GetSystemString(const wchar_t *u) 75370b324cSopenharmony_ci { 76370b324cSopenharmony_ci UString s; 77370b324cSopenharmony_ci s = u; 78370b324cSopenharmony_ci return UnicodeStringToMultiByte(s); 79370b324cSopenharmony_ci } 80370b324cSopenharmony_ci */ 81370b324cSopenharmony_ci 82370b324cSopenharmony_ci#endif 83370b324cSopenharmony_ci 84370b324cSopenharmony_ci#ifndef UNDER_CE 85370b324cSopenharmony_ciAString SystemStringToOemString(const CSysString &src); 86370b324cSopenharmony_ci#endif 87370b324cSopenharmony_ci 88370b324cSopenharmony_ci 89370b324cSopenharmony_ci#ifdef _WIN32 90370b324cSopenharmony_ci/* we don't need locale functions in Windows 91370b324cSopenharmony_ci but we can define ENV_HAVE_LOCALE here for debug purposes */ 92370b324cSopenharmony_ci// #define ENV_HAVE_LOCALE 93370b324cSopenharmony_ci#else 94370b324cSopenharmony_ci#define ENV_HAVE_LOCALE 95370b324cSopenharmony_ci#endif 96370b324cSopenharmony_ci 97370b324cSopenharmony_ci#ifdef ENV_HAVE_LOCALE 98370b324cSopenharmony_civoid MY_SetLocale(); 99370b324cSopenharmony_ciconst char *GetLocale(void); 100370b324cSopenharmony_ci#endif 101370b324cSopenharmony_ci 102370b324cSopenharmony_ci#if !defined(_WIN32) || defined(ENV_HAVE_LOCALE) 103370b324cSopenharmony_cibool IsNativeUTF8(); 104370b324cSopenharmony_ci#endif 105370b324cSopenharmony_ci 106370b324cSopenharmony_ci#ifndef _WIN32 107370b324cSopenharmony_ciextern bool g_ForceToUTF8; 108370b324cSopenharmony_ci#endif 109370b324cSopenharmony_ci 110370b324cSopenharmony_ci#endif 111