[PATCH 1/7] inetcomm: COM cleanup for the IMimeMessage iface.

Michael Stefaniuc mstefani at redhat.de
Sun Mar 3 17:28:47 CST 2013


---
 dlls/inetcomm/mimeole.c |   85 +++++++++++++++++++++--------------------------
 1 files changed, 38 insertions(+), 47 deletions(-)

diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index ac4142a..3e23fc0 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -1428,15 +1428,19 @@ typedef struct body_t
 
 typedef struct MimeMessage
 {
-    const IMimeMessageVtbl *lpVtbl;
-
-    LONG refs;
+    IMimeMessage IMimeMessage_iface;
+    LONG ref;
     IStream *stream;
 
     struct list body_tree;
     DWORD next_index;
 } MimeMessage;
 
+static inline MimeMessage *impl_from_IMimeMessage(IMimeMessage *iface)
+{
+    return CONTAINING_RECORD(iface, MimeMessage, IMimeMessage_iface);
+}
+
 static HRESULT WINAPI MimeMessage_QueryInterface(IMimeMessage *iface, REFIID riid, void **ppv)
 {
     TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv);
@@ -1459,9 +1463,12 @@ static HRESULT WINAPI MimeMessage_QueryInterface(IMimeMessage *iface, REFIID rii
 
 static ULONG WINAPI MimeMessage_AddRef(IMimeMessage *iface)
 {
-    MimeMessage *This = (MimeMessage *)iface;
-    TRACE("(%p)->()\n", iface);
-    return InterlockedIncrement(&This->refs);
+    MimeMessage *This = impl_from_IMimeMessage(iface);
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) ref=%d\n", This, ref);
+
+    return ref;
 }
 
 static void empty_body_list(struct list *list)
@@ -1478,13 +1485,12 @@ static void empty_body_list(struct list *list)
 
 static ULONG WINAPI MimeMessage_Release(IMimeMessage *iface)
 {
-    MimeMessage *This = (MimeMessage *)iface;
-    ULONG refs;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
 
-    TRACE("(%p)->()\n", iface);
+    TRACE("(%p) ref=%d\n", This, ref);
 
-    refs = InterlockedDecrement(&This->refs);
-    if (!refs)
+    if (!ref)
     {
         empty_body_list(&This->body_tree);
 
@@ -1492,7 +1498,7 @@ static ULONG WINAPI MimeMessage_Release(IMimeMessage *iface)
         HeapFree(GetProcessHeap(), 0, This);
     }
 
-    return refs;
+    return ref;
 }
 
 /*** IPersist methods ***/
@@ -1674,11 +1680,9 @@ static body_t *create_sub_body(MimeMessage *msg, IStream *pStm, BODYOFFSETS *off
     return body;
 }
 
-static HRESULT WINAPI MimeMessage_Load(
-    IMimeMessage *iface,
-    LPSTREAM pStm)
+static HRESULT WINAPI MimeMessage_Load(IMimeMessage *iface, IStream *pStm)
 {
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
     body_t *root_body;
     BODYOFFSETS offsets;
     ULARGE_INTEGER cur;
@@ -1734,12 +1738,11 @@ static HRESULT WINAPI MimeMessage_InitNew(
 }
 
 /*** IMimeMessageTree methods ***/
-static HRESULT WINAPI MimeMessage_GetMessageSource(
-    IMimeMessage *iface,
-    IStream **ppStream,
-    DWORD dwFlags)
+static HRESULT WINAPI MimeMessage_GetMessageSource(IMimeMessage *iface, IStream **ppStream,
+        DWORD dwFlags)
 {
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
+
     FIXME("(%p)->(%p, 0x%x)\n", iface, ppStream, dwFlags);
 
     IStream_AddRef(This->stream);
@@ -1822,13 +1825,10 @@ static HRESULT find_body(struct list *list, HBODY hbody, body_t **body)
     return S_FALSE;
 }
 
-static HRESULT WINAPI MimeMessage_BindToObject(
-    IMimeMessage *iface,
-    const HBODY hBody,
-    REFIID riid,
-    void **ppvObject)
+static HRESULT WINAPI MimeMessage_BindToObject(IMimeMessage *iface, const HBODY hBody, REFIID riid,
+        void **ppvObject)
 {
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
     HRESULT hr;
     body_t *body;
 
@@ -1933,13 +1933,10 @@ static HRESULT WINAPI MimeMessage_InsertBody(
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI MimeMessage_GetBody(
-    IMimeMessage *iface,
-    BODYLOCATION location,
-    HBODY hPivot,
-    LPHBODY phBody)
+static HRESULT WINAPI MimeMessage_GetBody(IMimeMessage *iface, BODYLOCATION location, HBODY hPivot,
+        HBODY *phBody)
 {
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
     body_t *body;
     HRESULT hr;
 
@@ -1981,14 +1978,11 @@ static void count_children(body_t *body, boolean recurse, ULONG *count)
     }
 }
 
-static HRESULT WINAPI MimeMessage_CountBodies(
-    IMimeMessage *iface,
-    HBODY hParent,
-    boolean fRecurse,
-    ULONG *pcBodies)
+static HRESULT WINAPI MimeMessage_CountBodies(IMimeMessage *iface, HBODY hParent, boolean fRecurse,
+        ULONG *pcBodies)
 {
     HRESULT hr;
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
     body_t *body;
 
     TRACE("(%p)->(%p, %s, %p)\n", iface, hParent, fRecurse ? "TRUE" : "FALSE", pcBodies);
@@ -2044,12 +2038,9 @@ static HRESULT WINAPI MimeMessage_FindFirst(
     return find_next( iface, NULL, pFindBody, phBody );
 }
 
-static HRESULT WINAPI MimeMessage_FindNext(
-    IMimeMessage *iface,
-    LPFINDBODY pFindBody,
-    LPHBODY phBody)
+static HRESULT WINAPI MimeMessage_FindNext(IMimeMessage *iface, FINDBODY *pFindBody, HBODY *phBody)
 {
-    MimeMessage *This = (MimeMessage *)iface;
+    MimeMessage *This = impl_from_IMimeMessage(iface);
     body_t *body;
     HRESULT hr;
 
@@ -2561,13 +2552,13 @@ HRESULT MimeMessage_create(IUnknown *outer, void **obj)
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
     if (!This) return E_OUTOFMEMORY;
 
-    This->lpVtbl = &MimeMessageVtbl;
-    This->refs = 1;
+    This->IMimeMessage_iface.lpVtbl = &MimeMessageVtbl;
+    This->ref = 1;
     This->stream = NULL;
     list_init(&This->body_tree);
     This->next_index = 1;
 
-    *obj = &This->lpVtbl;
+    *obj = &This->IMimeMessage_iface;
     return S_OK;
 }
 
-- 
1.7.6.5



More information about the wine-patches mailing list