diff --git a/include/Makefile.in b/include/Makefile.in index 62d0dfe9a4c..1c721d2717d 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -12,6 +12,7 @@ IDL_SRCS = \ ddstream.idl \ docobj.idl \ exdisp.idl \ + mlang.idl \ mmstream.idl \ oaidl.idl \ objidl.idl \ diff --git a/include/mlang.h b/include/mlang.h new file mode 100644 index 00000000000..6bd47cc19cb --- /dev/null +++ b/include/mlang.h @@ -0,0 +1,2078 @@ +/*** Autogenerated by WIDL 0.1 from mlang.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_MLANG_H +#define __WIDL_MLANG_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifndef __IStream_FWD_DEFINED__ +#define __IStream_FWD_DEFINED__ +typedef struct IStream IStream; +#endif + +#ifndef __WINE_WINNT_H +typedef WORD LANGID; + +#endif +#ifndef __IMLangCodePages_FWD_DEFINED__ +#define __IMLangCodePages_FWD_DEFINED__ +typedef struct IMLangCodePages IMLangCodePages; +#endif + +/***************************************************************************** + * IMLangCodePages interface + */ +#ifndef __IMLangCodePages_INTERFACE_DEFINED__ +#define __IMLangCodePages_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMLangCodePages : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetCharCodePages( + WCHAR chSrc, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStrCodePages( + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE CodePageToCodePages( + UINT uCodePage, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE CodePagesToCodePage( + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage) = 0; + +}; +#else +typedef struct IMLangCodePagesVtbl IMLangCodePagesVtbl; +struct IMLangCodePages { + const IMLangCodePagesVtbl* lpVtbl; +}; +struct IMLangCodePagesVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangCodePages* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangCodePages* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangCodePages* This); + + /*** IMLangCodePages methods ***/ + HRESULT (STDMETHODCALLTYPE *GetCharCodePages)( + IMLangCodePages* This, + WCHAR chSrc, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *GetStrCodePages)( + IMLangCodePages* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePageToCodePages)( + IMLangCodePages* This, + UINT uCodePage, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePagesToCodePage)( + IMLangCodePages* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); + +}; + +/*** IUnknown methods ***/ +#define IMLangCodePages_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangCodePages_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangCodePages_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangCodePages methods ***/ +#define IMLangCodePages_GetCharCodePages(p,a,b) (p)->lpVtbl->GetCharCodePages(p,a,b) +#define IMLangCodePages_GetStrCodePages(p,a,b,c,d,e) (p)->lpVtbl->GetStrCodePages(p,a,b,c,d,e) +#define IMLangCodePages_CodePageToCodePages(p,a,b) (p)->lpVtbl->CodePageToCodePages(p,a,b) +#define IMLangCodePages_CodePagesToCodePage(p,a,b,c) (p)->lpVtbl->CodePagesToCodePage(p,a,b,c) + +#endif + +#define IMLangCodePages_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IMLangCodePages methods ***/ \ + STDMETHOD_(HRESULT,GetCharCodePages)(THIS_ WCHAR chSrc, DWORD* pdwCodePages) PURE; \ + STDMETHOD_(HRESULT,GetStrCodePages)(THIS_ const WCHAR* pszSrc, long cchSrc, DWORD dwPriorityCodePages, DWORD* pdwCodePages, long* pcchCodePages) PURE; \ + STDMETHOD_(HRESULT,CodePageToCodePages)(THIS_ UINT uCodePage, DWORD* pdwCodePages) PURE; \ + STDMETHOD_(HRESULT,CodePagesToCodePage)(THIS_ DWORD dwCodePages, UINT uDefaultCodePage, UINT* puCodePage) PURE; + +HRESULT CALLBACK IMLangCodePages_GetCharCodePages_Proxy( + IMLangCodePages* This, + WCHAR chSrc, + DWORD* pdwCodePages); +void __RPC_STUB IMLangCodePages_GetCharCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_GetStrCodePages_Proxy( + IMLangCodePages* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); +void __RPC_STUB IMLangCodePages_GetStrCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_CodePageToCodePages_Proxy( + IMLangCodePages* This, + UINT uCodePage, + DWORD* pdwCodePages); +void __RPC_STUB IMLangCodePages_CodePageToCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_CodePagesToCodePage_Proxy( + IMLangCodePages* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); +void __RPC_STUB IMLangCodePages_CodePagesToCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangCodePages_INTERFACE_DEFINED__ */ + +#ifndef __IMLangFontLink_FWD_DEFINED__ +#define __IMLangFontLink_FWD_DEFINED__ +typedef struct IMLangFontLink IMLangFontLink; +#endif + +/***************************************************************************** + * IMLangFontLink interface + */ +#ifndef __IMLangFontLink_INTERFACE_DEFINED__ +#define __IMLangFontLink_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMLangFontLink : public IMLangCodePages +{ + virtual HRESULT STDMETHODCALLTYPE GetFontCodePages( + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapFont( + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseFont( + HFONT hFont) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetFontMapping( + ) = 0; + +}; +#else +typedef struct IMLangFontLinkVtbl IMLangFontLinkVtbl; +struct IMLangFontLink { + const IMLangFontLinkVtbl* lpVtbl; +}; +struct IMLangFontLinkVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangFontLink* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangFontLink* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangFontLink* This); + + /*** IMLangCodePages methods ***/ + HRESULT (STDMETHODCALLTYPE *GetCharCodePages)( + IMLangFontLink* This, + WCHAR chSrc, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *GetStrCodePages)( + IMLangFontLink* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePageToCodePages)( + IMLangFontLink* This, + UINT uCodePage, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePagesToCodePage)( + IMLangFontLink* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); + + /*** IMLangFontLink methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFontCodePages)( + IMLangFontLink* This, + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *MapFont)( + IMLangFontLink* This, + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont); + + HRESULT (STDMETHODCALLTYPE *ReleaseFont)( + IMLangFontLink* This, + HFONT hFont); + + HRESULT (STDMETHODCALLTYPE *ResetFontMapping)( + IMLangFontLink* This); + +}; + +/*** IUnknown methods ***/ +#define IMLangFontLink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangFontLink_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangFontLink_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangCodePages methods ***/ +#define IMLangFontLink_GetCharCodePages(p,a,b) (p)->lpVtbl->GetCharCodePages(p,a,b) +#define IMLangFontLink_GetStrCodePages(p,a,b,c,d,e) (p)->lpVtbl->GetStrCodePages(p,a,b,c,d,e) +#define IMLangFontLink_CodePageToCodePages(p,a,b) (p)->lpVtbl->CodePageToCodePages(p,a,b) +#define IMLangFontLink_CodePagesToCodePage(p,a,b,c) (p)->lpVtbl->CodePagesToCodePage(p,a,b,c) +/*** IMLangFontLink methods ***/ +#define IMLangFontLink_GetFontCodePages(p,a,b,c) (p)->lpVtbl->GetFontCodePages(p,a,b,c) +#define IMLangFontLink_MapFont(p,a,b,c,d) (p)->lpVtbl->MapFont(p,a,b,c,d) +#define IMLangFontLink_ReleaseFont(p,a) (p)->lpVtbl->ReleaseFont(p,a) +#define IMLangFontLink_ResetFontMapping(p) (p)->lpVtbl->ResetFontMapping(p) + +#endif + +#define IMLangFontLink_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IMLangCodePages methods ***/ \ + STDMETHOD_(HRESULT,GetCharCodePages)(THIS_ WCHAR chSrc, DWORD* pdwCodePages) PURE; \ + STDMETHOD_(HRESULT,GetStrCodePages)(THIS_ const WCHAR* pszSrc, long cchSrc, DWORD dwPriorityCodePages, DWORD* pdwCodePages, long* pcchCodePages) PURE; \ + STDMETHOD_(HRESULT,CodePageToCodePages)(THIS_ UINT uCodePage, DWORD* pdwCodePages) PURE; \ + STDMETHOD_(HRESULT,CodePagesToCodePage)(THIS_ DWORD dwCodePages, UINT uDefaultCodePage, UINT* puCodePage) PURE; \ + /*** IMLangFontLink methods ***/ \ + STDMETHOD_(HRESULT,GetFontCodePages)(THIS_ HDC hDC, HFONT hFont, DWORD* pdwCodePages) PURE; \ + STDMETHOD_(HRESULT,MapFont)(THIS_ HDC hDC, DWORD dwCodePages, HFONT hSrcFont, HFONT* phDestFont) PURE; \ + STDMETHOD_(HRESULT,ReleaseFont)(THIS_ HFONT hFont) PURE; \ + STDMETHOD_(HRESULT,ResetFontMapping)(THIS) PURE; + +HRESULT CALLBACK IMLangFontLink_GetFontCodePages_Proxy( + IMLangFontLink* This, + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages); +void __RPC_STUB IMLangFontLink_GetFontCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_MapFont_Proxy( + IMLangFontLink* This, + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont); +void __RPC_STUB IMLangFontLink_MapFont_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_ReleaseFont_Proxy( + IMLangFontLink* This, + HFONT hFont); +void __RPC_STUB IMLangFontLink_ReleaseFont_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_ResetFontMapping_Proxy( + IMLangFontLink* This); +void __RPC_STUB IMLangFontLink_ResetFontMapping_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangFontLink_INTERFACE_DEFINED__ */ + +#ifndef __IEnumScript_FWD_DEFINED__ +#define __IEnumScript_FWD_DEFINED__ +typedef struct IEnumScript IEnumScript; +#endif + +#define MAX_SCRIPT_NAME (48) + +typedef BYTE SCRIPT_ID; + +typedef struct tagSCRIPTINFO { + SCRIPT_ID ScriptId; + UINT uiCodePage; + WCHAR wszDescription[48]; + WCHAR wszFixedWidthFont[1]; + WCHAR wszProportionalFont[1]; +} SCRIPTINFO, *PSCRIPTINFO; + +/***************************************************************************** + * IEnumScript interface + */ +#ifndef __IEnumScript_INTERFACE_DEFINED__ +#define __IEnumScript_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumScript : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumScript** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumScriptVtbl IEnumScriptVtbl; +struct IEnumScript { + const IEnumScriptVtbl* lpVtbl; +}; +struct IEnumScriptVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumScript* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumScript* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumScript* This); + + /*** IEnumScript methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumScript* This, + IEnumScript** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumScript* This, + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumScript* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumScript* This, + ULONG celt); + +}; + +/*** IUnknown methods ***/ +#define IEnumScript_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumScript_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumScript_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumScript methods ***/ +#define IEnumScript_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumScript_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumScript_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumScript_Skip(p,a) (p)->lpVtbl->Skip(p,a) + +#endif + +#define IEnumScript_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumScript methods ***/ \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumScript** ppEnum) PURE; \ + STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, PSCRIPTINFO rgelt, ULONG* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; + +HRESULT CALLBACK IEnumScript_Clone_Proxy( + IEnumScript* This, + IEnumScript** ppEnum); +void __RPC_STUB IEnumScript_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Next_Proxy( + IEnumScript* This, + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumScript_Next_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Reset_Proxy( + IEnumScript* This); +void __RPC_STUB IEnumScript_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Skip_Proxy( + IEnumScript* This, + ULONG celt); +void __RPC_STUB IEnumScript_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumScript_INTERFACE_DEFINED__ */ + +#ifndef __IEnumCodePage_FWD_DEFINED__ +#define __IEnumCodePage_FWD_DEFINED__ +typedef struct IEnumCodePage IEnumCodePage; +#endif + +#define MAX_MIMECP_NAME (64) + +#define MAX_MIMECSET_NAME (50) + +#define MAX_MIMEFACE_NAME (32) + +typedef enum tagMIMECONTF { + MIMECONTF_MAILNEWS = 0x1, + MIMECONTF_BROWSER = 0x2, + MIMECONTF_MINIMAL = 0x4, + MIMECONTF_IMPORT = 0x8, + MIMECONTF_SAVABLE_MAILNEWS = 0x100, + MIMECONTF_SAVABLE_BROWSER = 0x200, + MIMECONTF_EXPORT = 0x400, + MIMECONTF_PRIVCONVERTER = 0x10000, + MIMECONTF_VALID = 0x20000, + MIMECONTF_VALID_NLS = 0x40000, + MIMECONTF_MIME_IE4 = 0x10000000, + MIMECONTF_MIME_LATEST = 0x20000000, + MIMECONTF_MIME_REGISTRY = 0x40000000 +} MIMECONTF; + +typedef struct tagMIMECPINFO { + DWORD dwFlags; + UINT uiCodePage; + UINT uiFamilyCodePage; + WCHAR wszDescription[64]; + WCHAR wszWebCharset[50]; + WCHAR wszHeaderCharset[50]; + WCHAR wszBodyCharset[50]; + WCHAR wszFixedWidthFont[32]; + WCHAR wszProportionalFont[32]; + BYTE bGDICharset; +} MIMECPINFO, *PMIMECPINFO; + +typedef struct tagMIMECSETINFO { + UINT uiCodePage; + UINT uiInternetEncoding; + WCHAR wszCharset[50]; +} MIMECSETINFO, *PMIMECSETINFO; + +/***************************************************************************** + * IEnumCodePage interface + */ +#ifndef __IEnumCodePage_INTERFACE_DEFINED__ +#define __IEnumCodePage_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumCodePage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumCodePage** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumCodePageVtbl IEnumCodePageVtbl; +struct IEnumCodePage { + const IEnumCodePageVtbl* lpVtbl; +}; +struct IEnumCodePageVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumCodePage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumCodePage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumCodePage* This); + + /*** IEnumCodePage methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumCodePage* This, + IEnumCodePage** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumCodePage* This, + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumCodePage* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumCodePage* This, + ULONG celt); + +}; + +/*** IUnknown methods ***/ +#define IEnumCodePage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumCodePage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumCodePage_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumCodePage methods ***/ +#define IEnumCodePage_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumCodePage_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumCodePage_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumCodePage_Skip(p,a) (p)->lpVtbl->Skip(p,a) + +#endif + +#define IEnumCodePage_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumCodePage methods ***/ \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumCodePage** ppEnum) PURE; \ + STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, PMIMECPINFO rgelt, ULONG* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; + +HRESULT CALLBACK IEnumCodePage_Clone_Proxy( + IEnumCodePage* This, + IEnumCodePage** ppEnum); +void __RPC_STUB IEnumCodePage_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Next_Proxy( + IEnumCodePage* This, + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumCodePage_Next_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Reset_Proxy( + IEnumCodePage* This); +void __RPC_STUB IEnumCodePage_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Skip_Proxy( + IEnumCodePage* This, + ULONG celt); +void __RPC_STUB IEnumCodePage_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumCodePage_INTERFACE_DEFINED__ */ + +#ifndef __IMLangConvertCharset_FWD_DEFINED__ +#define __IMLangConvertCharset_FWD_DEFINED__ +typedef struct IMLangConvertCharset IMLangConvertCharset; +#endif + +/***************************************************************************** + * IMLangConvertCharset interface + */ +#ifndef __IMLangConvertCharset_INTERFACE_DEFINED__ +#define __IMLangConvertCharset_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMLangConvertCharset : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Initialize( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceCodePage( + UINT* puiSrcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDestinationCodePage( + UINT* puiDstCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProperty( + DWORD* pdwProperty) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversion( + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversionToUnicode( + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversionFromUnicode( + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + +}; +#else +typedef struct IMLangConvertCharsetVtbl IMLangConvertCharsetVtbl; +struct IMLangConvertCharset { + const IMLangConvertCharsetVtbl* lpVtbl; +}; +struct IMLangConvertCharsetVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangConvertCharset* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangConvertCharset* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangConvertCharset* This); + + /*** IMLangConvertCharset methods ***/ + HRESULT (STDMETHODCALLTYPE *Initialize)( + IMLangConvertCharset* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty); + + HRESULT (STDMETHODCALLTYPE *GetSourceCodePage)( + IMLangConvertCharset* This, + UINT* puiSrcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetDestinationCodePage)( + IMLangConvertCharset* This, + UINT* puiDstCodePage); + + HRESULT (STDMETHODCALLTYPE *GetProperty)( + IMLangConvertCharset* This, + DWORD* pdwProperty); + + HRESULT (STDMETHODCALLTYPE *DoConversion)( + IMLangConvertCharset* This, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *DoConversionToUnicode)( + IMLangConvertCharset* This, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *DoConversionFromUnicode)( + IMLangConvertCharset* This, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + +}; + +/*** IUnknown methods ***/ +#define IMLangConvertCharset_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangConvertCharset_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangConvertCharset_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangConvertCharset methods ***/ +#define IMLangConvertCharset_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IMLangConvertCharset_GetSourceCodePage(p,a) (p)->lpVtbl->GetSourceCodePage(p,a) +#define IMLangConvertCharset_GetDestinationCodePage(p,a) (p)->lpVtbl->GetDestinationCodePage(p,a) +#define IMLangConvertCharset_GetProperty(p,a) (p)->lpVtbl->GetProperty(p,a) +#define IMLangConvertCharset_DoConversion(p,a,b,c,d) (p)->lpVtbl->DoConversion(p,a,b,c,d) +#define IMLangConvertCharset_DoConversionToUnicode(p,a,b,c,d) (p)->lpVtbl->DoConversionToUnicode(p,a,b,c,d) +#define IMLangConvertCharset_DoConversionFromUnicode(p,a,b,c,d) (p)->lpVtbl->DoConversionFromUnicode(p,a,b,c,d) + +#endif + +#define IMLangConvertCharset_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IMLangConvertCharset methods ***/ \ + STDMETHOD_(HRESULT,Initialize)(THIS_ UINT uiSrcCodePage, UINT uiDstCodePage, DWORD dwProperty) PURE; \ + STDMETHOD_(HRESULT,GetSourceCodePage)(THIS_ UINT* puiSrcCodePage) PURE; \ + STDMETHOD_(HRESULT,GetDestinationCodePage)(THIS_ UINT* puiDstCodePage) PURE; \ + STDMETHOD_(HRESULT,GetProperty)(THIS_ DWORD* pdwProperty) PURE; \ + STDMETHOD_(HRESULT,DoConversion)(THIS_ BYTE* pSrcStr, UINT* pcSrcSize, BYTE* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,DoConversionToUnicode)(THIS_ CHAR* pSrcStr, UINT* pcSrcSize, WCHAR* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,DoConversionFromUnicode)(THIS_ WCHAR* pSrcStr, UINT* pcSrcSize, CHAR* pDstStr, UINT* pcDstSize) PURE; + +HRESULT CALLBACK IMLangConvertCharset_Initialize_Proxy( + IMLangConvertCharset* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty); +void __RPC_STUB IMLangConvertCharset_Initialize_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetSourceCodePage_Proxy( + IMLangConvertCharset* This, + UINT* puiSrcCodePage); +void __RPC_STUB IMLangConvertCharset_GetSourceCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetDestinationCodePage_Proxy( + IMLangConvertCharset* This, + UINT* puiDstCodePage); +void __RPC_STUB IMLangConvertCharset_GetDestinationCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetProperty_Proxy( + IMLangConvertCharset* This, + DWORD* pdwProperty); +void __RPC_STUB IMLangConvertCharset_GetProperty_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversion_Proxy( + IMLangConvertCharset* This, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversion_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversionToUnicode_Proxy( + IMLangConvertCharset* This, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversionToUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversionFromUnicode_Proxy( + IMLangConvertCharset* This, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversionFromUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangConvertCharset_INTERFACE_DEFINED__ */ + +#ifndef __IEnumRfc1766_FWD_DEFINED__ +#define __IEnumRfc1766_FWD_DEFINED__ +typedef struct IEnumRfc1766 IEnumRfc1766; +#endif + +typedef struct tagRFC1766INFO { + LCID lcid; + WCHAR wszRfc1766[1]; + WCHAR wszLocaleName[1]; +} RFC1766INFO, *PRFC1766INFO; + +/***************************************************************************** + * IEnumRfc1766 interface + */ +#ifndef __IEnumRfc1766_INTERFACE_DEFINED__ +#define __IEnumRfc1766_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumRfc1766 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumRfc1766** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumRfc1766Vtbl IEnumRfc1766Vtbl; +struct IEnumRfc1766 { + const IEnumRfc1766Vtbl* lpVtbl; +}; +struct IEnumRfc1766Vtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumRfc1766* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumRfc1766* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumRfc1766* This); + + /*** IEnumRfc1766 methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumRfc1766* This, + IEnumRfc1766** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumRfc1766* This, + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumRfc1766* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumRfc1766* This, + ULONG celt); + +}; + +/*** IUnknown methods ***/ +#define IEnumRfc1766_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumRfc1766_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumRfc1766_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumRfc1766 methods ***/ +#define IEnumRfc1766_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumRfc1766_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumRfc1766_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumRfc1766_Skip(p,a) (p)->lpVtbl->Skip(p,a) + +#endif + +#define IEnumRfc1766_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumRfc1766 methods ***/ \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumRfc1766** ppEnum) PURE; \ + STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, PRFC1766INFO rgelt, ULONG* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; + +HRESULT CALLBACK IEnumRfc1766_Clone_Proxy( + IEnumRfc1766* This, + IEnumRfc1766** ppEnum); +void __RPC_STUB IEnumRfc1766_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Next_Proxy( + IEnumRfc1766* This, + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumRfc1766_Next_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Reset_Proxy( + IEnumRfc1766* This); +void __RPC_STUB IEnumRfc1766_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Skip_Proxy( + IEnumRfc1766* This, + ULONG celt); +void __RPC_STUB IEnumRfc1766_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumRfc1766_INTERFACE_DEFINED__ */ + +#ifndef __IMultiLanguage_FWD_DEFINED__ +#define __IMultiLanguage_FWD_DEFINED__ +typedef struct IMultiLanguage IMultiLanguage; +#endif + +/***************************************************************************** + * IMultiLanguage interface + */ +#ifndef __IMultiLanguage_INTERFACE_DEFINED__ +#define __IMultiLanguage_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMultiLanguage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( + UINT* pcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( + UINT uiCodePage, + PMIMECPINFO pCodePageInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( + UINT uiCodePage, + UINT* puiFamilyCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumCodePages( + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( + BSTR Charset, + PMIMECSETINFO pCharsetInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsConvertible( + DWORD dwSrcEncoding, + DWORD dwDstEncoding) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertString( + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( + LCID Locale, + BSTR* pbstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( + LCID* pLocale, + BSTR bstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( + IEnumRfc1766** ppEnumRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( + LCID Locale, + PRFC1766INFO pRfc1766Info) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset) = 0; + +}; +#else +typedef struct IMultiLanguageVtbl IMultiLanguageVtbl; +struct IMultiLanguage { + const IMultiLanguageVtbl* lpVtbl; +}; +struct IMultiLanguageVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiLanguage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiLanguage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiLanguage* This); + + /*** IMultiLanguage methods ***/ + HRESULT (STDMETHODCALLTYPE *GetNumberOfCodePageInfo)( + IMultiLanguage* This, + UINT* pcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCodePageInfo)( + IMultiLanguage* This, + UINT uiCodePage, + PMIMECPINFO pCodePageInfo); + + HRESULT (STDMETHODCALLTYPE *GetFamilyCodePage)( + IMultiLanguage* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); + + HRESULT (STDMETHODCALLTYPE *EnumCodePages)( + IMultiLanguage* This, + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCharsetInfo)( + IMultiLanguage* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); + + HRESULT (STDMETHODCALLTYPE *IsConvertible)( + IMultiLanguage* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); + + HRESULT (STDMETHODCALLTYPE *ConvertString)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicode)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicode)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringReset)( + IMultiLanguage* This); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766FromLcid)( + IMultiLanguage* This, + LCID Locale, + BSTR* pbstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetLcidFromRfc1766)( + IMultiLanguage* This, + LCID* pLocale, + BSTR bstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *EnumRfc1766)( + IMultiLanguage* This, + IEnumRfc1766** ppEnumRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766Info)( + IMultiLanguage* This, + LCID Locale, + PRFC1766INFO pRfc1766Info); + + HRESULT (STDMETHODCALLTYPE *CreateConvertCharset)( + IMultiLanguage* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); + +}; + +/*** IUnknown methods ***/ +#define IMultiLanguage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiLanguage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiLanguage_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiLanguage methods ***/ +#define IMultiLanguage_GetNumberOfCodePageInfo(p,a) (p)->lpVtbl->GetNumberOfCodePageInfo(p,a) +#define IMultiLanguage_GetCodePageInfo(p,a,b) (p)->lpVtbl->GetCodePageInfo(p,a,b) +#define IMultiLanguage_GetFamilyCodePage(p,a,b) (p)->lpVtbl->GetFamilyCodePage(p,a,b) +#define IMultiLanguage_EnumCodePages(p,a,b) (p)->lpVtbl->EnumCodePages(p,a,b) +#define IMultiLanguage_GetCharsetInfo(p,a,b) (p)->lpVtbl->GetCharsetInfo(p,a,b) +#define IMultiLanguage_IsConvertible(p,a,b) (p)->lpVtbl->IsConvertible(p,a,b) +#define IMultiLanguage_ConvertString(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertString(p,a,b,c,d,e,f,g) +#define IMultiLanguage_ConvertStringToUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringToUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage_ConvertStringFromUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringFromUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage_ConvertStringReset(p) (p)->lpVtbl->ConvertStringReset(p) +#define IMultiLanguage_GetRfc1766FromLcid(p,a,b) (p)->lpVtbl->GetRfc1766FromLcid(p,a,b) +#define IMultiLanguage_GetLcidFromRfc1766(p,a,b) (p)->lpVtbl->GetLcidFromRfc1766(p,a,b) +#define IMultiLanguage_EnumRfc1766(p,a) (p)->lpVtbl->EnumRfc1766(p,a) +#define IMultiLanguage_GetRfc1766Info(p,a,b) (p)->lpVtbl->GetRfc1766Info(p,a,b) +#define IMultiLanguage_CreateConvertCharset(p,a,b,c,d) (p)->lpVtbl->CreateConvertCharset(p,a,b,c,d) + +#endif + +#define IMultiLanguage_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IMultiLanguage methods ***/ \ + STDMETHOD_(HRESULT,GetNumberOfCodePageInfo)(THIS_ UINT* pcCodePage) PURE; \ + STDMETHOD_(HRESULT,GetCodePageInfo)(THIS_ UINT uiCodePage, PMIMECPINFO pCodePageInfo) PURE; \ + STDMETHOD_(HRESULT,GetFamilyCodePage)(THIS_ UINT uiCodePage, UINT* puiFamilyCodePage) PURE; \ + STDMETHOD_(HRESULT,EnumCodePages)(THIS_ DWORD grfFlags, IEnumCodePage** ppEnumCodePage) PURE; \ + STDMETHOD_(HRESULT,GetCharsetInfo)(THIS_ BSTR Charset, PMIMECSETINFO pCharsetInfo) PURE; \ + STDMETHOD_(HRESULT,IsConvertible)(THIS_ DWORD dwSrcEncoding, DWORD dwDstEncoding) PURE; \ + STDMETHOD_(HRESULT,ConvertString)(THIS_ DWORD* pdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, BYTE* pSrcStr, UINT* pcSrcSize, BYTE* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringToUnicode)(THIS_ DWORD* pdwMode, DWORD dwEncoding, CHAR* pSrcStr, UINT* pcSrcSize, WCHAR* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringFromUnicode)(THIS_ DWORD* pdwMode, DWORD dwEncoding, WCHAR* pSrcStr, UINT* pcSrcSize, CHAR* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringReset)(THIS) PURE; \ + STDMETHOD_(HRESULT,GetRfc1766FromLcid)(THIS_ LCID Locale, BSTR* pbstrRfc1766) PURE; \ + STDMETHOD_(HRESULT,GetLcidFromRfc1766)(THIS_ LCID* pLocale, BSTR bstrRfc1766) PURE; \ + STDMETHOD_(HRESULT,EnumRfc1766)(THIS_ IEnumRfc1766** ppEnumRfc1766) PURE; \ + STDMETHOD_(HRESULT,GetRfc1766Info)(THIS_ LCID Locale, PRFC1766INFO pRfc1766Info) PURE; \ + STDMETHOD_(HRESULT,CreateConvertCharset)(THIS_ UINT uiSrcCodePage, UINT uiDstCodePage, DWORD dwProperty, IMLangConvertCharset** ppMLangConvertCharset) PURE; + +HRESULT CALLBACK IMultiLanguage_GetNumberOfCodePageInfo_Proxy( + IMultiLanguage* This, + UINT* pcCodePage); +void __RPC_STUB IMultiLanguage_GetNumberOfCodePageInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetCodePageInfo_Proxy( + IMultiLanguage* This, + UINT uiCodePage, + PMIMECPINFO pCodePageInfo); +void __RPC_STUB IMultiLanguage_GetCodePageInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetFamilyCodePage_Proxy( + IMultiLanguage* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); +void __RPC_STUB IMultiLanguage_GetFamilyCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_EnumCodePages_Proxy( + IMultiLanguage* This, + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage); +void __RPC_STUB IMultiLanguage_EnumCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetCharsetInfo_Proxy( + IMultiLanguage* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); +void __RPC_STUB IMultiLanguage_GetCharsetInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_IsConvertible_Proxy( + IMultiLanguage* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); +void __RPC_STUB IMultiLanguage_IsConvertible_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertString_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertString_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringToUnicode_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertStringToUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringFromUnicode_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertStringFromUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringReset_Proxy( + IMultiLanguage* This); +void __RPC_STUB IMultiLanguage_ConvertStringReset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetRfc1766FromLcid_Proxy( + IMultiLanguage* This, + LCID Locale, + BSTR* pbstrRfc1766); +void __RPC_STUB IMultiLanguage_GetRfc1766FromLcid_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetLcidFromRfc1766_Proxy( + IMultiLanguage* This, + LCID* pLocale, + BSTR bstrRfc1766); +void __RPC_STUB IMultiLanguage_GetLcidFromRfc1766_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_EnumRfc1766_Proxy( + IMultiLanguage* This, + IEnumRfc1766** ppEnumRfc1766); +void __RPC_STUB IMultiLanguage_EnumRfc1766_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetRfc1766Info_Proxy( + IMultiLanguage* This, + LCID Locale, + PRFC1766INFO pRfc1766Info); +void __RPC_STUB IMultiLanguage_GetRfc1766Info_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_CreateConvertCharset_Proxy( + IMultiLanguage* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); +void __RPC_STUB IMultiLanguage_CreateConvertCharset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiLanguage_INTERFACE_DEFINED__ */ + +#ifndef __IMultiLanguage2_FWD_DEFINED__ +#define __IMultiLanguage2_FWD_DEFINED__ +typedef struct IMultiLanguage2 IMultiLanguage2; +#endif + +typedef struct tagDetectEncodingInfo { + UINT nLangID; + UINT nCodePage; + INT nDocPercent; + INT nConfidence; +} DetectEncodingInfo, *pDetectEncodingInfo; + +/***************************************************************************** + * IMultiLanguage2 interface + */ +#ifndef __IMultiLanguage2_INTERFACE_DEFINED__ +#define __IMultiLanguage2_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMultiLanguage2 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( + UINT* pcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( + UINT uiCodePage, + UINT* puiFamilyCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumCodePages( + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( + BSTR Charset, + PMIMECSETINFO pCharsetInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsConvertible( + DWORD dwSrcEncoding, + DWORD dwDstEncoding) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertString( + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( + LCID Locale, + BSTR* pbstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( + LCID* pLocale, + BSTR bstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringInIStream( + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicodeEx( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetectCodepageInIStream( + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetectInputCodepage( + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores) = 0; + + virtual HRESULT STDMETHODCALLTYPE ValidateCodePage( + UINT uiCodePage, + HWND hwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageDescription( + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsCodePageInstallable( + UINT uiCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMimeDBSource( + MIMECONTF dwSource) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumberOfScripts( + UINT* pnScripts) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumScripts( + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript) = 0; + + virtual HRESULT STDMETHODCALLTYPE ValidateCodePageEx( + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl) = 0; + +}; +#else +typedef struct IMultiLanguage2Vtbl IMultiLanguage2Vtbl; +struct IMultiLanguage2 { + const IMultiLanguage2Vtbl* lpVtbl; +}; +struct IMultiLanguage2Vtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiLanguage2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiLanguage2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiLanguage2* This); + + /*** IMultiLanguage2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetNumberOfCodePageInfo)( + IMultiLanguage2* This, + UINT* pcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCodePageInfo)( + IMultiLanguage2* This, + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo); + + HRESULT (STDMETHODCALLTYPE *GetFamilyCodePage)( + IMultiLanguage2* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); + + HRESULT (STDMETHODCALLTYPE *EnumCodePages)( + IMultiLanguage2* This, + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCharsetInfo)( + IMultiLanguage2* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); + + HRESULT (STDMETHODCALLTYPE *IsConvertible)( + IMultiLanguage2* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); + + HRESULT (STDMETHODCALLTYPE *ConvertString)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicode)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicode)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringReset)( + IMultiLanguage2* This); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766FromLcid)( + IMultiLanguage2* This, + LCID Locale, + BSTR* pbstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetLcidFromRfc1766)( + IMultiLanguage2* This, + LCID* pLocale, + BSTR bstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *EnumRfc1766)( + IMultiLanguage2* This, + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766Info)( + IMultiLanguage2* This, + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info); + + HRESULT (STDMETHODCALLTYPE *CreateConvertCharset)( + IMultiLanguage2* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); + + HRESULT (STDMETHODCALLTYPE *ConvertStringInIStream)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicodeEx)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); + + HRESULT (STDMETHODCALLTYPE *DetectCodepageInIStream)( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *DetectInputCodepage)( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePage)( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd); + + HRESULT (STDMETHODCALLTYPE *GetCodePageDescription)( + IMultiLanguage2* This, + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar); + + HRESULT (STDMETHODCALLTYPE *IsCodePageInstallable)( + IMultiLanguage2* This, + UINT uiCodePage); + + HRESULT (STDMETHODCALLTYPE *SetMimeDBSource)( + IMultiLanguage2* This, + MIMECONTF dwSource); + + HRESULT (STDMETHODCALLTYPE *GetNumberOfScripts)( + IMultiLanguage2* This, + UINT* pnScripts); + + HRESULT (STDMETHODCALLTYPE *EnumScripts)( + IMultiLanguage2* This, + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePageEx)( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl); + +}; + +/*** IUnknown methods ***/ +#define IMultiLanguage2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiLanguage2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiLanguage2_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiLanguage2 methods ***/ +#define IMultiLanguage2_GetNumberOfCodePageInfo(p,a) (p)->lpVtbl->GetNumberOfCodePageInfo(p,a) +#define IMultiLanguage2_GetCodePageInfo(p,a,b,c) (p)->lpVtbl->GetCodePageInfo(p,a,b,c) +#define IMultiLanguage2_GetFamilyCodePage(p,a,b) (p)->lpVtbl->GetFamilyCodePage(p,a,b) +#define IMultiLanguage2_EnumCodePages(p,a,b,c) (p)->lpVtbl->EnumCodePages(p,a,b,c) +#define IMultiLanguage2_GetCharsetInfo(p,a,b) (p)->lpVtbl->GetCharsetInfo(p,a,b) +#define IMultiLanguage2_IsConvertible(p,a,b) (p)->lpVtbl->IsConvertible(p,a,b) +#define IMultiLanguage2_ConvertString(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertString(p,a,b,c,d,e,f,g) +#define IMultiLanguage2_ConvertStringToUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringToUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage2_ConvertStringFromUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringFromUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage2_ConvertStringReset(p) (p)->lpVtbl->ConvertStringReset(p) +#define IMultiLanguage2_GetRfc1766FromLcid(p,a,b) (p)->lpVtbl->GetRfc1766FromLcid(p,a,b) +#define IMultiLanguage2_GetLcidFromRfc1766(p,a,b) (p)->lpVtbl->GetLcidFromRfc1766(p,a,b) +#define IMultiLanguage2_EnumRfc1766(p,a,b) (p)->lpVtbl->EnumRfc1766(p,a,b) +#define IMultiLanguage2_GetRfc1766Info(p,a,b,c) (p)->lpVtbl->GetRfc1766Info(p,a,b,c) +#define IMultiLanguage2_CreateConvertCharset(p,a,b,c,d) (p)->lpVtbl->CreateConvertCharset(p,a,b,c,d) +#define IMultiLanguage2_ConvertStringInIStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertStringInIStream(p,a,b,c,d,e,f,g) +#define IMultiLanguage2_ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage2_DetectCodepageInIStream(p,a,b,c,d,e) (p)->lpVtbl->DetectCodepageInIStream(p,a,b,c,d,e) +#define IMultiLanguage2_DetectInputCodepage(p,a,b,c,d,e,f) (p)->lpVtbl->DetectInputCodepage(p,a,b,c,d,e,f) +#define IMultiLanguage2_ValidateCodePage(p,a,b) (p)->lpVtbl->ValidateCodePage(p,a,b) +#define IMultiLanguage2_GetCodePageDescription(p,a,b,c,d) (p)->lpVtbl->GetCodePageDescription(p,a,b,c,d) +#define IMultiLanguage2_IsCodePageInstallable(p,a) (p)->lpVtbl->IsCodePageInstallable(p,a) +#define IMultiLanguage2_SetMimeDBSource(p,a) (p)->lpVtbl->SetMimeDBSource(p,a) +#define IMultiLanguage2_GetNumberOfScripts(p,a) (p)->lpVtbl->GetNumberOfScripts(p,a) +#define IMultiLanguage2_EnumScripts(p,a,b,c) (p)->lpVtbl->EnumScripts(p,a,b,c) +#define IMultiLanguage2_ValidateCodePageEx(p,a,b,c) (p)->lpVtbl->ValidateCodePageEx(p,a,b,c) + +#endif + +#define IMultiLanguage2_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IMultiLanguage2 methods ***/ \ + STDMETHOD_(HRESULT,GetNumberOfCodePageInfo)(THIS_ UINT* pcCodePage) PURE; \ + STDMETHOD_(HRESULT,GetCodePageInfo)(THIS_ UINT uiCodePage, LANGID LangId, PMIMECPINFO pCodePageInfo) PURE; \ + STDMETHOD_(HRESULT,GetFamilyCodePage)(THIS_ UINT uiCodePage, UINT* puiFamilyCodePage) PURE; \ + STDMETHOD_(HRESULT,EnumCodePages)(THIS_ DWORD grfFlags, LANGID LangId, IEnumCodePage** ppEnumCodePage) PURE; \ + STDMETHOD_(HRESULT,GetCharsetInfo)(THIS_ BSTR Charset, PMIMECSETINFO pCharsetInfo) PURE; \ + STDMETHOD_(HRESULT,IsConvertible)(THIS_ DWORD dwSrcEncoding, DWORD dwDstEncoding) PURE; \ + STDMETHOD_(HRESULT,ConvertString)(THIS_ DWORD* pdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, BYTE* pSrcStr, UINT* pcSrcSize, BYTE* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringToUnicode)(THIS_ DWORD* pdwMode, DWORD dwEncoding, CHAR* pSrcStr, UINT* pcSrcSize, WCHAR* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringFromUnicode)(THIS_ DWORD* pdwMode, DWORD dwEncoding, WCHAR* pSrcStr, UINT* pcSrcSize, CHAR* pDstStr, UINT* pcDstSize) PURE; \ + STDMETHOD_(HRESULT,ConvertStringReset)(THIS) PURE; \ + STDMETHOD_(HRESULT,GetRfc1766FromLcid)(THIS_ LCID Locale, BSTR* pbstrRfc1766) PURE; \ + STDMETHOD_(HRESULT,GetLcidFromRfc1766)(THIS_ LCID* pLocale, BSTR bstrRfc1766) PURE; \ + STDMETHOD_(HRESULT,EnumRfc1766)(THIS_ LANGID LangId, IEnumRfc1766** ppEnumRfc1766) PURE; \ + STDMETHOD_(HRESULT,GetRfc1766Info)(THIS_ LCID Locale, LANGID LangId, PRFC1766INFO pRfc1766Info) PURE; \ + STDMETHOD_(HRESULT,CreateConvertCharset)(THIS_ UINT uiSrcCodePage, UINT uiDstCodePage, DWORD dwProperty, IMLangConvertCharset** ppMLangConvertCharset) PURE; \ + STDMETHOD_(HRESULT,ConvertStringInIStream)(THIS_ DWORD* pdwMode, DWORD dwFlag, WCHAR* lpFallBack, DWORD dwSrcEncoding, DWORD dwDstEncoding, IStream* pstmIn, IStream* pstmOut) PURE; \ + STDMETHOD_(HRESULT,ConvertStringToUnicodeEx)(THIS_ DWORD* pdwMode, DWORD dwEncoding, CHAR* pSrcStr, UINT* pcSrcSize, WCHAR* pDstStr, UINT* pcDstSize, DWORD dwFlag, WCHAR* lpFallBack) PURE; \ + STDMETHOD_(HRESULT,DetectCodepageInIStream)(THIS_ DWORD dwFlag, DWORD dwPrefWinCodePage, IStream* pstmIn, DetectEncodingInfo* lpEncoding, INT* pnScores) PURE; \ + STDMETHOD_(HRESULT,DetectInputCodepage)(THIS_ DWORD dwFlag, DWORD dwPrefWinCodePage, CHAR* pSrcStr, INT* pcSrcSize, DetectEncodingInfo* lpEncoding, INT* pnScores) PURE; \ + STDMETHOD_(HRESULT,ValidateCodePage)(THIS_ UINT uiCodePage, HWND hwnd) PURE; \ + STDMETHOD_(HRESULT,GetCodePageDescription)(THIS_ UINT uiCodePage, LCID lcid, LPWSTR lpWideCharStr, int cchWideChar) PURE; \ + STDMETHOD_(HRESULT,IsCodePageInstallable)(THIS_ UINT uiCodePage) PURE; \ + STDMETHOD_(HRESULT,SetMimeDBSource)(THIS_ MIMECONTF dwSource) PURE; \ + STDMETHOD_(HRESULT,GetNumberOfScripts)(THIS_ UINT* pnScripts) PURE; \ + STDMETHOD_(HRESULT,EnumScripts)(THIS_ DWORD dwFlags, LANGID LangId, IEnumScript** ppEnumScript) PURE; \ + STDMETHOD_(HRESULT,ValidateCodePageEx)(THIS_ UINT uiCodePage, HWND hwnd, DWORD dwfIODControl) PURE; + +HRESULT CALLBACK IMultiLanguage2_GetNumberOfCodePageInfo_Proxy( + IMultiLanguage2* This, + UINT* pcCodePage); +void __RPC_STUB IMultiLanguage2_GetNumberOfCodePageInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCodePageInfo_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo); +void __RPC_STUB IMultiLanguage2_GetCodePageInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetFamilyCodePage_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); +void __RPC_STUB IMultiLanguage2_GetFamilyCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumCodePages_Proxy( + IMultiLanguage2* This, + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage); +void __RPC_STUB IMultiLanguage2_EnumCodePages_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCharsetInfo_Proxy( + IMultiLanguage2* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); +void __RPC_STUB IMultiLanguage2_GetCharsetInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_IsConvertible_Proxy( + IMultiLanguage2* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); +void __RPC_STUB IMultiLanguage2_IsConvertible_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertString_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertString_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringToUnicode_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertStringToUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringFromUnicode_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertStringFromUnicode_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringReset_Proxy( + IMultiLanguage2* This); +void __RPC_STUB IMultiLanguage2_ConvertStringReset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetRfc1766FromLcid_Proxy( + IMultiLanguage2* This, + LCID Locale, + BSTR* pbstrRfc1766); +void __RPC_STUB IMultiLanguage2_GetRfc1766FromLcid_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetLcidFromRfc1766_Proxy( + IMultiLanguage2* This, + LCID* pLocale, + BSTR bstrRfc1766); +void __RPC_STUB IMultiLanguage2_GetLcidFromRfc1766_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumRfc1766_Proxy( + IMultiLanguage2* This, + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766); +void __RPC_STUB IMultiLanguage2_EnumRfc1766_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetRfc1766Info_Proxy( + IMultiLanguage2* This, + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info); +void __RPC_STUB IMultiLanguage2_GetRfc1766Info_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_CreateConvertCharset_Proxy( + IMultiLanguage2* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); +void __RPC_STUB IMultiLanguage2_CreateConvertCharset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringInIStream_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut); +void __RPC_STUB IMultiLanguage2_ConvertStringInIStream_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringToUnicodeEx_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); +void __RPC_STUB IMultiLanguage2_ConvertStringToUnicodeEx_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_DetectCodepageInIStream_Proxy( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores); +void __RPC_STUB IMultiLanguage2_DetectCodepageInIStream_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_DetectInputCodepage_Proxy( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores); +void __RPC_STUB IMultiLanguage2_DetectInputCodepage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ValidateCodePage_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd); +void __RPC_STUB IMultiLanguage2_ValidateCodePage_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCodePageDescription_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar); +void __RPC_STUB IMultiLanguage2_GetCodePageDescription_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_IsCodePageInstallable_Proxy( + IMultiLanguage2* This, + UINT uiCodePage); +void __RPC_STUB IMultiLanguage2_IsCodePageInstallable_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_SetMimeDBSource_Proxy( + IMultiLanguage2* This, + MIMECONTF dwSource); +void __RPC_STUB IMultiLanguage2_SetMimeDBSource_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetNumberOfScripts_Proxy( + IMultiLanguage2* This, + UINT* pnScripts); +void __RPC_STUB IMultiLanguage2_GetNumberOfScripts_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumScripts_Proxy( + IMultiLanguage2* This, + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript); +void __RPC_STUB IMultiLanguage2_EnumScripts_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ValidateCodePageEx_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl); +void __RPC_STUB IMultiLanguage2_ValidateCodePageEx_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiLanguage2_INTERFACE_DEFINED__ */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_MLANG_H */ diff --git a/include/mlang.idl b/include/mlang.idl new file mode 100644 index 00000000000..d5840d57b8f --- /dev/null +++ b/include/mlang.idl @@ -0,0 +1,464 @@ +/* + * Copyright (C) 2004 Mike McCormack + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +import "unknwn.idl"; + +interface IStream; + +/* FIXME: LANDID is defined in winnt.h and mlang.h in the platform SDK */ +cpp_quote("#ifndef __WINE_WINNT_H") +typedef WORD LANGID; +cpp_quote("#endif") + +[ + object, + pointer_default(unique) +] +interface IMLangCodePages : IUnknown +{ + HRESULT GetCharCodePages( + [in] WCHAR chSrc, + DWORD *pdwCodePages); + HRESULT GetStrCodePages( + [in, size_is(cchSrc)] const WCHAR *pszSrc, + [in] long cchSrc, + [in] DWORD dwPriorityCodePages, + [out] DWORD *pdwCodePages, + [out] long *pcchCodePages); + HRESULT CodePageToCodePages( + [in] UINT uCodePage, + [out] DWORD *pdwCodePages); + HRESULT CodePagesToCodePage( + [in] DWORD dwCodePages, + [in] UINT uDefaultCodePage, + [out] UINT *puCodePage); +}; + +[ + object, + pointer_default(unique) +] +interface IMLangFontLink : IMLangCodePages +{ + HRESULT GetFontCodePages( + [in] HDC hDC, + [in] HFONT hFont, + [out] DWORD *pdwCodePages ); + + HRESULT MapFont( + [in] HDC hDC, + [in] DWORD dwCodePages, + [in] HFONT hSrcFont, + [out] HFONT *phDestFont); + + HRESULT ReleaseFont( + [in] HFONT hFont); + + HRESULT ResetFontMapping(); +}; + +[ + object, + pointer_default(unique) +] +interface IEnumScript : IUnknown +{ + const USHORT MAX_SCRIPT_NAME = 48; + + typedef BYTE SCRIPT_ID; + + typedef struct tagSCRIPTINFO { + SCRIPT_ID ScriptId; + UINT uiCodePage; + WCHAR wszDescription[MAX_SCRIPT_NAME]; + WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; + WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; + } SCRIPTINFO, *PSCRIPTINFO; + + HRESULT Clone( + [out] IEnumScript **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PSCRIPTINFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +}; + +[ + object, + pointer_default(unique) +] +interface IEnumCodePage : IUnknown +{ + const USHORT MAX_MIMECP_NAME = 64; + const USHORT MAX_MIMECSET_NAME = 50; + const USHORT MAX_MIMEFACE_NAME = 32; + + typedef enum tagMIMECONTF + { + MIMECONTF_MAILNEWS = 0x00000001, + MIMECONTF_BROWSER = 0x00000002, + MIMECONTF_MINIMAL = 0x00000004, + MIMECONTF_IMPORT = 0x00000008, + MIMECONTF_SAVABLE_MAILNEWS = 0x00000100, + MIMECONTF_SAVABLE_BROWSER = 0x00000200, + MIMECONTF_EXPORT = 0x00000400, + MIMECONTF_PRIVCONVERTER = 0x00010000, + MIMECONTF_VALID = 0x00020000, + MIMECONTF_VALID_NLS = 0x00040000, + MIMECONTF_MIME_IE4 = 0x10000000, + MIMECONTF_MIME_LATEST = 0x20000000, + MIMECONTF_MIME_REGISTRY = 0x40000000 + } MIMECONTF; + + typedef struct tagMIMECPINFO { + DWORD dwFlags; + UINT uiCodePage; + UINT uiFamilyCodePage; + WCHAR wszDescription[MAX_MIMECP_NAME]; + WCHAR wszWebCharset[MAX_MIMECSET_NAME]; + WCHAR wszHeaderCharset[MAX_MIMECSET_NAME]; + WCHAR wszBodyCharset[MAX_MIMECSET_NAME]; + WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; + WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; + BYTE bGDICharset; + } MIMECPINFO, *PMIMECPINFO; + + typedef struct tagMIMECSETINFO + { + UINT uiCodePage; + UINT uiInternetEncoding; + WCHAR wszCharset[MAX_MIMECSET_NAME]; + } MIMECSETINFO, *PMIMECSETINFO; + + HRESULT Clone( + [out] IEnumCodePage **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PMIMECPINFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +}; + +[ + object, + pointer_default(unique) +] +interface IMLangConvertCharset : IUnknown +{ + HRESULT Initialize( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty); + + HRESULT GetSourceCodePage( + [out] UINT *puiSrcCodePage); + + HRESULT GetDestinationCodePage( + [out] UINT *puiDstCodePage); + + HRESULT GetProperty( + [out] DWORD *pdwProperty); + + HRESULT DoConversion( + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT DoConversionToUnicode( + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT DoConversionFromUnicode( + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); +}; + +[ + object, + pointer_default(unique) +] +interface IEnumRfc1766 : IUnknown +{ + typedef struct tagRFC1766INFO + { + LCID lcid; + WCHAR wszRfc1766[MAX_RFC1766_NAME]; + WCHAR wszLocaleName[MAX_LOCALE_NAME]; + } RFC1766INFO, *PRFC1766INFO; + + HRESULT Clone( + [out] IEnumRfc1766 **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PRFC1766INFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +}; + +[ + object, + pointer_default(unique) +] +interface IMultiLanguage : IUnknown +{ + HRESULT GetNumberOfCodePageInfo( + [out] UINT *pcCodePage); + + HRESULT GetCodePageInfo( + [in] UINT uiCodePage, + [out] PMIMECPINFO pCodePageInfo); + + HRESULT GetFamilyCodePage( + [in] UINT uiCodePage, + [out] UINT *puiFamilyCodePage); + + HRESULT EnumCodePages( + [in] DWORD grfFlags, + [out] IEnumCodePage **ppEnumCodePage); + + HRESULT GetCharsetInfo( + [in] BSTR Charset, + [in] PMIMECSETINFO pCharsetInfo); + + HRESULT IsConvertible( + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding); + + HRESULT ConvertString( + [in,out] DWORD *pdwMode, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringToUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringFromUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringReset(); + + HRESULT GetRfc1766FromLcid( + [in] LCID Locale, + [out] BSTR *pbstrRfc1766); + + HRESULT GetLcidFromRfc1766( + [out] LCID *pLocale, + [in] BSTR bstrRfc1766); + + HRESULT EnumRfc1766( + [out] IEnumRfc1766 **ppEnumRfc1766); + + HRESULT GetRfc1766Info( + [in] LCID Locale, + [out] PRFC1766INFO pRfc1766Info); + + HRESULT CreateConvertCharset( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty, + [out] IMLangConvertCharset **ppMLangConvertCharset); + +}; + +[ + object, + pointer_default(unique) +] +interface IMultiLanguage2 : IUnknown +{ + typedef struct tagDetectEncodingInfo + { + UINT nLangID; + UINT nCodePage; + INT nDocPercent; + INT nConfidence; + } DetectEncodingInfo, *pDetectEncodingInfo; + + HRESULT GetNumberOfCodePageInfo( + [out] UINT *pcCodePage); + + HRESULT GetCodePageInfo( + [in] UINT uiCodePage, + [in] LANGID LangId, + [out] PMIMECPINFO pCodePageInfo); + + HRESULT GetFamilyCodePage( + [in] UINT uiCodePage, + [out] UINT *puiFamilyCodePage); + + HRESULT EnumCodePages( + [in] DWORD grfFlags, + [in] LANGID LangId, + [out] IEnumCodePage **ppEnumCodePage); + + HRESULT GetCharsetInfo( + [in] BSTR Charset, + [in] PMIMECSETINFO pCharsetInfo); + + HRESULT IsConvertible( + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding); + + HRESULT ConvertString( + [in,out] DWORD *pdwMode, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringToUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringFromUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringReset(); + + HRESULT GetRfc1766FromLcid( + [in] LCID Locale, + [out] BSTR *pbstrRfc1766); + + HRESULT GetLcidFromRfc1766( + [out] LCID *pLocale, + [in] BSTR bstrRfc1766); + + HRESULT EnumRfc1766( + [in] LANGID LangId, + [out] IEnumRfc1766 **ppEnumRfc1766); + + HRESULT GetRfc1766Info( + [in] LCID Locale, + [in] LANGID LangId, + [out] PRFC1766INFO pRfc1766Info); + + HRESULT CreateConvertCharset( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty, + [out] IMLangConvertCharset **ppMLangConvertCharset); + + HRESULT ConvertStringInIStream( + [in,out] DWORD *pdwMode, + [in] DWORD dwFlag, + [in] WCHAR *lpFallBack, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] IStream *pstmIn, + [in] IStream *pstmOut); + + HRESULT ConvertStringToUnicodeEx( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize, + [in] DWORD dwFlag, + [in] WCHAR *lpFallBack); + + HRESULT DetectCodepageInIStream( + [in] DWORD dwFlag, + [in] DWORD dwPrefWinCodePage, + [in] IStream *pstmIn, + [in,out] DetectEncodingInfo *lpEncoding, + [in,out] INT *pnScores); + + HRESULT DetectInputCodepage( + [in] DWORD dwFlag, + [in] DWORD dwPrefWinCodePage, + [in] CHAR *pSrcStr, + [in,out] INT *pcSrcSize, + [in,out] DetectEncodingInfo *lpEncoding, + [in,out] INT *pnScores); + + HRESULT ValidateCodePage( + [in] UINT uiCodePage, + [in] HWND hwnd); + + HRESULT GetCodePageDescription( + [in] UINT uiCodePage, + [in] LCID lcid, + [in,out] LPWSTR lpWideCharStr, + [in] int cchWideChar); + + HRESULT IsCodePageInstallable( + [in] UINT uiCodePage); + + HRESULT SetMimeDBSource( + [in] MIMECONTF dwSource); + + HRESULT GetNumberOfScripts( + [out] UINT *pnScripts); + + HRESULT EnumScripts( + [in] DWORD dwFlags, + [in] LANGID LangId, + [out] IEnumScript **ppEnumScript); + + HRESULT ValidateCodePageEx( /* undocumented on MSDN */ + [in] UINT uiCodePage, + [in] HWND hwnd, + [in] DWORD dwfIODControl); +};