Add Multi Language support IDL and headers

Mike McCormack mike at codeweavers.com
Sat Jul 3 19:31:59 CDT 2004


ChangeLog:
* Add Multi Language support IDL and headers
-------------- next part --------------
Index: include/Makefile.in
===================================================================
RCS file: /home/wine/wine/include/Makefile.in,v
retrieving revision 1.131
diff -u -r1.131 Makefile.in
--- include/Makefile.in	14 Jun 2004 16:54:18 -0000	1.131
+++ include/Makefile.in	4 Jul 2004 00:29:22 -0000
@@ -12,6 +12,7 @@
 	ddstream.idl \
 	docobj.idl \
 	exdisp.idl \
+	mlang.idl \
 	mmstream.idl \
 	oaidl.idl \
 	objidl.idl \
--- /dev/null	1994-07-17 18:46:18.000000000 -0500
+++ include/mlang.idl	2004-07-03 19:28:56.000000000 -0500
@@ -0,0 +1,462 @@
+/*
+ * 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 "oaidl.idl";
+
+const USHORT MAX_SCRIPT_NAME = 48;
+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 BYTE SCRIPT_ID;
+
+/* 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")
+
+typedef struct tagSCRIPINFO {
+    SCRIPT_ID ScriptId;
+    UINT uiCodePage;
+    WCHAR wszDescription[MAX_SCRIPT_NAME];
+    WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
+    WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
+} SCRIPTINFO, *PSCRIPTINFO;
+
+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;
+
+typedef struct tagRFC1766INFO
+{
+    LCID lcid;
+    WCHAR wszRfc1766[MAX_RFC1766_NAME];
+    WCHAR wszLocaleName[MAX_LOCALE_NAME];
+} RFC1766INFO, *PRFC1766INFO;
+
+typedef struct tagDetectEncodingInfo
+{
+    UINT nLangID;
+    UINT nCodePage;
+    INT nDocPercent;
+    INT nConfidence;
+} DetectEncodingInfo, *pDetectEncodingInfo;
+
+[
+  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
+{
+    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
+{
+    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
+{
+    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
+{
+    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);
+};
+
--- /dev/null	1994-07-17 18:46:18.000000000 -0500
+++ include/mlang.h	2004-07-03 19:28:56.000000000 -0500
@@ -0,0 +1,2073 @@
+/*** Autogenerated by WIDL 0.1 from mlang.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_MLANG_H
+#define __WIDL_MLANG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <oaidl.h>
+#define MAX_SCRIPT_NAME (48)
+
+#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 BYTE SCRIPT_ID;
+
+#ifndef __WINE_WINNT_H
+typedef WORD LANGID;
+
+#endif
+typedef struct tagSCRIPINFO {
+    SCRIPT_ID ScriptId;
+    UINT uiCodePage;
+    WCHAR wszDescription[48];
+    WCHAR wszFixedWidthFont[32];
+    WCHAR wszProportionalFont[32];
+} SCRIPTINFO, *PSCRIPTINFO;
+
+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;
+
+typedef struct tagRFC1766INFO {
+    LCID lcid;
+    WCHAR wszRfc1766[1];
+    WCHAR wszLocaleName[1];
+} RFC1766INFO, *PRFC1766INFO;
+
+typedef struct tagDetectEncodingInfo {
+    UINT nLangID;
+    UINT nCodePage;
+    INT nDocPercent;
+    INT nConfidence;
+} DetectEncodingInfo, *pDetectEncodingInfo;
+
+#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
+
+/*****************************************************************************
+ * 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
+
+/*****************************************************************************
+ * 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
+
+/*****************************************************************************
+ * 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
+
+/*****************************************************************************
+ * 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 */


More information about the wine-patches mailing list