Michael Stefaniuc : ole32: COM cleanup for the IEnumCATEGORYINFO iface.

Alexandre Julliard julliard at winehq.org
Wed Jul 13 12:16:34 CDT 2011


Module: wine
Branch: master
Commit: 9d94b1d402598e70fd3bf7d65eab3a9e17733af2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9d94b1d402598e70fd3bf7d65eab3a9e17733af2

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Jul 13 14:22:05 2011 +0200

ole32: COM cleanup for the IEnumCATEGORYINFO iface.

---

 dlls/ole32/comcat.c |   47 ++++++++++++++++++++++++++---------------------
 1 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/dlls/ole32/comcat.c b/dlls/ole32/comcat.c
index 20151ae..1874a8b 100644
--- a/dlls/ole32/comcat.c
+++ b/dlls/ole32/comcat.c
@@ -57,7 +57,7 @@ struct class_categories {
     LPCWSTR req_strings;
 };
 
-static LPENUMCATEGORYINFO COMCAT_IEnumCATEGORYINFO_Construct(LCID lcid);
+static IEnumCATEGORYINFO *COMCAT_IEnumCATEGORYINFO_Construct(LCID lcid);
 static LPENUMGUID COMCAT_CLSID_IEnumGUID_Construct(struct class_categories *class_categories);
 static LPENUMGUID COMCAT_CATID_IEnumGUID_Construct(REFCLSID rclsid, LPCWSTR impl_req);
 
@@ -490,7 +490,7 @@ static ULONG WINAPI COMCAT_ICatInformation_Release(LPCATINFORMATION iface)
 static HRESULT WINAPI COMCAT_ICatInformation_EnumCategories(
     LPCATINFORMATION iface,
     LCID lcid,
-    LPENUMCATEGORYINFO *ppenumCatInfo)
+    IEnumCATEGORYINFO **ppenumCatInfo)
 {
     TRACE("\n");
 
@@ -806,16 +806,21 @@ HRESULT ComCatCF_Create(REFIID riid, LPVOID *ppv)
  */
 typedef struct
 {
-    const IEnumCATEGORYINFOVtbl *lpVtbl;
+    IEnumCATEGORYINFO IEnumCATEGORYINFO_iface;
     LONG  ref;
     LCID  lcid;
     HKEY  key;
     DWORD next_index;
 } IEnumCATEGORYINFOImpl;
 
-static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_AddRef(LPENUMCATEGORYINFO iface)
+static inline IEnumCATEGORYINFOImpl *impl_from_IEnumCATEGORYINFO(IEnumCATEGORYINFO *iface)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    return CONTAINING_RECORD(iface, IEnumCATEGORYINFOImpl, IEnumCATEGORYINFO_iface);
+}
+
+static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_AddRef(IEnumCATEGORYINFO *iface)
+{
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
 
     TRACE("\n");
 
@@ -823,7 +828,7 @@ static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_AddRef(LPENUMCATEGORYINFO iface)
 }
 
 static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_QueryInterface(
-    LPENUMCATEGORYINFO iface,
+    IEnumCATEGORYINFO *iface,
     REFIID riid,
     LPVOID *ppvObj)
 {
@@ -842,9 +847,9 @@ static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_QueryInterface(
     return E_NOINTERFACE;
 }
 
-static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_Release(LPENUMCATEGORYINFO iface)
+static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_Release(IEnumCATEGORYINFO *iface)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
     ULONG ref;
 
     TRACE("\n");
@@ -859,12 +864,12 @@ static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_Release(LPENUMCATEGORYINFO iface)
 }
 
 static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Next(
-    LPENUMCATEGORYINFO iface,
+    IEnumCATEGORYINFO *iface,
     ULONG celt,
     CATEGORYINFO *rgelt,
     ULONG *pceltFetched)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
     ULONG fetched = 0;
 
     TRACE("\n");
@@ -904,10 +909,10 @@ static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Next(
 }
 
 static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Skip(
-    LPENUMCATEGORYINFO iface,
+    IEnumCATEGORYINFO *iface,
     ULONG celt)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
 
     TRACE("\n");
 
@@ -916,9 +921,9 @@ static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Skip(
     return S_OK;
 }
 
-static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Reset(LPENUMCATEGORYINFO iface)
+static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Reset(IEnumCATEGORYINFO *iface)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
 
     TRACE("\n");
 
@@ -927,10 +932,10 @@ static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Reset(LPENUMCATEGORYINFO iface)
 }
 
 static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Clone(
-    LPENUMCATEGORYINFO iface,
+    IEnumCATEGORYINFO *iface,
     IEnumCATEGORYINFO **ppenum)
 {
-    IEnumCATEGORYINFOImpl *This = (IEnumCATEGORYINFOImpl *)iface;
+    IEnumCATEGORYINFOImpl *This = impl_from_IEnumCATEGORYINFO(iface);
     static const WCHAR keyname[] = { 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n',
                                      't', ' ', 'C', 'a', 't', 'e', 'g', 'o',
                                      'r', 'i', 'e', 's', 0 };
@@ -943,14 +948,14 @@ static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Clone(
     new_this = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IEnumCATEGORYINFOImpl));
     if (new_this == NULL) return E_OUTOFMEMORY;
 
-    new_this->lpVtbl = This->lpVtbl;
+    new_this->IEnumCATEGORYINFO_iface = This->IEnumCATEGORYINFO_iface;
     new_this->ref = 1;
     new_this->lcid = This->lcid;
     /* FIXME: could we more efficiently use DuplicateHandle? */
     RegOpenKeyExW(HKEY_CLASSES_ROOT, keyname, 0, KEY_READ, &new_this->key);
     new_this->next_index = This->next_index;
 
-    *ppenum = (LPENUMCATEGORYINFO)new_this;
+    *ppenum = &new_this->IEnumCATEGORYINFO_iface;
     return S_OK;
 }
 
@@ -965,7 +970,7 @@ static const IEnumCATEGORYINFOVtbl COMCAT_IEnumCATEGORYINFO_Vtbl =
     COMCAT_IEnumCATEGORYINFO_Clone
 };
 
-static LPENUMCATEGORYINFO COMCAT_IEnumCATEGORYINFO_Construct(LCID lcid)
+static IEnumCATEGORYINFO *COMCAT_IEnumCATEGORYINFO_Construct(LCID lcid)
 {
     IEnumCATEGORYINFOImpl *This;
 
@@ -975,11 +980,11 @@ static LPENUMCATEGORYINFO COMCAT_IEnumCATEGORYINFO_Construct(LCID lcid)
                                          't', ' ', 'C', 'a', 't', 'e', 'g', 'o',
                                          'r', 'i', 'e', 's', 0 };
 
-	This->lpVtbl = &COMCAT_IEnumCATEGORYINFO_Vtbl;
+        This->IEnumCATEGORYINFO_iface.lpVtbl = &COMCAT_IEnumCATEGORYINFO_Vtbl;
 	This->lcid = lcid;
 	RegOpenKeyExW(HKEY_CLASSES_ROOT, keyname, 0, KEY_READ, &This->key);
     }
-    return (LPENUMCATEGORYINFO)This;
+    return &This->IEnumCATEGORYINFO_iface;
 }
 
 /**********************************************************************




More information about the wine-cvs mailing list