Michael Stefaniuc : ole32: Standardize the COM usage in git.c.
Alexandre Julliard
julliard at winehq.org
Wed Dec 22 10:57:37 CST 2010
Module: wine
Branch: master
Commit: bb81737f9c39c9b06a513bc173a27e590b4081fc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bb81737f9c39c9b06a513bc173a27e590b4081fc
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Wed Dec 22 10:36:50 2010 +0100
ole32: Standardize the COM usage in git.c.
---
dlls/ole32/git.c | 56 +++++++++++++++++++++++++++++------------------------
1 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/dlls/ole32/git.c b/dlls/ole32/git.c
index 3800de0..dd65c2e 100644
--- a/dlls/ole32/git.c
+++ b/dlls/ole32/git.c
@@ -64,7 +64,7 @@ typedef struct StdGITEntry
/* Class data */
typedef struct StdGlobalInterfaceTableImpl
{
- const IGlobalInterfaceTableVtbl *lpVtbl;
+ IGlobalInterfaceTable IGlobalInterfaceTable_iface;
ULONG ref;
struct list list;
@@ -84,13 +84,18 @@ static CRITICAL_SECTION_DEBUG critsect_debug =
static CRITICAL_SECTION git_section = { &critsect_debug, -1, 0, 0, 0, 0 };
+static inline StdGlobalInterfaceTableImpl *impl_from_IGlobalInterfaceTable(IGlobalInterfaceTable *iface)
+{
+ return CONTAINING_RECORD(iface, StdGlobalInterfaceTableImpl, IGlobalInterfaceTable_iface);
+}
+
/** This destroys it again. It should revoke all the held interfaces first **/
-static void StdGlobalInterfaceTable_Destroy(void* self)
+static void StdGlobalInterfaceTable_Destroy(void* This)
{
- TRACE("(%p)\n", self);
+ TRACE("(%p)\n", This);
FIXME("Revoke held interfaces here\n");
- HeapFree(GetProcessHeap(), 0, self);
+ HeapFree(GetProcessHeap(), 0, This);
StdGlobalInterfaceTableInstance = NULL;
}
@@ -98,19 +103,18 @@ static void StdGlobalInterfaceTable_Destroy(void* self)
* A helper function to traverse the list and find the entry that matches the cookie.
* Returns NULL if not found. Must be called inside git_section critical section.
*/
-static StdGITEntry*
-StdGlobalInterfaceTable_FindEntry(IGlobalInterfaceTable* iface, DWORD cookie)
+static StdGITEntry* StdGlobalInterfaceTable_FindEntry(StdGlobalInterfaceTableImpl* This,
+ DWORD cookie)
{
- StdGlobalInterfaceTableImpl* const self = (StdGlobalInterfaceTableImpl*) iface;
StdGITEntry* e;
- TRACE("iface=%p, cookie=0x%x\n", iface, cookie);
+ TRACE("This=%p, cookie=0x%x\n", This, cookie);
- LIST_FOR_EACH_ENTRY(e, &self->list, StdGITEntry, entry) {
+ LIST_FOR_EACH_ENTRY(e, &This->list, StdGITEntry, entry) {
if (e->cookie == cookie)
return e;
}
-
+
TRACE("Entry not found\n");
return NULL;
}
@@ -143,25 +147,25 @@ StdGlobalInterfaceTable_QueryInterface(IGlobalInterfaceTable* iface,
static ULONG WINAPI
StdGlobalInterfaceTable_AddRef(IGlobalInterfaceTable* iface)
{
- StdGlobalInterfaceTableImpl* const self = (StdGlobalInterfaceTableImpl*) iface;
+ StdGlobalInterfaceTableImpl* const This = impl_from_IGlobalInterfaceTable(iface);
- /* InterlockedIncrement(&self->ref); */
- return self->ref;
+ /* InterlockedIncrement(&This->ref); */
+ return This->ref;
}
static ULONG WINAPI
StdGlobalInterfaceTable_Release(IGlobalInterfaceTable* iface)
{
- StdGlobalInterfaceTableImpl* const self = (StdGlobalInterfaceTableImpl*) iface;
+ StdGlobalInterfaceTableImpl* const This = impl_from_IGlobalInterfaceTable(iface);
- /* InterlockedDecrement(&self->ref); */
- if (self->ref == 0) {
+ /* InterlockedDecrement(&This->ref); */
+ if (This->ref == 0) {
/* Hey ho, it's time to go, so long again 'till next weeks show! */
- StdGlobalInterfaceTable_Destroy(self);
+ StdGlobalInterfaceTable_Destroy(This);
return 0;
}
- return self->ref;
+ return This->ref;
}
/***
@@ -173,7 +177,7 @@ StdGlobalInterfaceTable_RegisterInterfaceInGlobal(
IGlobalInterfaceTable* iface, IUnknown* pUnk,
REFIID riid, DWORD* pdwCookie)
{
- StdGlobalInterfaceTableImpl* const self = (StdGlobalInterfaceTableImpl*) iface;
+ StdGlobalInterfaceTableImpl* const This = impl_from_IGlobalInterfaceTable(iface);
IStream* stream = NULL;
HRESULT hres;
StdGITEntry* entry;
@@ -205,11 +209,11 @@ StdGlobalInterfaceTable_RegisterInterfaceInGlobal(
entry->iid = *riid;
entry->stream = stream;
- entry->cookie = self->nextCookie;
- self->nextCookie++; /* inc the cookie count */
+ entry->cookie = This->nextCookie;
+ This->nextCookie++; /* inc the cookie count */
/* insert the new entry at the end of the list */
- list_add_tail(&self->list, &entry->entry);
+ list_add_tail(&This->list, &entry->entry);
/* and return the cookie */
*pdwCookie = entry->cookie;
@@ -224,6 +228,7 @@ static HRESULT WINAPI
StdGlobalInterfaceTable_RevokeInterfaceFromGlobal(
IGlobalInterfaceTable* iface, DWORD dwCookie)
{
+ StdGlobalInterfaceTableImpl* This = impl_from_IGlobalInterfaceTable(iface);
StdGITEntry* entry;
HRESULT hr;
@@ -231,7 +236,7 @@ StdGlobalInterfaceTable_RevokeInterfaceFromGlobal(
EnterCriticalSection(&git_section);
- entry = StdGlobalInterfaceTable_FindEntry(iface, dwCookie);
+ entry = StdGlobalInterfaceTable_FindEntry(This, dwCookie);
if (entry == NULL) {
TRACE("Entry not found\n");
LeaveCriticalSection(&git_section);
@@ -260,6 +265,7 @@ StdGlobalInterfaceTable_GetInterfaceFromGlobal(
IGlobalInterfaceTable* iface, DWORD dwCookie,
REFIID riid, void **ppv)
{
+ StdGlobalInterfaceTableImpl* This = impl_from_IGlobalInterfaceTable(iface);
StdGITEntry* entry;
HRESULT hres;
IStream *stream;
@@ -268,7 +274,7 @@ StdGlobalInterfaceTable_GetInterfaceFromGlobal(
EnterCriticalSection(&git_section);
- entry = StdGlobalInterfaceTable_FindEntry(iface, dwCookie);
+ entry = StdGlobalInterfaceTable_FindEntry(This, dwCookie);
if (entry == NULL) {
WARN("Entry for cookie 0x%x not found\n", dwCookie);
LeaveCriticalSection(&git_section);
@@ -380,7 +386,7 @@ void* StdGlobalInterfaceTable_Construct(void)
newGIT = HeapAlloc(GetProcessHeap(), 0, sizeof(StdGlobalInterfaceTableImpl));
if (newGIT == 0) return newGIT;
- newGIT->lpVtbl = &StdGlobalInterfaceTableImpl_Vtbl;
+ newGIT->IGlobalInterfaceTable_iface.lpVtbl = &StdGlobalInterfaceTableImpl_Vtbl;
newGIT->ref = 1; /* Initialise the reference count */
list_init(&newGIT->list);
newGIT->nextCookie = 0xf100; /* that's where windows starts, so that's where we start */
More information about the wine-cvs
mailing list