[PATCH 2/3] oleaut32: COM cleanup for ITypeInfo object
Andrew Eikum
aeikum at codeweavers.com
Thu May 9 09:27:22 CDT 2013
Looks like I missed replacing the ITypeInfo casts with impl_from
calls, e.g.:
static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface,
ITypeComp * *ppTComp)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
You can apply these, or wait until I amend them to fix that, too.
Whichever.
Andrew
On Wed, May 08, 2013 at 03:12:45PM -0500, Andrew Eikum wrote:
> ---
> dlls/oleaut32/typelib.c | 30 +++++++++++++++---------------
> 1 file changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
> index e62fa84..c6d2189 100644
> --- a/dlls/oleaut32/typelib.c
> +++ b/dlls/oleaut32/typelib.c
> @@ -1094,8 +1094,8 @@ typedef struct tagTLBImplType
> /* internal TypeInfo data */
> typedef struct tagITypeInfoImpl
> {
> - const ITypeInfo2Vtbl *lpVtbl;
> - const ITypeCompVtbl *lpVtblTypeComp;
> + ITypeInfo2 ITypeInfo2_iface;
> + ITypeComp ITypeComp_iface;
> LONG ref;
> BOOL not_attached_to_typelib;
> TYPEATTR TypeAttr ; /* _lots_ of type information. */
> @@ -1125,7 +1125,7 @@ typedef struct tagITypeInfoImpl
>
> static inline ITypeInfoImpl *info_impl_from_ITypeComp( ITypeComp *iface )
> {
> - return (ITypeInfoImpl *)((char*)iface - FIELD_OFFSET(ITypeInfoImpl, lpVtblTypeComp));
> + return CONTAINING_RECORD(iface, ITypeInfoImpl, ITypeComp_iface);
> }
>
> static const ITypeInfo2Vtbl tinfvt;
> @@ -4884,7 +4884,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind(
> if (pTypeInfo->Name && !strcmpW(pTypeInfo->Name, szName))
> {
> *pDescKind = DESCKIND_TYPECOMP;
> - pBindPtr->lptcomp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
> + pBindPtr->lptcomp = &pTypeInfo->ITypeComp_iface;
> ITypeComp_AddRef(pBindPtr->lptcomp);
> TRACE("module or enum: %s\n", debugstr_w(szName));
> return S_OK;
> @@ -4894,7 +4894,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind(
> if ((pTypeInfo->TypeAttr.typekind == TKIND_MODULE) ||
> (pTypeInfo->TypeAttr.typekind == TKIND_ENUM))
> {
> - ITypeComp *pSubTypeComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
> + ITypeComp *pSubTypeComp = &pTypeInfo->ITypeComp_iface;
> HRESULT hr;
>
> hr = ITypeComp_Bind(pSubTypeComp, szName, lHash, wFlags, ppTInfo, pDescKind, pBindPtr);
> @@ -4910,7 +4910,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind(
> if ((pTypeInfo->TypeAttr.typekind == TKIND_COCLASS) &&
> (pTypeInfo->TypeAttr.wTypeFlags & TYPEFLAG_FAPPOBJECT))
> {
> - ITypeComp *pSubTypeComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
> + ITypeComp *pSubTypeComp = &pTypeInfo->ITypeComp_iface;
> HRESULT hr;
> ITypeInfo *subtypeinfo;
> BINDPTR subbindptr;
> @@ -5013,9 +5013,9 @@ static HRESULT WINAPI ITypeLibComp_fnBindType(
> if (pTypeInfo->Name && !strcmpiW(pTypeInfo->Name, szName))
> {
> TRACE("returning %p\n", pTypeInfo);
> - *ppTInfo = (ITypeInfo *)&pTypeInfo->lpVtbl;
> + *ppTInfo = (ITypeInfo *)&pTypeInfo->ITypeInfo2_iface;
> ITypeInfo_AddRef(*ppTInfo);
> - *ppTComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
> + *ppTComp = &pTypeInfo->ITypeComp_iface;
> ITypeComp_AddRef(*ppTComp);
> return S_OK;
> }
> @@ -5046,8 +5046,8 @@ static ITypeInfoImpl* ITypeInfoImpl_Constructor(void)
> pTypeInfoImpl = heap_alloc_zero(sizeof(ITypeInfoImpl));
> if (pTypeInfoImpl)
> {
> - pTypeInfoImpl->lpVtbl = &tinfvt;
> - pTypeInfoImpl->lpVtblTypeComp = &tcompvt;
> + pTypeInfoImpl->ITypeInfo2_iface.lpVtbl = &tinfvt;
> + pTypeInfoImpl->ITypeComp_iface.lpVtbl = &tcompvt;
> pTypeInfoImpl->ref = 0;
> pTypeInfoImpl->hreftype = -1;
> pTypeInfoImpl->TypeAttr.memidConstructor = MEMBERID_NIL;
> @@ -5238,7 +5238,7 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface,
>
> TRACE("(%p)->(%p)\n", This, ppTComp);
>
> - *ppTComp = (ITypeComp *)&This->lpVtblTypeComp;
> + *ppTComp = &This->ITypeComp_iface;
> ITypeComp_AddRef(*ppTComp);
> return S_OK;
> }
> @@ -6999,7 +6999,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
>
> if ((This->hreftype != -1) && (This->hreftype == hRefType))
> {
> - *ppTInfo = (ITypeInfo *)&This->lpVtbl;
> + *ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface;
> ITypeInfo_AddRef(*ppTInfo);
> result = S_OK;
> }
> @@ -7913,7 +7913,7 @@ static HRESULT WINAPI ITypeComp_fnBind(
> if (FAILED(hr))
> return hr;
> *pDescKind = DESCKIND_FUNCDESC;
> - *ppTInfo = (ITypeInfo *)&This->lpVtbl;
> + *ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface;
> ITypeInfo_AddRef(*ppTInfo);
> return S_OK;
> } else {
> @@ -7923,7 +7923,7 @@ static HRESULT WINAPI ITypeComp_fnBind(
> if (FAILED(hr))
> return hr;
> *pDescKind = DESCKIND_VARDESC;
> - *ppTInfo = (ITypeInfo *)&This->lpVtbl;
> + *ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface;
> ITypeInfo_AddRef(*ppTInfo);
> return S_OK;
> }
> @@ -7934,7 +7934,7 @@ static HRESULT WINAPI ITypeComp_fnBind(
> ITypeInfo *pTInfo;
> ITypeComp *pTComp;
> HRESULT hr;
> - hr=ITypeInfo_GetRefTypeInfo((ITypeInfo *)&This->lpVtbl, This->impltypes[0].hRef, &pTInfo);
> + hr=ITypeInfo2_GetRefTypeInfo(&This->ITypeInfo2_iface, This->impltypes[0].hRef, &pTInfo);
> if (SUCCEEDED(hr))
> {
> hr = ITypeInfo_GetTypeComp(pTInfo,&pTComp);
> --
> 1.8.2.2
>
>
>
>
More information about the wine-devel
mailing list