mlang: Get rid of ICOM_THIS_MULTI macro.

This commit is contained in:
Dmitry Timoshkov 2009-02-04 15:25:19 +08:00 committed by Alexandre Julliard
parent f02f39f60c
commit 0d65421b99
1 changed files with 111 additions and 55 deletions

View File

@ -43,8 +43,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(mlang);
#define CP_UNICODE 1200 #define CP_UNICODE 1200
#define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj); static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj);
static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum); static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum);
@ -1486,12 +1484,17 @@ typedef struct tagEnumCodePage_impl
DWORD total, pos; DWORD total, pos;
} EnumCodePage_impl; } EnumCodePage_impl;
static inline EnumCodePage_impl *impl_from_IEnumCodePage( IEnumCodePage *iface )
{
return (EnumCodePage_impl *)CONTAINING_RECORD( iface, EnumCodePage_impl, vtbl_IEnumCodePage );
}
static HRESULT WINAPI fnIEnumCodePage_QueryInterface( static HRESULT WINAPI fnIEnumCodePage_QueryInterface(
IEnumCodePage* iface, IEnumCodePage* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
TRACE("%p -> %s\n", This, debugstr_guid(riid) ); TRACE("%p -> %s\n", This, debugstr_guid(riid) );
@ -1511,14 +1514,14 @@ static HRESULT WINAPI fnIEnumCodePage_QueryInterface(
static ULONG WINAPI fnIEnumCodePage_AddRef( static ULONG WINAPI fnIEnumCodePage_AddRef(
IEnumCodePage* iface) IEnumCodePage* iface)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
return InterlockedIncrement(&This->ref); return InterlockedIncrement(&This->ref);
} }
static ULONG WINAPI fnIEnumCodePage_Release( static ULONG WINAPI fnIEnumCodePage_Release(
IEnumCodePage* iface) IEnumCodePage* iface)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
ULONG ref = InterlockedDecrement(&This->ref); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("%p ref = %d\n", This, ref); TRACE("%p ref = %d\n", This, ref);
@ -1536,7 +1539,7 @@ static HRESULT WINAPI fnIEnumCodePage_Clone(
IEnumCodePage* iface, IEnumCodePage* iface,
IEnumCodePage** ppEnum) IEnumCodePage** ppEnum)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
FIXME("%p %p\n", This, ppEnum); FIXME("%p %p\n", This, ppEnum);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -1548,8 +1551,8 @@ static HRESULT WINAPI fnIEnumCodePage_Next(
ULONG* pceltFetched) ULONG* pceltFetched)
{ {
ULONG i; ULONG i;
EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface);
TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched); TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched);
if (!pceltFetched) return S_FALSE; if (!pceltFetched) return S_FALSE;
@ -1585,7 +1588,8 @@ static HRESULT WINAPI fnIEnumCodePage_Next(
static HRESULT WINAPI fnIEnumCodePage_Reset( static HRESULT WINAPI fnIEnumCodePage_Reset(
IEnumCodePage* iface) IEnumCodePage* iface)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
TRACE("%p\n", This); TRACE("%p\n", This);
This->pos = 0; This->pos = 0;
@ -1596,7 +1600,8 @@ static HRESULT WINAPI fnIEnumCodePage_Skip(
IEnumCodePage* iface, IEnumCodePage* iface,
ULONG celt) ULONG celt)
{ {
ICOM_THIS_MULTI(EnumCodePage_impl, vtbl_IEnumCodePage, iface); EnumCodePage_impl *This = impl_from_IEnumCodePage( iface );
TRACE("%p %u\n", This, celt); TRACE("%p %u\n", This, celt);
if (celt >= This->total) return S_FALSE; if (celt >= This->total) return S_FALSE;
@ -1672,12 +1677,17 @@ typedef struct tagEnumScript_impl
DWORD total, pos; DWORD total, pos;
} EnumScript_impl; } EnumScript_impl;
static inline EnumScript_impl *impl_from_IEnumScript( IEnumScript *iface )
{
return (EnumScript_impl *)CONTAINING_RECORD( iface, EnumScript_impl, vtbl_IEnumScript );
}
static HRESULT WINAPI fnIEnumScript_QueryInterface( static HRESULT WINAPI fnIEnumScript_QueryInterface(
IEnumScript* iface, IEnumScript* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
TRACE("%p -> %s\n", This, debugstr_guid(riid) ); TRACE("%p -> %s\n", This, debugstr_guid(riid) );
@ -1697,14 +1707,14 @@ static HRESULT WINAPI fnIEnumScript_QueryInterface(
static ULONG WINAPI fnIEnumScript_AddRef( static ULONG WINAPI fnIEnumScript_AddRef(
IEnumScript* iface) IEnumScript* iface)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
return InterlockedIncrement(&This->ref); return InterlockedIncrement(&This->ref);
} }
static ULONG WINAPI fnIEnumScript_Release( static ULONG WINAPI fnIEnumScript_Release(
IEnumScript* iface) IEnumScript* iface)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
ULONG ref = InterlockedDecrement(&This->ref); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("%p ref = %d\n", This, ref); TRACE("%p ref = %d\n", This, ref);
@ -1722,7 +1732,7 @@ static HRESULT WINAPI fnIEnumScript_Clone(
IEnumScript* iface, IEnumScript* iface,
IEnumScript** ppEnum) IEnumScript** ppEnum)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
FIXME("%p %p: stub!\n", This, ppEnum); FIXME("%p %p: stub!\n", This, ppEnum);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -1733,7 +1743,8 @@ static HRESULT WINAPI fnIEnumScript_Next(
PSCRIPTINFO rgelt, PSCRIPTINFO rgelt,
ULONG* pceltFetched) ULONG* pceltFetched)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched); TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched);
if (!pceltFetched || !rgelt) return E_FAIL; if (!pceltFetched || !rgelt) return E_FAIL;
@ -1755,7 +1766,8 @@ static HRESULT WINAPI fnIEnumScript_Next(
static HRESULT WINAPI fnIEnumScript_Reset( static HRESULT WINAPI fnIEnumScript_Reset(
IEnumScript* iface) IEnumScript* iface)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
TRACE("%p\n", This); TRACE("%p\n", This);
This->pos = 0; This->pos = 0;
@ -1766,7 +1778,8 @@ static HRESULT WINAPI fnIEnumScript_Skip(
IEnumScript* iface, IEnumScript* iface,
ULONG celt) ULONG celt)
{ {
ICOM_THIS_MULTI(EnumScript_impl, vtbl_IEnumScript, iface); EnumScript_impl *This = impl_from_IEnumScript( iface );
TRACE("%p %u\n", This, celt); TRACE("%p %u\n", This, celt);
if (celt >= This->total) return S_FALSE; if (celt >= This->total) return S_FALSE;
@ -1826,26 +1839,31 @@ static HRESULT EnumScript_create( MLang_impl* mlang, DWORD dwFlags,
/******************************************************************************/ /******************************************************************************/
static inline MLang_impl *impl_from_IMLangFontLink( IMLangFontLink *iface )
{
return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink );
}
static HRESULT WINAPI fnIMLangFontLink_QueryInterface( static HRESULT WINAPI fnIMLangFontLink_QueryInterface(
IMLangFontLink* iface, IMLangFontLink* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
return MLang_QueryInterface( This, riid, ppvObject ); return MLang_QueryInterface( This, riid, ppvObject );
} }
static ULONG WINAPI fnIMLangFontLink_AddRef( static ULONG WINAPI fnIMLangFontLink_AddRef(
IMLangFontLink* iface) IMLangFontLink* iface)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
return MLang_AddRef( This ); return MLang_AddRef( This );
} }
static ULONG WINAPI fnIMLangFontLink_Release( static ULONG WINAPI fnIMLangFontLink_Release(
IMLangFontLink* iface) IMLangFontLink* iface)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
return MLang_Release( This ); return MLang_Release( This );
} }
@ -1896,7 +1914,7 @@ static HRESULT WINAPI fnIMLangFontLink_CodePageToCodePages(
UINT uCodePage, UINT uCodePage,
DWORD* pdwCodePages) DWORD* pdwCodePages)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
CHARSETINFO cs; CHARSETINFO cs;
BOOL rc; BOOL rc;
@ -1922,7 +1940,7 @@ static HRESULT WINAPI fnIMLangFontLink_CodePagesToCodePage(
UINT uDefaultCodePage, UINT uDefaultCodePage,
UINT* puCodePage) UINT* puCodePage)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
DWORD mask = 0x00000000; DWORD mask = 0x00000000;
UINT i; UINT i;
CHARSETINFO cs; CHARSETINFO cs;
@ -1975,7 +1993,7 @@ static HRESULT WINAPI fnIMLangFontLink_GetFontCodePages(
{ {
HFONT old_font; HFONT old_font;
FONTSIGNATURE fontsig; FONTSIGNATURE fontsig;
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink, iface); MLang_impl *This = impl_from_IMLangFontLink( iface );
TRACE("(%p)\n",This); TRACE("(%p)\n",This);
@ -2033,24 +2051,29 @@ static const IMLangFontLinkVtbl IMLangFontLink_vtbl =
/******************************************************************************/ /******************************************************************************/
static inline MLang_impl *impl_from_IMultiLanguage( IMultiLanguage *iface )
{
return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage );
}
static HRESULT WINAPI fnIMultiLanguage_QueryInterface( static HRESULT WINAPI fnIMultiLanguage_QueryInterface(
IMultiLanguage* iface, IMultiLanguage* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
return MLang_QueryInterface( This, riid, ppvObject ); return MLang_QueryInterface( This, riid, ppvObject );
} }
static ULONG WINAPI fnIMultiLanguage_AddRef( IMultiLanguage* iface ) static ULONG WINAPI fnIMultiLanguage_AddRef( IMultiLanguage* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
return IMLangFontLink_AddRef( ((IMLangFontLink*)This) ); return IMLangFontLink_AddRef( ((IMLangFontLink*)This) );
} }
static ULONG WINAPI fnIMultiLanguage_Release( IMultiLanguage* iface ) static ULONG WINAPI fnIMultiLanguage_Release( IMultiLanguage* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
return IMLangFontLink_Release( ((IMLangFontLink*)This) ); return IMLangFontLink_Release( ((IMLangFontLink*)This) );
} }
@ -2068,8 +2091,8 @@ static HRESULT WINAPI fnIMultiLanguage_GetCodePageInfo(
PMIMECPINFO pCodePageInfo) PMIMECPINFO pCodePageInfo)
{ {
UINT i, n; UINT i, n;
MLang_impl *This = impl_from_IMultiLanguage( iface );
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface);
TRACE("%p, %u, %p\n", This, uiCodePage, pCodePageInfo); TRACE("%p, %u, %p\n", This, uiCodePage, pCodePageInfo);
for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++) for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++)
@ -2100,7 +2123,8 @@ static HRESULT WINAPI fnIMultiLanguage_EnumCodePages(
DWORD grfFlags, DWORD grfFlags,
IEnumCodePage** ppEnumCodePage) IEnumCodePage** ppEnumCodePage)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
TRACE("%p %08x %p\n", This, grfFlags, ppEnumCodePage); TRACE("%p %08x %p\n", This, grfFlags, ppEnumCodePage);
return EnumCodePage_create( This, grfFlags, 0, ppEnumCodePage ); return EnumCodePage_create( This, grfFlags, 0, ppEnumCodePage );
@ -2111,7 +2135,7 @@ static HRESULT WINAPI fnIMultiLanguage_GetCharsetInfo(
BSTR Charset, BSTR Charset,
PMIMECSETINFO pCharsetInfo) PMIMECSETINFO pCharsetInfo)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
return IMultiLanguage3_GetCharsetInfo((IMultiLanguage3*)&This->vtbl_IMultiLanguage3, Charset, pCharsetInfo); return IMultiLanguage3_GetCharsetInfo((IMultiLanguage3*)&This->vtbl_IMultiLanguage3, Charset, pCharsetInfo);
} }
@ -2220,12 +2244,17 @@ typedef struct tagEnumRfc1766_impl
DWORD total, pos; DWORD total, pos;
} EnumRfc1766_impl; } EnumRfc1766_impl;
static inline EnumRfc1766_impl *impl_from_IEnumRfc1766( IEnumRfc1766 *iface )
{
return (EnumRfc1766_impl *)CONTAINING_RECORD( iface, EnumRfc1766_impl, vtbl_IEnumRfc1766 );
}
static HRESULT WINAPI fnIEnumRfc1766_QueryInterface( static HRESULT WINAPI fnIEnumRfc1766_QueryInterface(
IEnumRfc1766 *iface, IEnumRfc1766 *iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
TRACE("%p -> %s\n", This, debugstr_guid(riid) ); TRACE("%p -> %s\n", This, debugstr_guid(riid) );
@ -2245,14 +2274,14 @@ static HRESULT WINAPI fnIEnumRfc1766_QueryInterface(
static ULONG WINAPI fnIEnumRfc1766_AddRef( static ULONG WINAPI fnIEnumRfc1766_AddRef(
IEnumRfc1766 *iface) IEnumRfc1766 *iface)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
return InterlockedIncrement(&This->ref); return InterlockedIncrement(&This->ref);
} }
static ULONG WINAPI fnIEnumRfc1766_Release( static ULONG WINAPI fnIEnumRfc1766_Release(
IEnumRfc1766 *iface) IEnumRfc1766 *iface)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
ULONG ref = InterlockedDecrement(&This->ref); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("%p ref = %d\n", This, ref); TRACE("%p ref = %d\n", This, ref);
@ -2269,7 +2298,8 @@ static HRESULT WINAPI fnIEnumRfc1766_Clone(
IEnumRfc1766 *iface, IEnumRfc1766 *iface,
IEnumRfc1766 **ppEnum) IEnumRfc1766 **ppEnum)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
FIXME("%p %p\n", This, ppEnum); FIXME("%p %p\n", This, ppEnum);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -2281,8 +2311,8 @@ static HRESULT WINAPI fnIEnumRfc1766_Next(
ULONG *pceltFetched) ULONG *pceltFetched)
{ {
ULONG i; ULONG i;
EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface);
TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched); TRACE("%p %u %p %p\n", This, celt, rgelt, pceltFetched);
if (!pceltFetched) return S_FALSE; if (!pceltFetched) return S_FALSE;
@ -2312,7 +2342,8 @@ static HRESULT WINAPI fnIEnumRfc1766_Next(
static HRESULT WINAPI fnIEnumRfc1766_Reset( static HRESULT WINAPI fnIEnumRfc1766_Reset(
IEnumRfc1766 *iface) IEnumRfc1766 *iface)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
TRACE("%p\n", This); TRACE("%p\n", This);
This->pos = 0; This->pos = 0;
@ -2323,7 +2354,8 @@ static HRESULT WINAPI fnIEnumRfc1766_Skip(
IEnumRfc1766 *iface, IEnumRfc1766 *iface,
ULONG celt) ULONG celt)
{ {
ICOM_THIS_MULTI(EnumRfc1766_impl, vtbl_IEnumRfc1766, iface); EnumRfc1766_impl *This = impl_from_IEnumRfc1766( iface );
TRACE("%p %u\n", This, celt); TRACE("%p %u\n", This, celt);
if (celt >= This->total) return S_FALSE; if (celt >= This->total) return S_FALSE;
@ -2428,7 +2460,8 @@ static HRESULT WINAPI fnIMultiLanguage_EnumRfc1766(
IMultiLanguage *iface, IMultiLanguage *iface,
IEnumRfc1766 **ppEnumRfc1766) IEnumRfc1766 **ppEnumRfc1766)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage( iface );
TRACE("%p %p\n", This, ppEnumRfc1766); TRACE("%p %p\n", This, ppEnumRfc1766);
return EnumRfc1766_create(0, ppEnumRfc1766); return EnumRfc1766_create(0, ppEnumRfc1766);
@ -2481,24 +2514,29 @@ static const IMultiLanguageVtbl IMultiLanguage_vtbl =
/******************************************************************************/ /******************************************************************************/
static inline MLang_impl *impl_from_IMultiLanguage3( IMultiLanguage3 *iface )
{
return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage3 );
}
static HRESULT WINAPI fnIMultiLanguage2_QueryInterface( static HRESULT WINAPI fnIMultiLanguage2_QueryInterface(
IMultiLanguage3* iface, IMultiLanguage3* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
return MLang_QueryInterface( This, riid, ppvObject ); return MLang_QueryInterface( This, riid, ppvObject );
} }
static ULONG WINAPI fnIMultiLanguage2_AddRef( IMultiLanguage3* iface ) static ULONG WINAPI fnIMultiLanguage2_AddRef( IMultiLanguage3* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
return MLang_AddRef( This ); return MLang_AddRef( This );
} }
static ULONG WINAPI fnIMultiLanguage2_Release( IMultiLanguage3* iface ) static ULONG WINAPI fnIMultiLanguage2_Release( IMultiLanguage3* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
return MLang_Release( This ); return MLang_Release( This );
} }
@ -2506,7 +2544,8 @@ static HRESULT WINAPI fnIMultiLanguage2_GetNumberOfCodePageInfo(
IMultiLanguage3* iface, IMultiLanguage3* iface,
UINT* pcCodePage) UINT* pcCodePage)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p, %p\n", This, pcCodePage); TRACE("%p, %p\n", This, pcCodePage);
if (!pcCodePage) return S_FALSE; if (!pcCodePage) return S_FALSE;
@ -2560,8 +2599,8 @@ static HRESULT WINAPI fnIMultiLanguage2_GetCodePageInfo(
PMIMECPINFO pCodePageInfo) PMIMECPINFO pCodePageInfo)
{ {
UINT i, n; UINT i, n;
MLang_impl *This = impl_from_IMultiLanguage3( iface );
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface);
TRACE("%p, %u, %04x, %p\n", This, uiCodePage, LangId, pCodePageInfo); TRACE("%p, %u, %04x, %p\n", This, uiCodePage, LangId, pCodePageInfo);
for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++) for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++)
@ -2593,7 +2632,8 @@ static HRESULT WINAPI fnIMultiLanguage2_EnumCodePages(
LANGID LangId, LANGID LangId,
IEnumCodePage** ppEnumCodePage) IEnumCodePage** ppEnumCodePage)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p %08x %04x %p\n", This, grfFlags, LangId, ppEnumCodePage); TRACE("%p %08x %04x %p\n", This, grfFlags, LangId, ppEnumCodePage);
return EnumCodePage_create( This, grfFlags, LangId, ppEnumCodePage ); return EnumCodePage_create( This, grfFlags, LangId, ppEnumCodePage );
@ -2605,8 +2645,8 @@ static HRESULT WINAPI fnIMultiLanguage2_GetCharsetInfo(
PMIMECSETINFO pCharsetInfo) PMIMECSETINFO pCharsetInfo)
{ {
UINT i, n; UINT i, n;
MLang_impl *This = impl_from_IMultiLanguage3( iface );
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface);
TRACE("%p %s %p\n", This, debugstr_w(Charset), pCharsetInfo); TRACE("%p %s %p\n", This, debugstr_w(Charset), pCharsetInfo);
if (!pCharsetInfo) return E_FAIL; if (!pCharsetInfo) return E_FAIL;
@ -2753,7 +2793,8 @@ static HRESULT WINAPI fnIMultiLanguage2_EnumRfc1766(
LANGID LangId, LANGID LangId,
IEnumRfc1766** ppEnumRfc1766) IEnumRfc1766** ppEnumRfc1766)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p %p\n", This, ppEnumRfc1766); TRACE("%p %p\n", This, ppEnumRfc1766);
return EnumRfc1766_create(LangId, ppEnumRfc1766); return EnumRfc1766_create(LangId, ppEnumRfc1766);
@ -2962,7 +3003,8 @@ static HRESULT WINAPI fnIMultiLanguage2_GetNumberOfScripts(
IMultiLanguage3* iface, IMultiLanguage3* iface,
UINT* pnScripts) UINT* pnScripts)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p %p\n", This, pnScripts); TRACE("%p %p\n", This, pnScripts);
if (!pnScripts) return S_FALSE; if (!pnScripts) return S_FALSE;
@ -2977,7 +3019,8 @@ static HRESULT WINAPI fnIMultiLanguage2_EnumScripts(
LANGID LangId, LANGID LangId,
IEnumScript** ppEnumScript) IEnumScript** ppEnumScript)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p %08x %04x %p\n", This, dwFlags, LangId, ppEnumScript); TRACE("%p %08x %04x %p\n", This, dwFlags, LangId, ppEnumScript);
return EnumScript_create( This, dwFlags, LangId, ppEnumScript ); return EnumScript_create( This, dwFlags, LangId, ppEnumScript );
@ -2990,7 +3033,7 @@ static HRESULT WINAPI fnIMultiLanguage2_ValidateCodePageEx(
DWORD dwfIODControl) DWORD dwfIODControl)
{ {
int i; int i;
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
TRACE("%p %u %p %08x\n", This, uiCodePage, hwnd, dwfIODControl); TRACE("%p %u %p %08x\n", This, uiCodePage, hwnd, dwfIODControl);
@ -3026,7 +3069,8 @@ static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePage(
UINT *pnDetectedCodePages, UINT *pnDetectedCodePages,
WCHAR *lpSpecialChar) WCHAR *lpSpecialChar)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
FIXME("(%p)->(%08x %s %u %p %u %p %p %p)\n", This, dwFlags, debugstr_w(lpWideCharStr), FIXME("(%p)->(%08x %s %u %p %u %p %p %p)\n", This, dwFlags, debugstr_w(lpWideCharStr),
cchWideChar, puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages, cchWideChar, puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
pnDetectedCodePages, lpSpecialChar); pnDetectedCodePages, lpSpecialChar);
@ -3043,7 +3087,8 @@ static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePageInIStream(
UINT *pnDetectedCodePages, UINT *pnDetectedCodePages,
WCHAR *lpSpecialChar) WCHAR *lpSpecialChar)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); MLang_impl *This = impl_from_IMultiLanguage3( iface );
FIXME("(%p)->(%08x %p %p %u %p %p %p)\n", This, dwFlags, pStrIn, FIXME("(%p)->(%08x %p %p %u %p %p %p)\n", This, dwFlags, pStrIn,
puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages, puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
pnDetectedCodePages, lpSpecialChar); pnDetectedCodePages, lpSpecialChar);
@ -3087,24 +3132,30 @@ static const IMultiLanguage3Vtbl IMultiLanguage3_vtbl =
}; };
/******************************************************************************/ /******************************************************************************/
static inline MLang_impl *impl_from_IMLangFontLink2( IMLangFontLink2 *iface )
{
return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink2 );
}
static HRESULT WINAPI fnIMLangFontLink2_QueryInterface( static HRESULT WINAPI fnIMLangFontLink2_QueryInterface(
IMLangFontLink2 * iface, IMLangFontLink2 * iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink2, iface); MLang_impl *This = impl_from_IMLangFontLink2( iface );
return MLang_QueryInterface( This, riid, ppvObject ); return MLang_QueryInterface( This, riid, ppvObject );
} }
static ULONG WINAPI fnIMLangFontLink2_AddRef( IMLangFontLink2* iface ) static ULONG WINAPI fnIMLangFontLink2_AddRef( IMLangFontLink2* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink2, iface); MLang_impl *This = impl_from_IMLangFontLink2( iface );
return MLang_AddRef( This ); return MLang_AddRef( This );
} }
static ULONG WINAPI fnIMLangFontLink2_Release( IMLangFontLink2* iface ) static ULONG WINAPI fnIMLangFontLink2_Release( IMLangFontLink2* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangFontLink2, iface); MLang_impl *This = impl_from_IMLangFontLink2( iface );
return MLang_Release( This ); return MLang_Release( This );
} }
@ -3238,26 +3289,31 @@ static const IMLangFontLink2Vtbl IMLangFontLink2_vtbl =
/******************************************************************************/ /******************************************************************************/
static inline MLang_impl *impl_from_IMLangLineBreakConsole( IMLangLineBreakConsole *iface )
{
return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangLineBreakConsole );
}
static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface( static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface(
IMLangLineBreakConsole* iface, IMLangLineBreakConsole* iface,
REFIID riid, REFIID riid,
void** ppvObject) void** ppvObject)
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangLineBreakConsole, iface); MLang_impl *This = impl_from_IMLangLineBreakConsole( iface );
return MLang_QueryInterface( This, riid, ppvObject ); return MLang_QueryInterface( This, riid, ppvObject );
} }
static ULONG WINAPI fnIMLangLineBreakConsole_AddRef( static ULONG WINAPI fnIMLangLineBreakConsole_AddRef(
IMLangLineBreakConsole* iface ) IMLangLineBreakConsole* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangLineBreakConsole, iface); MLang_impl *This = impl_from_IMLangLineBreakConsole( iface );
return MLang_AddRef( This ); return MLang_AddRef( This );
} }
static ULONG WINAPI fnIMLangLineBreakConsole_Release( static ULONG WINAPI fnIMLangLineBreakConsole_Release(
IMLangLineBreakConsole* iface ) IMLangLineBreakConsole* iface )
{ {
ICOM_THIS_MULTI(MLang_impl, vtbl_IMLangLineBreakConsole, iface); MLang_impl *This = impl_from_IMLangLineBreakConsole( iface );
return MLang_Release( This ); return MLang_Release( This );
} }