66 return CoCreateInstance(&CLSID_CMultiLanguage,
NULL, CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
67 &IID_IMultiLanguage, (
void **)ml);
75 IMimeInternational_AddRef( iface );
105 This->cs.DebugInfo->Spare[0] = 0;
117 TRACE(
"(%p)->(%p)\n", iface, hCharset);
132 TRACE(
"(%p)->(%p)\n", iface, phCharset);
137 hr = IMimeInternational_GetCodePageCharset(iface,
GetACP(), CHARSET_BODY, &hcs);
141 *phCharset =
This->default_charset;
155 hr = IMultiLanguage_GetCodePageInfo(ml,
cp, mlang_cp_info);
156 IMultiLanguage_Release(ml);
162 CHARSETTYPE ctCsetType,
163 LPHCHARSET phCharset)
166 MIMECPINFO mlang_cp_info;
168 TRACE(
"(%p)->(%ld, %d, %p)\n", iface, cpiCodePage, ctCsetType, phCharset);
182 charset_nameW = mlang_cp_info.wszBodyCharset;
185 charset_nameW = mlang_cp_info.wszHeaderCharset;
188 charset_nameW = mlang_cp_info.wszWebCharset;
191 return MIME_E_INVALID_CHARSET_TYPE;
196 hr = IMimeInternational_FindCharset(iface, charset_name, phCharset);
215 hr = IMultiLanguage_GetCharsetInfo(ml, bstr, mlang_info);
216 IMultiLanguage_Release(ml);
229 charset->cs_info.cpiWindows = mlang_info->uiCodePage;
230 charset->cs_info.cpiInternet = mlang_info->uiInternetEncoding;
232 charset->cs_info.dwReserved1 = 0;
235 return charset->cs_info.hCharset;
239 LPHCHARSET phCharset)
255 *phCharset =
charset->cs_info.hCharset;
261 if(
hr == MIME_E_NOT_FOUND)
263 MIMECSETINFO mlang_info;
279 LPINETCSETINFO pCsetInfo)
285 TRACE(
"(%p)->(%p, %p)\n", iface, hCharset, pCsetInfo);
291 if(
charset->cs_info.hCharset == hCharset)
305 LPCODEPAGEINFO pCodePageInfo)
317 TRACE(
"(%p)->(%ld, %ld)\n", iface, cpiSource, cpiDest);
324 hr = IMultiLanguage_IsConvertible(ml, cpiSource, cpiDest);
325 IMultiLanguage_Release(ml);
333 LPPROPVARIANT pDecoded,
334 LPRFC1522INFO pRfc1522Info)
343 LPRFC1522INFO pRfc1522Info)
356 TRACE(
"(%p)->(%ld, %ld, %p, %p, %p)\n", iface, cpiSource, cpiDest, pIn, pOut, pcbRead);
392 IMultiLanguage_Release(ml);
399 CODEPAGEID cpiDest, LPPROPVARIANT pIn,
406 TRACE(
"(%p)->(%ld, %ld, %p %p)\n", iface, cpiSource, cpiDest, pIn, pOut);
412 src_len =
strlen(pIn->pszVal);
428 hr = IMultiLanguage_ConvertString(ml, &
mode, cpiSource, cpiDest, (
BYTE*)pIn->pszVal, &
in_size,
441 hr = IMultiLanguage_ConvertString(ml, &
mode, cpiSource, cpiDest, (
BYTE*)pIn->pszVal, &
in_size,
461 IMultiLanguage_Release(ml);
538 IMimeInternational_AddRef(*internat);
544 TRACE(
"(%p)\n", internat);
547 IMimeInternational_AddRef(*internat);
553 IMimeInternational *internat;
561 hr = IMimeInternational_FindCharset(internat,
name,
charset);
562 IMimeInternational_Release(internat);
569 IMimeInternational *internat;
572 TRACE(
"(%p, %p)\n", hCharset, pCsetInfo);
577 hr = IMimeInternational_GetCharsetInfo(internat, hCharset, pCsetInfo);
578 IMimeInternational_Release(internat);
585 IMimeInternational *internat;
593 hr = IMimeInternational_GetDefaultCharset(internat,
charset);
594 IMimeInternational_Release(internat);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define UlongToHandle(ul)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static HRESULT WINAPI MimeInternat_MLANG_ConvertInetReset(IMimeInternational *iface)
static HRESULT WINAPI MimeInternat_Rfc1522Decode(IMimeInternational *iface, LPCSTR pszValue, LPSTR pszCharset, ULONG cchmax, LPSTR *ppszDecoded)
static HRESULT WINAPI MimeInternat_ConvertBuffer(IMimeInternational *iface, CODEPAGEID cpiSource, CODEPAGEID cpiDest, LPBLOB pIn, LPBLOB pOut, ULONG *pcbRead)
static HRESULT WINAPI MimeInternat_DecodeHeader(IMimeInternational *iface, HCHARSET hCharset, LPCSTR pszData, LPPROPVARIANT pDecoded, LPRFC1522INFO pRfc1522Info)
static HRESULT mlang_getcsetinfo(const char *charset, MIMECSETINFO *mlang_info)
HRESULT WINAPI MimeOleFindCharset(LPCSTR name, LPHCHARSET charset)
static HRESULT WINAPI MimeInternat_CanConvertCodePages(IMimeInternational *iface, CODEPAGEID cpiSource, CODEPAGEID cpiDest)
static HCHARSET add_charset(struct list *list, MIMECSETINFO *mlang_info, HCHARSET handle)
HRESULT WINAPI MimeOleGetInternat(IMimeInternational **internat)
static IMimeInternationalVtbl mime_internat_vtbl
static HRESULT WINAPI MimeInternat_QueryInterface(IMimeInternational *iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI MimeInternat_MLANG_ConvertInetString(IMimeInternational *iface, CODEPAGEID cpiSource, CODEPAGEID cpiDest, LPCSTR pSource, int *pnSizeOfSource, LPSTR pDestination, int *pnDstSize)
static HRESULT WINAPI MimeInternat_ConvertString(IMimeInternational *iface, CODEPAGEID cpiSource, CODEPAGEID cpiDest, LPPROPVARIANT pIn, LPPROPVARIANT pOut)
HRESULT MimeInternational_Construct(IMimeInternational **internat)
static ULONG WINAPI MimeInternat_AddRef(IMimeInternational *iface)
static HRESULT WINAPI MimeInternat_GetCodePageInfo(IMimeInternational *iface, CODEPAGEID cpiCodePage, LPCODEPAGEINFO pCodePageInfo)
static HRESULT WINAPI MimeInternat_GetDefaultCharset(IMimeInternational *iface, LPHCHARSET phCharset)
static HRESULT WINAPI MimeInternat_GetCharsetInfo(IMimeInternational *iface, HCHARSET hCharset, LPINETCSETINFO pCsetInfo)
static HRESULT WINAPI MimeInternat_GetCodePageCharset(IMimeInternational *iface, CODEPAGEID cpiCodePage, CHARSETTYPE ctCsetType, LPHCHARSET phCharset)
static HRESULT get_mlang(IMultiLanguage **ml)
static HRESULT WINAPI MimeInternat_FindCharset(IMimeInternational *iface, LPCSTR pszCharset, LPHCHARSET phCharset)
static HRESULT WINAPI MimeInternat_SetDefaultCharset(IMimeInternational *iface, HCHARSET hCharset)
static HRESULT mlang_getcodepageinfo(UINT cp, MIMECPINFO *mlang_cp_info)
static internat_impl * global_internat
static HRESULT WINAPI MimeInternat_Rfc1522Encode(IMimeInternational *iface, LPCSTR pszValue, HCHARSET hCharset, LPSTR *ppszEncoded)
static internat_impl * impl_from_IMimeInternational(IMimeInternational *iface)
HRESULT WINAPI MimeOleGetDefaultCharset(LPHCHARSET charset)
static ULONG WINAPI MimeInternat_Release(IMimeInternational *iface)
HRESULT WINAPI MimeOleGetCharsetInfo(HCHARSET hCharset, LPINETCSETINFO pCsetInfo)
static HRESULT WINAPI MimeInternat_EncodeHeader(IMimeInternational *iface, HCHARSET hCharset, LPPROPVARIANT pData, LPSTR *ppszEncoded, LPRFC1522INFO pRfc1522Info)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
_ACRTIMP size_t __cdecl strlen(const char *)
#define InterlockedExchangePointer(Target, Value)
#define InterlockedCompareExchangePointer
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG in_size
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define IsEqualGUID(rguid1, rguid2)
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
PRTL_CRITICAL_SECTION_DEBUG DebugInfo
IMimeInternational IMimeInternational_iface
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define CONTAINING_RECORD(address, type, field)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO