ole32: COM cleanup in compositemoniker.c.
Michael Stefaniuc
mstefani at redhat.de
Mon Aug 29 17:39:16 CDT 2011
---
dlls/ole32/compositemoniker.c | 168 +++++++++++++++++++----------------------
1 files changed, 78 insertions(+), 90 deletions(-)
diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 4aa8b7f..f67e56c 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -41,51 +41,42 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole);
/* CompositeMoniker data structure */
typedef struct CompositeMonikerImpl{
-
- const IMonikerVtbl* lpvtbl1; /* VTable relative to the IMoniker interface.*/
-
- /* The ROT (RunningObjectTable implementation) uses the IROTData
- * interface to test whether two monikers are equal. That's why IROTData
- * interface is implemented by monikers.
- */
- const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
-
- const IMarshalVtbl* lpvtblMarshal; /* VTable relative to the IMarshal interface.*/
-
- LONG ref; /* reference counter for this object */
-
+ IMoniker IMoniker_iface;
+ IROTData IROTData_iface;
+ IMarshal IMarshal_iface;
+ LONG ref;
IMoniker** tabMoniker; /* dynamic table containing all components (monikers) of this composite moniker */
-
ULONG tabSize; /* size of tabMoniker */
+ ULONG tabLastIndex; /* first free index in tabMoniker */
+} CompositeMonikerImpl;
- ULONG tabLastIndex; /* first free index in tabMoniker */
+static inline CompositeMonikerImpl *impl_from_IMoniker(IMoniker *iface)
+{
+ return CONTAINING_RECORD(iface, CompositeMonikerImpl, IMoniker_iface);
+}
-} CompositeMonikerImpl;
+static inline CompositeMonikerImpl *impl_from_IROTData(IROTData *iface)
+{
+ return CONTAINING_RECORD(iface, CompositeMonikerImpl, IROTData_iface);
+}
+static inline CompositeMonikerImpl *impl_from_IMarshal(IMarshal *iface)
+{
+ return CONTAINING_RECORD(iface, CompositeMonikerImpl, IMarshal_iface);
+}
/* EnumMoniker data structure */
typedef struct EnumMonikerImpl{
-
- const IEnumMonikerVtbl *lpVtbl; /* VTable relative to the IEnumMoniker interface.*/
-
- LONG ref; /* reference counter for this object */
-
+ IEnumMoniker IEnumMoniker_iface;
+ LONG ref;
IMoniker** tabMoniker; /* dynamic table containing the enumerated monikers */
-
ULONG tabSize; /* size of tabMoniker */
-
ULONG currentPos; /* index pointer on the current moniker */
-
} EnumMonikerImpl;
-static inline IMoniker *impl_from_IROTData( IROTData *iface )
+static inline EnumMonikerImpl *impl_from_IEnumMoniker(IEnumMoniker *iface)
{
- return (IMoniker *)((char*)iface - FIELD_OFFSET(CompositeMonikerImpl, lpvtbl2));
-}
-
-static inline IMoniker *impl_from_IMarshal( IMarshal *iface )
-{
- return (IMoniker *)((char*)iface - FIELD_OFFSET(CompositeMonikerImpl, lpvtblMarshal));
+ return CONTAINING_RECORD(iface, EnumMonikerImpl, IEnumMoniker_iface);
}
static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker,ULONG tabSize,ULONG currentPos,BOOL leftToRigth,IEnumMoniker ** ppmk);
@@ -96,7 +87,7 @@ static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker,ULONG tab
static HRESULT WINAPI
CompositeMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
@@ -115,9 +106,9 @@ CompositeMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject
)
*ppvObject = iface;
else if (IsEqualIID(&IID_IROTData, riid))
- *ppvObject = &This->lpvtbl2;
+ *ppvObject = &This->IROTData_iface;
else if (IsEqualIID(&IID_IMarshal, riid))
- *ppvObject = &This->lpvtblMarshal;
+ *ppvObject = &This->IMarshal_iface;
/* Check that we obtained an interface.*/
if ((*ppvObject)==0)
@@ -135,7 +126,7 @@ CompositeMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject
static ULONG WINAPI
CompositeMonikerImpl_AddRef(IMoniker* iface)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
TRACE("(%p)\n",This);
@@ -158,7 +149,7 @@ static void CompositeMonikerImpl_ReleaseMonikersInTable(CompositeMonikerImpl *Th
static ULONG WINAPI
CompositeMonikerImpl_Release(IMoniker* iface)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
ULONG ref;
TRACE("(%p)\n",This);
@@ -214,12 +205,11 @@ CompositeMonikerImpl_IsDirty(IMoniker* iface)
static HRESULT WINAPI
CompositeMonikerImpl_Load(IMoniker* iface,IStream* pStm)
{
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
HRESULT res;
DWORD moniker_count;
DWORD i;
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
-
TRACE("(%p,%p)\n",iface,pStm);
/* this function call OleLoadFromStream function for each moniker within this object */
@@ -262,7 +252,7 @@ CompositeMonikerImpl_Load(IMoniker* iface,IStream* pStm)
static HRESULT WINAPI
CompositeMonikerImpl_Save(IMoniker* iface,IStream* pStm,BOOL fClearDirty)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
HRESULT res;
IEnumMoniker *enumMk;
IMoniker *pmk;
@@ -532,7 +522,7 @@ CompositeMonikerImpl_ComposeWith(IMoniker* iface, IMoniker* pmkRight,
static HRESULT WINAPI
CompositeMonikerImpl_Enum(IMoniker* iface,BOOL fForward, IEnumMoniker** ppenumMoniker)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface;
+ CompositeMonikerImpl *This = impl_from_IMoniker(iface);
TRACE("(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
@@ -1196,12 +1186,11 @@ static HRESULT WINAPI
CompositeMonikerROTDataImpl_QueryInterface(IROTData *iface,REFIID riid,
VOID** ppvObject)
{
-
- IMoniker *This = impl_from_IROTData(iface);
+ CompositeMonikerImpl *This = impl_from_IROTData(iface);
TRACE("(%p,%p,%p)\n",iface,riid,ppvObject);
- return CompositeMonikerImpl_QueryInterface(This, riid, ppvObject);
+ return CompositeMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject);
}
/***********************************************************************
@@ -1210,11 +1199,11 @@ CompositeMonikerROTDataImpl_QueryInterface(IROTData *iface,REFIID riid,
static ULONG WINAPI
CompositeMonikerROTDataImpl_AddRef(IROTData *iface)
{
- IMoniker *This = impl_from_IROTData(iface);
+ CompositeMonikerImpl *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
- return IMoniker_AddRef(This);
+ return IMoniker_AddRef(&This->IMoniker_iface);
}
/***********************************************************************
@@ -1222,11 +1211,11 @@ CompositeMonikerROTDataImpl_AddRef(IROTData *iface)
*/
static ULONG WINAPI CompositeMonikerROTDataImpl_Release(IROTData* iface)
{
- IMoniker *This = impl_from_IROTData(iface);
+ CompositeMonikerImpl *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
- return IMoniker_Release(This);
+ return IMoniker_Release(&This->IMoniker_iface);
}
/******************************************************************************
@@ -1236,7 +1225,7 @@ static HRESULT WINAPI
CompositeMonikerROTDataImpl_GetComparisonData(IROTData* iface,
BYTE* pbData, ULONG cbMax, ULONG* pcbData)
{
- IMoniker *This = impl_from_IROTData(iface);
+ CompositeMonikerImpl *This = impl_from_IROTData(iface);
IEnumMoniker *pEnumMk;
IMoniker *pmk;
HRESULT hr;
@@ -1245,7 +1234,7 @@ CompositeMonikerROTDataImpl_GetComparisonData(IROTData* iface,
*pcbData = sizeof(CLSID);
- hr = IMoniker_Enum(This, TRUE, &pEnumMk);
+ hr = IMoniker_Enum(&This->IMoniker_iface, TRUE, &pEnumMk);
if (FAILED(hr)) return hr;
while(IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK)
@@ -1323,48 +1312,48 @@ CompositeMonikerROTDataImpl_GetComparisonData(IROTData* iface,
static HRESULT WINAPI CompositeMonikerMarshalImpl_QueryInterface(IMarshal *iface, REFIID riid, LPVOID *ppv)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppv);
- return CompositeMonikerImpl_QueryInterface(This, riid, ppv);
+ return CompositeMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppv);
}
static ULONG WINAPI CompositeMonikerMarshalImpl_AddRef(IMarshal *iface)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
TRACE("(%p)\n",iface);
- return CompositeMonikerImpl_AddRef(This);
+ return CompositeMonikerImpl_AddRef(&This->IMoniker_iface);
}
static ULONG WINAPI CompositeMonikerMarshalImpl_Release(IMarshal *iface)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
TRACE("(%p)\n",iface);
- return CompositeMonikerImpl_Release(This);
+ return CompositeMonikerImpl_Release(&This->IMoniker_iface);
}
static HRESULT WINAPI CompositeMonikerMarshalImpl_GetUnmarshalClass(
- LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext,
+ IMarshal *iface, REFIID riid, void *pv, DWORD dwDestContext,
void* pvDestContext, DWORD mshlflags, CLSID* pCid)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
TRACE("(%s, %p, %x, %p, %x, %p)\n", debugstr_guid(riid), pv,
dwDestContext, pvDestContext, mshlflags, pCid);
- return IMoniker_GetClassID(This, pCid);
+ return IMoniker_GetClassID(&This->IMoniker_iface, pCid);
}
static HRESULT WINAPI CompositeMonikerMarshalImpl_GetMarshalSizeMax(
- LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext,
+ IMarshal *iface, REFIID riid, void *pv, DWORD dwDestContext,
void* pvDestContext, DWORD mshlflags, DWORD* pSize)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
IEnumMoniker *pEnumMk;
IMoniker *pmk;
HRESULT hr;
@@ -1375,10 +1364,10 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_GetMarshalSizeMax(
*pSize = 0x10; /* to match native */
- hr = IMoniker_Enum(This, TRUE, &pEnumMk);
+ hr = IMoniker_Enum(&This->IMoniker_iface, TRUE, &pEnumMk);
if (FAILED(hr)) return hr;
- hr = IMoniker_GetSizeMax(This, &size);
+ hr = IMoniker_GetSizeMax(&This->IMoniker_iface, &size);
while (IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK)
{
@@ -1402,11 +1391,11 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_GetMarshalSizeMax(
return S_OK;
}
-static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(LPMARSHAL iface, IStream *pStm,
+static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(IMarshal *iface, IStream *pStm,
REFIID riid, void* pv, DWORD dwDestContext,
void* pvDestContext, DWORD mshlflags)
{
- IMoniker *This = impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
IEnumMoniker *pEnumMk;
IMoniker *pmk;
HRESULT hr;
@@ -1415,7 +1404,7 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(LPMARSHAL ifa
TRACE("(%p, %s, %p, %x, %p, %x)\n", pStm, debugstr_guid(riid), pv,
dwDestContext, pvDestContext, mshlflags);
- hr = IMoniker_Enum(This, TRUE, &pEnumMk);
+ hr = IMoniker_Enum(&This->IMoniker_iface, TRUE, &pEnumMk);
if (FAILED(hr)) return hr;
while (IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK)
@@ -1440,9 +1429,10 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(LPMARSHAL ifa
return S_OK;
}
-static HRESULT WINAPI CompositeMonikerMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv)
+static HRESULT WINAPI CompositeMonikerMarshalImpl_UnmarshalInterface(IMarshal *iface, IStream *pStm,
+ REFIID riid, void **ppv)
{
- CompositeMonikerImpl *This = (CompositeMonikerImpl *)impl_from_IMarshal(iface);
+ CompositeMonikerImpl *This = impl_from_IMarshal(iface);
HRESULT hr;
TRACE("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv);
@@ -1474,10 +1464,10 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_UnmarshalInterface(LPMARSHAL i
}
This->tabLastIndex++;
- return IMoniker_QueryInterface((IMoniker *)&This->lpvtbl1, riid, ppv);
+ return IMoniker_QueryInterface(&This->IMoniker_iface, riid, ppv);
}
-static HRESULT WINAPI CompositeMonikerMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm)
+static HRESULT WINAPI CompositeMonikerMarshalImpl_ReleaseMarshalData(IMarshal *iface, IStream *pStm)
{
TRACE("(%p)\n", pStm);
/* can't release a state-based marshal as nothing on server side to
@@ -1485,7 +1475,8 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_ReleaseMarshalData(LPMARSHAL i
return S_OK;
}
-static HRESULT WINAPI CompositeMonikerMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved)
+static HRESULT WINAPI CompositeMonikerMarshalImpl_DisconnectObject(IMarshal *iface,
+ DWORD dwReserved)
{
TRACE("(0x%x)\n", dwReserved);
/* can't disconnect a state-based marshal as nothing on server side to
@@ -1499,7 +1490,7 @@ static HRESULT WINAPI CompositeMonikerMarshalImpl_DisconnectObject(LPMARSHAL ifa
static HRESULT WINAPI
EnumMonikerImpl_QueryInterface(IEnumMoniker* iface,REFIID riid,void** ppvObject)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
@@ -1530,7 +1521,7 @@ EnumMonikerImpl_QueryInterface(IEnumMoniker* iface,REFIID riid,void** ppvObject)
static ULONG WINAPI
EnumMonikerImpl_AddRef(IEnumMoniker* iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
TRACE("(%p)\n",This);
@@ -1544,7 +1535,7 @@ EnumMonikerImpl_AddRef(IEnumMoniker* iface)
static ULONG WINAPI
EnumMonikerImpl_Release(IEnumMoniker* iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
ULONG i;
ULONG ref;
TRACE("(%p)\n",This);
@@ -1570,7 +1561,7 @@ static HRESULT WINAPI
EnumMonikerImpl_Next(IEnumMoniker* iface,ULONG celt, IMoniker** rgelt,
ULONG* pceltFethed)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
ULONG i;
/* retrieve the requested number of moniker from the current position */
@@ -1595,7 +1586,7 @@ EnumMonikerImpl_Next(IEnumMoniker* iface,ULONG celt, IMoniker** rgelt,
static HRESULT WINAPI
EnumMonikerImpl_Skip(IEnumMoniker* iface,ULONG celt)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
if ((This->currentPos+celt) >= This->tabSize)
return S_FALSE;
@@ -1611,8 +1602,7 @@ EnumMonikerImpl_Skip(IEnumMoniker* iface,ULONG celt)
static HRESULT WINAPI
EnumMonikerImpl_Reset(IEnumMoniker* iface)
{
-
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
This->currentPos=0;
@@ -1625,7 +1615,7 @@ EnumMonikerImpl_Reset(IEnumMoniker* iface)
static HRESULT WINAPI
EnumMonikerImpl_Clone(IEnumMoniker* iface,IEnumMoniker** ppenum)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
return EnumMonikerImpl_CreateEnumMoniker(This->tabMoniker,This->tabSize,This->currentPos,TRUE,ppenum);
}
@@ -1662,7 +1652,7 @@ EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker, ULONG tabSize,
return STG_E_INSUFFICIENTMEMORY;
/* Initialize the virtual function table. */
- newEnumMoniker->lpVtbl = &VT_EnumMonikerImpl;
+ newEnumMoniker->IEnumMoniker_iface.lpVtbl = &VT_EnumMonikerImpl;
newEnumMoniker->ref = 1;
newEnumMoniker->tabSize=tabSize;
@@ -1688,7 +1678,7 @@ EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker, ULONG tabSize,
IMoniker_AddRef(tabMoniker[i]);
}
- *ppmk=(IEnumMoniker*)newEnumMoniker;
+ *ppmk=&newEnumMoniker->IEnumMoniker_iface;
return S_OK;
}
@@ -1751,8 +1741,7 @@ static const IMarshalVtbl VT_MarshalImpl =
* Composite-Moniker_Construct (local function)
*******************************************************************************/
static HRESULT
-CompositeMonikerImpl_Construct(IMoniker** ppMoniker,
- LPMONIKER pmkFirst, LPMONIKER pmkRest)
+CompositeMonikerImpl_Construct(IMoniker **ppMoniker, IMoniker *pmkFirst, IMoniker *pmkRest)
{
DWORD mkSys;
IEnumMoniker *enumMoniker;
@@ -1768,9 +1757,9 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker,
TRACE("(%p,%p,%p)\n",This,pmkFirst,pmkRest);
/* Initialize the virtual function table. */
- This->lpvtbl1 = &VT_CompositeMonikerImpl;
- This->lpvtbl2 = &VT_ROTDataImpl;
- This->lpvtblMarshal= &VT_MarshalImpl;
+ This->IMoniker_iface.lpVtbl = &VT_CompositeMonikerImpl;
+ This->IROTData_iface.lpVtbl = &VT_ROTDataImpl;
+ This->IMarshal_iface.lpVtbl = &VT_MarshalImpl;
This->ref = 1;
This->tabSize=BLOCK_TAB_SIZE;
@@ -1784,7 +1773,7 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker,
if (!pmkFirst && !pmkRest)
{
- *ppMoniker = (IMoniker *)This;
+ *ppMoniker = &This->IMoniker_iface;
return S_OK;
}
@@ -1922,10 +1911,10 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker,
{
*ppMoniker = This->tabMoniker[0];
IMoniker_AddRef(*ppMoniker);
- IMoniker_Release((IMoniker *)This);
+ IMoniker_Release(&This->IMoniker_iface);
}
else
- *ppMoniker = (IMoniker *)This;
+ *ppMoniker = &This->IMoniker_iface;
return S_OK;
}
@@ -1934,8 +1923,7 @@ CompositeMonikerImpl_Construct(IMoniker** ppMoniker,
* CreateGenericComposite [OLE32.@]
******************************************************************************/
HRESULT WINAPI
-CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
- LPMONIKER* ppmkComposite)
+CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
{
IMoniker* moniker = 0;
HRESULT hr = S_OK;
--
1.7.4.4
More information about the wine-patches
mailing list