storage.dll16: COM cleanup in storage.c.

Michael Stefaniuc mstefani at redhat.de
Thu Feb 24 04:21:40 CST 2011


---
 dlls/storage.dll16/storage.c |  141 ++++++++++++++++++++++--------------------
 1 files changed, 74 insertions(+), 67 deletions(-)

diff --git a/dlls/storage.dll16/storage.c b/dlls/storage.dll16/storage.c
index 8f3c602..439e223 100644
--- a/dlls/storage.dll16/storage.c
+++ b/dlls/storage.dll16/storage.c
@@ -326,8 +326,7 @@ typedef struct {
 
 typedef struct
 {
-        /* IUnknown fields */
-        const IStorage16Vtbl           *lpVtbl;
+        IStorage16                      IStorage16_iface;
         LONG                            ref;
         /* IStorage16 fields */
         SEGPTR                          thisptr; /* pointer to this struct as segmented */
@@ -1055,8 +1054,7 @@ STORAGE_get_free_pps_entry(stream_access16*str) {
 
 typedef struct
 {
-        /* IUnknown fields */
-        const IStream16Vtbl            *lpVtbl;
+        IStream16                       IStream16_iface;
         LONG                            ref;
         /* IStream16 fields */
         SEGPTR                          thisptr; /* pointer to this struct as segmented */
@@ -1066,13 +1064,17 @@ typedef struct
 	stream_access16			str;
 } IStream16Impl;
 
+static inline IStream16Impl *impl_from_IStream16(IStream16 *iface)
+{
+        return CONTAINING_RECORD(iface, IStream16Impl, IStream16_iface);
+}
+
 /******************************************************************************
  *		IStream16_QueryInterface	[STORAGE.518]
  */
-HRESULT CDECL IStream16_fnQueryInterface(
-	IStream16* iface,REFIID refiid,LPVOID *obj
-) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+HRESULT CDECL IStream16_fnQueryInterface(IStream16 *iface, REFIID refiid, void **obj)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
 	TRACE_(relay)("(%p)->(%s,%p)\n",This,debugstr_guid(refiid),obj);
 	if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) {
 		*obj = This;
@@ -1085,8 +1087,9 @@ HRESULT CDECL IStream16_fnQueryInterface(
 /******************************************************************************
  * IStream16_AddRef [STORAGE.519]
  */
-ULONG CDECL IStream16_fnAddRef(IStream16* iface) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+ULONG CDECL IStream16_fnAddRef(IStream16 *iface)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
 	return InterlockedIncrement(&This->ref);
 }
 
@@ -1147,8 +1150,9 @@ _ilockbytes16_flush(SEGPTR lockbytes) {
 /******************************************************************************
  * IStream16_Release [STORAGE.520]
  */
-ULONG CDECL IStream16_fnRelease(IStream16* iface) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+ULONG CDECL IStream16_fnRelease(IStream16 *iface)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
         ULONG ref;
 
 	if (This->str.hf)
@@ -1174,10 +1178,10 @@ ULONG CDECL IStream16_fnRelease(IStream16* iface) {
  * FIXME
  *    Does not handle 64 bits
  */
-HRESULT CDECL IStream16_fnSeek(
-	IStream16* iface,LARGE_INTEGER offset,DWORD whence,ULARGE_INTEGER *newpos
-) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+HRESULT CDECL IStream16_fnSeek(IStream16 *iface, LARGE_INTEGER offset, DWORD whence,
+	ULARGE_INTEGER *newpos)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
 	TRACE_(relay)("(%p)->([%d.%d],%d,%p)\n",This,offset.u.HighPart,offset.u.LowPart,whence,newpos);
 
 	switch (whence) {
@@ -1218,10 +1222,9 @@ HRESULT CDECL IStream16_fnSeek(
 /******************************************************************************
  *		IStream16_Read	[STORAGE.521]
  */
-HRESULT CDECL IStream16_fnRead(
-        IStream16* iface,void  *pv,ULONG cb,ULONG  *pcbRead
-) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+HRESULT CDECL IStream16_fnRead(IStream16 *iface, void *pv, ULONG cb, ULONG *pcbRead)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
 	BYTE	block[BIGSIZE];
 	ULONG	*bytesread=pcbRead,xxread;
 	int	blocknr;
@@ -1280,10 +1283,9 @@ HRESULT CDECL IStream16_fnRead(
 /******************************************************************************
  *		IStream16_Write	[STORAGE.522]
  */
-HRESULT CDECL IStream16_fnWrite(
-        IStream16* iface,const void *pv,ULONG cb,ULONG *pcbWrite
-) {
-	IStream16Impl *This = (IStream16Impl *)iface;
+HRESULT CDECL IStream16_fnWrite(IStream16 *iface, const void *pv, ULONG cb, ULONG *pcbWrite)
+{
+	IStream16Impl *This = impl_from_IStream16(iface);
 	BYTE	block[BIGSIZE];
 	ULONG	*byteswritten=pcbWrite,xxwritten;
 	int	oldsize,newsize,i,curoffset=0,lastblocknr,blocknr,cc;
@@ -1599,7 +1601,7 @@ static void _create_istream16(LPSTREAM16 *str) {
 		}
 	}
 	lpst = HeapAlloc( GetProcessHeap(), 0, sizeof(*lpst) );
-	lpst->lpVtbl	= segstrvt16;
+	lpst->IStream16_iface.lpVtbl = segstrvt16;
 	lpst->ref	= 1;
 	lpst->thisptr	= MapLS( lpst );
 	lpst->str.hf	= NULL;
@@ -1607,14 +1609,17 @@ static void _create_istream16(LPSTREAM16 *str) {
 	*str = (void*)lpst->thisptr;
 }
 
+static inline IStorage16Impl *impl_from_IStorage16(IStorage16 *iface)
+{
+        return CONTAINING_RECORD(iface, IStorage16Impl, IStorage16_iface);
+}
 
 /******************************************************************************
  *		IStorage16_QueryInterface	[STORAGE.500]
  */
-HRESULT CDECL IStorage16_fnQueryInterface(
-	IStorage16* iface,REFIID refiid,LPVOID *obj
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnQueryInterface(IStorage16 *iface, REFIID refiid, void **obj)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 
 	TRACE_(relay)("(%p)->(%s,%p)\n",This,debugstr_guid(refiid),obj);
 
@@ -1628,16 +1633,18 @@ HRESULT CDECL IStorage16_fnQueryInterface(
 /******************************************************************************
  * IStorage16_AddRef [STORAGE.501]
  */
-ULONG CDECL IStorage16_fnAddRef(IStorage16* iface) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+ULONG CDECL IStorage16_fnAddRef(IStorage16 *iface)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	return InterlockedIncrement(&This->ref);
 }
 
 /******************************************************************************
  * IStorage16_Release [STORAGE.502]
  */
-ULONG CDECL IStorage16_fnRelease(IStorage16* iface) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+ULONG CDECL IStorage16_fnRelease(IStorage16 *iface)
+{
+        IStorage16Impl *This = impl_from_IStorage16(iface);
         ULONG ref;
         ref = InterlockedDecrement(&This->ref);
         if (!ref)
@@ -1651,10 +1658,9 @@ ULONG CDECL IStorage16_fnRelease(IStorage16* iface) {
 /******************************************************************************
  * IStorage16_Stat [STORAGE.517]
  */
-HRESULT CDECL IStorage16_fnStat(
-        LPSTORAGE16 iface,STATSTG16 *pstatstg, DWORD grfStatFlag
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnStat(IStorage16 *iface, STATSTG16 *pstatstg, DWORD grfStatFlag)
+{
+        IStorage16Impl *This = impl_from_IStorage16(iface);
         DWORD len = WideCharToMultiByte( CP_ACP, 0, This->stde.pps_rawname, -1, NULL, 0, NULL, NULL );
         LPSTR nameA = HeapAlloc( GetProcessHeap(), 0, len );
 
@@ -1679,10 +1685,9 @@ HRESULT CDECL IStorage16_fnStat(
 /******************************************************************************
  *		IStorage16_Commit	[STORAGE.509]
  */
-HRESULT CDECL IStorage16_fnCommit(
-        LPSTORAGE16 iface,DWORD commitflags
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnCommit(IStorage16 *iface, DWORD commitflags)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	FIXME("(%p)->(0x%08x),STUB!\n",
 		This,commitflags
 	);
@@ -1692,8 +1697,10 @@ HRESULT CDECL IStorage16_fnCommit(
 /******************************************************************************
  * IStorage16_CopyTo [STORAGE.507]
  */
-HRESULT CDECL IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiidExclude,SNB16 SNB16Exclude,IStorage16 *pstgDest) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnCopyTo(IStorage16 *iface, DWORD ciidExclude, const IID *rgiidExclude,
+	SNB16 SNB16Exclude, IStorage16 *pstgDest)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	FIXME("IStorage16(%p)->(0x%08x,%s,%p,%p),stub!\n",
 		This,ciidExclude,debugstr_guid(rgiidExclude),SNB16Exclude,pstgDest
 	);
@@ -1704,10 +1711,10 @@ HRESULT CDECL IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID
 /******************************************************************************
  * IStorage16_CreateStorage [STORAGE.505]
  */
-HRESULT CDECL IStorage16_fnCreateStorage(
-	LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD dwStgFormat,DWORD reserved2, IStorage16 **ppstg
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnCreateStorage(IStorage16 *iface, LPCOLESTR16 pwcsName, DWORD grfMode,
+	DWORD dwStgFormat, DWORD reserved2, IStorage16 **ppstg)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	IStorage16Impl*	lpstg;
 	int		ppsent,x;
 	struct storage_pps_entry	stde;
@@ -1773,10 +1780,10 @@ HRESULT CDECL IStorage16_fnCreateStorage(
 /******************************************************************************
  *		IStorage16_CreateStream	[STORAGE.503]
  */
-HRESULT CDECL IStorage16_fnCreateStream(
-	LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved1,DWORD reserved2, IStream16 **ppstm
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnCreateStream(IStorage16 *iface, LPCOLESTR16 pwcsName, DWORD grfMode,
+	DWORD reserved1, DWORD reserved2, IStream16 **ppstm)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	IStream16Impl*	lpstr;
 	int		ppsent,x;
 	struct storage_pps_entry	stde;
@@ -1837,10 +1844,10 @@ HRESULT CDECL IStorage16_fnCreateStream(
 /******************************************************************************
  *		IStorage16_OpenStorage	[STORAGE.506]
  */
-HRESULT CDECL IStorage16_fnOpenStorage(
-	LPSTORAGE16 iface,LPCOLESTR16 pwcsName, IStorage16 *pstgPrio, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16 **ppstg
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnOpenStorage(IStorage16 *iface, LPCOLESTR16 pwcsName,
+	IStorage16 *pstgPrio, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16 **ppstg)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	IStream16Impl*	lpstg;
 	WCHAR		name[33];
 	int		newpps;
@@ -1862,12 +1869,12 @@ HRESULT CDECL IStorage16_fnOpenStorage(
         MultiByteToWideChar( CP_ACP, 0, pwcsName, -1, name, sizeof(name)/sizeof(WCHAR));
 	newpps = STORAGE_look_for_named_pps(&lpstg->str,This->stde.pps_dir,name);
 	if (newpps==-1) {
-		IStream16_fnRelease((IStream16*)lpstg);
+		IStream16_fnRelease(&lpstg->IStream16_iface);
 		return E_FAIL;
 	}
 
 	if (1!=STORAGE_get_pps_entry(&lpstg->str,newpps,&(lpstg->stde))) {
-		IStream16_fnRelease((IStream16*)lpstg);
+		IStream16_fnRelease(&lpstg->IStream16_iface);
 		return E_FAIL;
 	}
 	lpstg->ppsent		= newpps;
@@ -1877,10 +1884,10 @@ HRESULT CDECL IStorage16_fnOpenStorage(
 /******************************************************************************
  * IStorage16_OpenStream [STORAGE.504]
  */
-HRESULT CDECL IStorage16_fnOpenStream(
-	LPSTORAGE16 iface,LPCOLESTR16 pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream16 **ppstm
-) {
-	IStorage16Impl *This = (IStorage16Impl *)iface;
+HRESULT CDECL IStorage16_fnOpenStream(IStorage16 *iface, LPCOLESTR16 pwcsName, void *reserved1,
+	DWORD grfMode, DWORD reserved2, IStream16 **ppstm)
+{
+	IStorage16Impl *This = impl_from_IStorage16(iface);
 	IStream16Impl*	lpstr;
 	WCHAR		name[33];
 	int		newpps;
@@ -1902,12 +1909,12 @@ HRESULT CDECL IStorage16_fnOpenStream(
         MultiByteToWideChar( CP_ACP, 0, pwcsName, -1, name, sizeof(name)/sizeof(WCHAR));
 	newpps = STORAGE_look_for_named_pps(&lpstr->str,This->stde.pps_dir,name);
 	if (newpps==-1) {
-		IStream16_fnRelease((IStream16*)lpstr);
+		IStream16_fnRelease(&lpstr->IStream16_iface);
 		return E_FAIL;
 	}
 
 	if (1!=STORAGE_get_pps_entry(&lpstr->str,newpps,&(lpstr->stde))) {
-		IStream16_fnRelease((IStream16*)lpstr);
+		IStream16_fnRelease(&lpstr->IStream16_iface);
 		return E_FAIL;
 	}
 	lpstr->offset.u.LowPart		= 0;
@@ -1973,7 +1980,7 @@ static void _create_istorage16(LPSTORAGE16 *stg) {
 		}
 	}
 	lpst = HeapAlloc( GetProcessHeap(), 0, sizeof(*lpst) );
-	lpst->lpVtbl	= segstvt16;
+	lpst->IStorage16_iface.lpVtbl = segstvt16;
 	lpst->str.hf	= NULL;
 	lpst->str.lockbytes	= 0;
 	lpst->ref	= 1;
@@ -2024,7 +2031,7 @@ HRESULT WINAPI StgCreateDocFile16(
 		i++;
 	}
 	if (ret!=1) {
-		IStorage16_fnRelease((IStorage16*)lpstg); /* will remove it */
+		IStorage16_fnRelease(&lpstg->IStorage16_iface);
 		return E_FAIL;
 	}
 
@@ -2079,7 +2086,7 @@ HRESULT WINAPI StgOpenStorage16(
 		i++;
 	}
 	if (ret!=1) {
-		IStorage16_fnRelease((IStorage16*)lpstg); /* will remove it */
+		IStorage16_fnRelease(&lpstg->IStorage16_iface);
 		return E_FAIL;
 	}
 	return S_OK;
@@ -2161,7 +2168,7 @@ HRESULT WINAPI StgOpenStorageOnILockBytes16(
 		i++;
 	}
 	if (ret!=1) {
-		IStorage16_fnRelease((IStorage16*)lpstg); /* will remove it */
+		IStorage16_fnRelease(&lpstg->IStorage16_iface);
 		return E_FAIL;
 	}
 	return S_OK;
-- 
1.7.4



More information about the wine-patches mailing list