Module: wine Branch: master Commit: f18d156352e9b7f9d7675fdd5846c8cbd7846c59 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f18d156352e9b7f9d7675fdd58...
Author: Michael Stefaniuc mstefani@redhat.de Date: Mon Mar 4 00:28:47 2013 +0100
inetcomm: COM cleanup for the IMimeMessage iface.
---
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; }