ole32: Use an iface instead of a vtbl pointer in PointerMonikerImpl.
This commit is contained in:
parent
32fe620c88
commit
adbcfb7e5c
|
@ -40,17 +40,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
||||||
/* PointerMoniker data structure */
|
/* PointerMoniker data structure */
|
||||||
typedef struct PointerMonikerImpl{
|
typedef struct PointerMonikerImpl{
|
||||||
|
|
||||||
const IMonikerVtbl* lpvtbl; /* VTable relative to the IMoniker interface.*/
|
IMoniker IMoniker_iface;
|
||||||
|
|
||||||
LONG ref; /* reference counter for this object */
|
LONG ref; /* reference counter for this object */
|
||||||
|
|
||||||
IUnknown *pObject; /* custom marshaler */
|
IUnknown *pObject; /* custom marshaler */
|
||||||
} PointerMonikerImpl;
|
} PointerMonikerImpl;
|
||||||
|
|
||||||
|
static inline PointerMonikerImpl *impl_from_IMoniker(IMoniker *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, PointerMonikerImpl, IMoniker_iface);
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI
|
static HRESULT WINAPI
|
||||||
PointerMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
|
PointerMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
|
|
||||||
TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
|
TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
|
||||||
|
|
||||||
|
@ -84,7 +89,7 @@ PointerMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
|
||||||
static ULONG WINAPI
|
static ULONG WINAPI
|
||||||
PointerMonikerImpl_AddRef(IMoniker* iface)
|
PointerMonikerImpl_AddRef(IMoniker* iface)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
|
|
||||||
TRACE("(%p)\n",This);
|
TRACE("(%p)\n",This);
|
||||||
|
|
||||||
|
@ -97,7 +102,7 @@ PointerMonikerImpl_AddRef(IMoniker* iface)
|
||||||
static ULONG WINAPI
|
static ULONG WINAPI
|
||||||
PointerMonikerImpl_Release(IMoniker* iface)
|
PointerMonikerImpl_Release(IMoniker* iface)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
ULONG ref;
|
ULONG ref;
|
||||||
|
|
||||||
TRACE("(%p)\n",This);
|
TRACE("(%p)\n",This);
|
||||||
|
@ -194,7 +199,7 @@ static HRESULT WINAPI
|
||||||
PointerMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft,
|
PointerMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft,
|
||||||
REFIID riid, VOID** ppvResult)
|
REFIID riid, VOID** ppvResult)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
|
|
||||||
TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
|
TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
|
||||||
|
|
||||||
|
@ -211,7 +216,7 @@ static HRESULT WINAPI
|
||||||
PointerMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft,
|
PointerMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft,
|
||||||
REFIID riid, VOID** ppvResult)
|
REFIID riid, VOID** ppvResult)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
|
|
||||||
TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
|
TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
|
||||||
|
|
||||||
|
@ -336,7 +341,7 @@ PointerMonikerImpl_Enum(IMoniker* iface,BOOL fForward, IEnumMoniker** ppenumMoni
|
||||||
static HRESULT WINAPI
|
static HRESULT WINAPI
|
||||||
PointerMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
|
PointerMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
DWORD mkSys;
|
DWORD mkSys;
|
||||||
|
|
||||||
TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
|
TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
|
||||||
|
@ -348,7 +353,7 @@ PointerMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
|
||||||
|
|
||||||
if (mkSys==MKSYS_POINTERMONIKER)
|
if (mkSys==MKSYS_POINTERMONIKER)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *pOtherMoniker = (PointerMonikerImpl *)pmkOtherMoniker;
|
PointerMonikerImpl *pOtherMoniker = impl_from_IMoniker(pmkOtherMoniker);
|
||||||
return This->pObject == pOtherMoniker->pObject ? S_OK : S_FALSE;
|
return This->pObject == pOtherMoniker->pObject ? S_OK : S_FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -360,7 +365,7 @@ PointerMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
static HRESULT WINAPI PointerMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash)
|
static HRESULT WINAPI PointerMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
|
|
||||||
if (pdwHash==NULL)
|
if (pdwHash==NULL)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -467,7 +472,7 @@ PointerMonikerImpl_ParseDisplayName(IMoniker* iface, IBindCtx* pbc,
|
||||||
IMoniker* pmkToLeft, LPOLESTR pszDisplayName,
|
IMoniker* pmkToLeft, LPOLESTR pszDisplayName,
|
||||||
ULONG* pchEaten, IMoniker** ppmkOut)
|
ULONG* pchEaten, IMoniker** ppmkOut)
|
||||||
{
|
{
|
||||||
PointerMonikerImpl *This = (PointerMonikerImpl *)iface;
|
PointerMonikerImpl *This = impl_from_IMoniker(iface);
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IParseDisplayName *pPDN;
|
IParseDisplayName *pPDN;
|
||||||
|
|
||||||
|
@ -543,7 +548,7 @@ static void PointerMonikerImpl_Construct(PointerMonikerImpl* This, IUnknown *pun
|
||||||
TRACE("(%p)\n",This);
|
TRACE("(%p)\n",This);
|
||||||
|
|
||||||
/* Initialize the virtual function table. */
|
/* Initialize the virtual function table. */
|
||||||
This->lpvtbl = &VT_PointerMonikerImpl;
|
This->IMoniker_iface.lpVtbl = &VT_PointerMonikerImpl;
|
||||||
This->ref = 1;
|
This->ref = 1;
|
||||||
if (punk)
|
if (punk)
|
||||||
IUnknown_AddRef(punk);
|
IUnknown_AddRef(punk);
|
||||||
|
@ -580,7 +585,7 @@ HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER *ppmk)
|
||||||
}
|
}
|
||||||
|
|
||||||
PointerMonikerImpl_Construct(This, punk);
|
PointerMonikerImpl_Construct(This, punk);
|
||||||
*ppmk = (IMoniker *)&This->lpvtbl;
|
*ppmk = &This->IMoniker_iface;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue