[PATCH 5/5] mshtml: COM cleanup for the IPersist* ifaces in HTMLDocument.
Michael Stefaniuc
mstefani at redhat.de
Wed Dec 22 03:48:41 CST 2010
---
dlls/mshtml/htmldoc.c | 10 ++--
dlls/mshtml/mshtml_private.h | 13 ++---
dlls/mshtml/olecmd.c | 2 +-
dlls/mshtml/persist.c | 112 ++++++++++++++++++++++-------------------
4 files changed, 70 insertions(+), 67 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index bbd276b..90cafd7 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1731,13 +1731,13 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = &This->IHTMLDocument6_iface;
}else if(IsEqualGUID(&IID_IPersist, riid)) {
TRACE("(%p)->(IID_IPersist, %p)\n", This, ppv);
- *ppv = PERSIST(This);
+ *ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IPersistMoniker, riid)) {
TRACE("(%p)->(IID_IPersistMoniker, %p)\n", This, ppv);
- *ppv = PERSISTMON(This);
+ *ppv = &This->IPersistMoniker_iface;
}else if(IsEqualGUID(&IID_IPersistFile, riid)) {
TRACE("(%p)->(IID_IPersistFile, %p)\n", This, ppv);
- *ppv = PERSISTFILE(This);
+ *ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IMonikerProp, riid)) {
TRACE("(%p)->(IID_IMonikerProp, %p)\n", This, ppv);
*ppv = MONPROP(This);
@@ -1788,7 +1788,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = CONPTCONT(&This->cp_container);
}else if(IsEqualGUID(&IID_IPersistStreamInit, riid)) {
TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv);
- *ppv = PERSTRINIT(This);
+ *ppv = &This->IPersistStreamInit_iface;
}else if(IsEqualGUID(&DIID_DispHTMLDocument, riid)) {
TRACE("(%p)->(DIID_DispHTMLDocument %p)\n", This, ppv);
*ppv = &This->IHTMLDocument2_iface;
@@ -1797,7 +1797,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = SUPPERRINFO(This);
}else if(IsEqualGUID(&IID_IPersistHistory, riid)) {
TRACE("(%p)->(IID_IPersistHistory %p)\n", This, ppv);
- *ppv = PERSISTHIST(This);
+ *ppv = &This->IPersistHistory_iface;
}else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
FIXME("(%p)->(CLSID_CMarkup %p)\n", This, ppv);
*ppv = NULL;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index e83ba7b..9059ded 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -347,9 +347,9 @@ struct HTMLDocument {
IHTMLDocument4 IHTMLDocument4_iface;
IHTMLDocument5 IHTMLDocument5_iface;
IHTMLDocument6 IHTMLDocument6_iface;
- const IPersistMonikerVtbl *lpPersistMonikerVtbl;
- const IPersistFileVtbl *lpPersistFileVtbl;
- const IPersistHistoryVtbl *lpPersistHistoryVtbl;
+ IPersistMoniker IPersistMoniker_iface;
+ IPersistFile IPersistFile_iface;
+ IPersistHistory IPersistHistory_iface;
const IMonikerPropVtbl *lpMonikerPropVtbl;
const IOleObjectVtbl *lpOleObjectVtbl;
const IOleDocumentVtbl *lpOleDocumentVtbl;
@@ -361,7 +361,7 @@ struct HTMLDocument {
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
const IOleControlVtbl *lpOleControlVtbl;
const IHlinkTargetVtbl *lpHlinkTargetVtbl;
- const IPersistStreamInitVtbl *lpPersistStreamInitVtbl;
+ IPersistStreamInit IPersistStreamInit_iface;
const IDispatchExVtbl *lpIDispatchExVtbl;
const ISupportErrorInfoVtbl *lpSupportErrorInfoVtbl;
const IObjectWithSiteVtbl *lpObjectWithSiteVtbl;
@@ -626,9 +626,6 @@ struct HTMLDocumentNode {
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
-#define PERSIST(x) ((IPersist*) &(x)->lpPersistFileVtbl)
-#define PERSISTMON(x) ((IPersistMoniker*) &(x)->lpPersistMonikerVtbl)
-#define PERSISTFILE(x) ((IPersistFile*) &(x)->lpPersistFileVtbl)
#define MONPROP(x) ((IMonikerProp*) &(x)->lpMonikerPropVtbl)
#define OLEOBJ(x) ((IOleObject*) &(x)->lpOleObjectVtbl)
#define OLEDOC(x) ((IOleDocument*) &(x)->lpOleDocumentVtbl)
@@ -645,8 +642,6 @@ struct HTMLDocumentNode {
#define CONTROL(x) ((IOleControl*) &(x)->lpOleControlVtbl)
#define HLNKTARGET(x) ((IHlinkTarget*) &(x)->lpHlinkTargetVtbl)
#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl)
-#define PERSTRINIT(x) ((IPersistStreamInit*) &(x)->lpPersistStreamInitVtbl)
-#define PERSISTHIST(x) ((IPersistHistory*) &(x)->lpPersistHistoryVtbl)
#define CUSTOMDOC(x) ((ICustomDoc*) &(x)->lpCustomDocVtbl)
#define OBJSITE(x) ((IObjectWithSite*) &(x)->lpObjectWithSiteVtbl)
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index 3fbe309..8142d72 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -604,7 +604,7 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
}
}
- hres = IPersistMoniker_Load(PERSISTMON(This), TRUE, mon, NULL, 0);
+ hres = IPersistMoniker_Load(&This->IPersistMoniker_iface, TRUE, mon, NULL, 0);
IMoniker_Release(mon);
if(FAILED(hres))
return hres;
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 59e8bfc..46d00a3 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -339,45 +339,48 @@ static HRESULT get_doc_string(HTMLDocumentNode *This, char **str)
* IPersistMoniker implementation
*/
-#define PERSISTMON_THIS(iface) DEFINE_THIS(HTMLDocument, PersistMoniker, iface)
+static inline HTMLDocument *impl_from_IPersistMoniker(IPersistMoniker *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLDocument, IPersistMoniker_iface);
+}
static HRESULT WINAPI PersistMoniker_QueryInterface(IPersistMoniker *iface, REFIID riid, void **ppv)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
return htmldoc_query_interface(This, riid, ppv);
}
static ULONG WINAPI PersistMoniker_AddRef(IPersistMoniker *iface)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
return htmldoc_addref(This);
}
static ULONG WINAPI PersistMoniker_Release(IPersistMoniker *iface)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
return htmldoc_release(This);
}
static HRESULT WINAPI PersistMoniker_GetClassID(IPersistMoniker *iface, CLSID *pClassID)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
- return IPersist_GetClassID(PERSIST(This), pClassID);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
+ return IPersist_GetClassID(&This->IPersistFile_iface, pClassID);
}
static HRESULT WINAPI PersistMoniker_IsDirty(IPersistMoniker *iface)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
TRACE("(%p)\n", This);
- return IPersistStreamInit_IsDirty(PERSTRINIT(This));
+ return IPersistStreamInit_IsDirty(&This->IPersistStreamInit_iface);
}
static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAvailable,
IMoniker *pimkName, LPBC pibc, DWORD grfMode)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
HRESULT hres;
TRACE("(%p)->(%x %p %p %08x)\n", This, fFullyAvailable, pimkName, pibc, grfMode);
@@ -421,21 +424,21 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva
static HRESULT WINAPI PersistMoniker_Save(IPersistMoniker *iface, IMoniker *pimkName,
LPBC pbc, BOOL fRemember)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
FIXME("(%p)->(%p %p %x)\n", This, pimkName, pbc, fRemember);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistMoniker_SaveCompleted(IPersistMoniker *iface, IMoniker *pimkName, LPBC pibc)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
FIXME("(%p)->(%p %p)\n", This, pimkName, pibc);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistMoniker_GetCurMoniker(IPersistMoniker *iface, IMoniker **ppimkName)
{
- HTMLDocument *This = PERSISTMON_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistMoniker(iface);
TRACE("(%p)->(%p)\n", This, ppimkName);
@@ -517,29 +520,32 @@ static const IMonikerPropVtbl MonikerPropVtbl = {
* IPersistFile implementation
*/
-#define PERSISTFILE_THIS(iface) DEFINE_THIS(HTMLDocument, PersistFile, iface)
+static inline HTMLDocument *impl_from_IPersistFile(IPersistFile *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLDocument, IPersistFile_iface);
+}
static HRESULT WINAPI PersistFile_QueryInterface(IPersistFile *iface, REFIID riid, void **ppv)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
return htmldoc_query_interface(This, riid, ppv);
}
static ULONG WINAPI PersistFile_AddRef(IPersistFile *iface)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
return htmldoc_addref(This);
}
static ULONG WINAPI PersistFile_Release(IPersistFile *iface)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
return htmldoc_release(This);
}
static HRESULT WINAPI PersistFile_GetClassID(IPersistFile *iface, CLSID *pClassID)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
TRACE("(%p)->(%p)\n", This, pClassID);
@@ -552,23 +558,23 @@ static HRESULT WINAPI PersistFile_GetClassID(IPersistFile *iface, CLSID *pClassI
static HRESULT WINAPI PersistFile_IsDirty(IPersistFile *iface)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
TRACE("(%p)\n", This);
- return IPersistStreamInit_IsDirty(PERSTRINIT(This));
+ return IPersistStreamInit_IsDirty(&This->IPersistStreamInit_iface);
}
static HRESULT WINAPI PersistFile_Load(IPersistFile *iface, LPCOLESTR pszFileName, DWORD dwMode)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
FIXME("(%p)->(%s %08x)\n", This, debugstr_w(pszFileName), dwMode);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistFile_Save(IPersistFile *iface, LPCOLESTR pszFileName, BOOL fRemember)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
char *str;
DWORD written=0;
HANDLE file;
@@ -593,14 +599,14 @@ static HRESULT WINAPI PersistFile_Save(IPersistFile *iface, LPCOLESTR pszFileNam
static HRESULT WINAPI PersistFile_SaveCompleted(IPersistFile *iface, LPCOLESTR pszFileName)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(pszFileName));
return E_NOTIMPL;
}
static HRESULT WINAPI PersistFile_GetCurFile(IPersistFile *iface, LPOLESTR *pszFileName)
{
- HTMLDocument *This = PERSISTFILE_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistFile(iface);
FIXME("(%p)->(%p)\n", This, pszFileName);
return E_NOTIMPL;
}
@@ -617,36 +623,39 @@ static const IPersistFileVtbl PersistFileVtbl = {
PersistFile_GetCurFile
};
-#define PERSTRINIT_THIS(iface) DEFINE_THIS(HTMLDocument, PersistStreamInit, iface)
+static inline HTMLDocument *impl_from_IPersistStreamInit(IPersistStreamInit *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLDocument, IPersistStreamInit_iface);
+}
static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface,
REFIID riid, void **ppv)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
return htmldoc_query_interface(This, riid, ppv);
}
static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
return htmldoc_addref(This);
}
static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
return htmldoc_release(This);
}
static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *pClassID)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
- return IPersist_GetClassID(PERSIST(This), pClassID);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
+ return IPersist_GetClassID(&This->IPersistFile_iface, pClassID);
}
static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
TRACE("(%p)\n", This);
@@ -658,7 +667,7 @@ static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface)
static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM pStm)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
IMoniker *mon;
HRESULT hres;
@@ -683,7 +692,7 @@ static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM
static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM pStm,
BOOL fClearDirty)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
char *str;
DWORD written=0;
HRESULT hres;
@@ -709,14 +718,14 @@ static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM
static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface,
ULARGE_INTEGER *pcbSize)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
FIXME("(%p)->(%p)\n", This, pcbSize);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
{
- HTMLDocument *This = PERSTRINIT_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistStreamInit(iface);
IMoniker *mon;
HRESULT hres;
@@ -738,8 +747,6 @@ static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
return channelbsc_load_stream(This->window->bscallback, NULL);
}
-#undef PERSTRINIT_THIS
-
static const IPersistStreamInitVtbl PersistStreamInitVtbl = {
PersistStreamInit_QueryInterface,
PersistStreamInit_AddRef,
@@ -756,62 +763,63 @@ static const IPersistStreamInitVtbl PersistStreamInitVtbl = {
* IPersistHistory implementation
*/
-#define PERSISTHIST_THIS(iface) DEFINE_THIS(HTMLDocument, PersistHistory, iface)
+static inline HTMLDocument *impl_from_IPersistHistory(IPersistHistory *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLDocument, IPersistHistory_iface);
+}
static HRESULT WINAPI PersistHistory_QueryInterface(IPersistHistory *iface, REFIID riid, void **ppv)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
return htmldoc_query_interface(This, riid, ppv);
}
static ULONG WINAPI PersistHistory_AddRef(IPersistHistory *iface)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
return htmldoc_addref(This);
}
static ULONG WINAPI PersistHistory_Release(IPersistHistory *iface)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
return htmldoc_release(This);
}
static HRESULT WINAPI PersistHistory_GetClassID(IPersistHistory *iface, CLSID *pClassID)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
- return IPersist_GetClassID(PERSIST(This), pClassID);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
+ return IPersist_GetClassID(&This->IPersistFile_iface, pClassID);
}
static HRESULT WINAPI PersistHistory_LoadHistory(IPersistHistory *iface, IStream *pStream, IBindCtx *pbc)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
FIXME("(%p)->(%p %p)\n", This, pStream, pbc);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistHistory_SaveHistory(IPersistHistory *iface, IStream *pStream)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
FIXME("(%p)->(%p)\n", This, pStream);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistHistory_SetPositionCookie(IPersistHistory *iface, DWORD dwPositioncookie)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
FIXME("(%p)->(%x)\n", This, dwPositioncookie);
return E_NOTIMPL;
}
static HRESULT WINAPI PersistHistory_GetPositionCookie(IPersistHistory *iface, DWORD *pdwPositioncookie)
{
- HTMLDocument *This = PERSISTHIST_THIS(iface);
+ HTMLDocument *This = impl_from_IPersistHistory(iface);
FIXME("(%p)->(%p)\n", This, pdwPositioncookie);
return E_NOTIMPL;
}
-#undef PERSISTHIST_THIS
-
static const IPersistHistoryVtbl PersistHistoryVtbl = {
PersistHistory_QueryInterface,
PersistHistory_AddRef,
@@ -825,9 +833,9 @@ static const IPersistHistoryVtbl PersistHistoryVtbl = {
void HTMLDocument_Persist_Init(HTMLDocument *This)
{
- This->lpPersistMonikerVtbl = &PersistMonikerVtbl;
- This->lpPersistFileVtbl = &PersistFileVtbl;
+ This->IPersistMoniker_iface.lpVtbl = &PersistMonikerVtbl;
+ This->IPersistFile_iface.lpVtbl = &PersistFileVtbl;
This->lpMonikerPropVtbl = &MonikerPropVtbl;
- This->lpPersistStreamInitVtbl = &PersistStreamInitVtbl;
- This->lpPersistHistoryVtbl = &PersistHistoryVtbl;
+ This->IPersistStreamInit_iface.lpVtbl = &PersistStreamInitVtbl;
+ This->IPersistHistory_iface.lpVtbl = &PersistHistoryVtbl;
}
--
1.7.2.3
More information about the wine-patches
mailing list