2020-09-30 16:53:55 +02:00

95 lines
2.5 KiB
C++

/*
* multilang.hxx
*
* most of the contents of this file are reduced/slightly modified functions from mshtml...intlcore
*/
#ifndef __MULTILANG_HXX__
#define __MULTILANG_HXX__ 1
#include <mlang.h>
HRESULT
MultiByteToWideCharGeneric(BSTR * pbstr, char * sz, int cch, UINT cp);
HRESULT
MultiByteToWideCharWithMlang(BSTR * pbstr, char * sz, int cch, UINT cp, IMultiLanguage2** pMultiLanguage2);
HRESULT
MultiByteToWideCharInternal(BSTR * pbstr, char * sz, int cch, UINT cp, IMultiLanguage2** pMultiLanguage2);
typedef struct
{
//
// ListEntry - cache entries comprise a double-linked list
//
LIST_ENTRY ListEntry;
//
// cached MimeSetInfo
//
MIMECSETINFO MimeSetInfo;
}
MIMEINFO_CACHE_ENTRY, *LPMIMEINFO_CACHE_ENTRY;
class CMimeInfoCache
{
private:
SERIALIZED_LIST _MimeSetInfoCache;
public:
CMimeInfoCache(DWORD* pdwStatus);
~CMimeInfoCache();
HRESULT GetCharsetInfo(LPWSTR lpwszCharset, PMIMECSETINFO pMimeCSetInfo);
void AddCharsetInfo(PMIMECSETINFO pMimeCSetInfo);
};
#define CP_1250 1250 // ANSI - Central Europe
#define CP_1251 1251 // ANSI - Cyrillic
#define CP_1252 1252 // ANSI - Latin I
#define CP_1253 1253 // ANSI - Greek
#define CP_1254 1254 // ANSI - Turkish
#define CP_1255 1255 // ANSI - Hebrew
#define CP_1256 1256 // ANSI - Arabic
#define CP_1257 1257 // ANSI - Baltic
#define CP_1258 1258 // ANSI/OEM - Viet Nam
#define CP_ISO_8859_1 28591 // ISO 8859-1 Latin I
#define CP_UTF_8 65001 // UTF-8
#define CP_UCS_2 1200 // Unicode, ISO 10646
#define WCH_UTF16_HIGH_FIRST WCHAR(0xd800)
#define WCH_UTF16_HIGH_LAST WCHAR(0xdbff)
#define WCH_UTF16_LOW_FIRST WCHAR(0xdc00)
#define WCH_UTF16_LOW_LAST WCHAR(0xdfff)
inline BOOL
InRange( WCHAR chmin, WCHAR ch, WCHAR chmax)
{
return (unsigned)(ch - chmin) <= (unsigned)(chmax - chmin);
}
inline BOOL
IsHighSurrogateChar(WCHAR ch)
{
return InRange( ch, WCH_UTF16_HIGH_FIRST, WCH_UTF16_HIGH_LAST );
}
inline BOOL
IsLowSurrogateChar(WCHAR ch)
{
return InRange( ch, WCH_UTF16_LOW_FIRST, WCH_UTF16_LOW_LAST );
}
inline BOOL
IsValidWideChar(WCHAR ch)
{
return (ch < 0xfdd0) || ((ch > 0xfdef) && (ch <= 0xffef)) || ((ch >= 0xfff9) && (ch <= 0xfffd));
}
#endif /*__MULTILANG_HXX__*/