[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-patches
Subject:    OLE32, storage: eliminate forward declarations, make functions static
From:       Mike McCormack <mike () codeweavers ! com>
Date:       2005-03-31 11:25:39
Message-ID: 424BDE33.4040203 () codeweavers ! com
[Download RAW message or body]

ChangeLog:
* eliminate forward declarations, make functions static

["ole32-storage-vtbl.diff" (text/x-patch)]

Index: dlls/ole32/stg_prop.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/stg_prop.c,v
retrieving revision 1.4
diff -u -p -r1.4 stg_prop.c
--- dlls/ole32/stg_prop.c	17 Mar 2005 20:50:35 -0000	1.4
+++ dlls/ole32/stg_prop.c	31 Mar 2005 11:25:54 -0000
@@ -1251,7 +1251,7 @@ static HRESULT WINAPI IPropertySetStorag
     void** ppvObject)
 {
     _ICOM_THIS_From_IPropertySetStorage(StorageImpl, ppstg);
-    return StorageBaseImpl_QueryInterface( (IStorage*)This, riid, ppvObject );
+    return IStorage_QueryInterface( (IStorage*)This, riid, ppvObject );
 }
 
 /************************************************************************
@@ -1263,7 +1263,7 @@ static ULONG WINAPI IPropertySetStorage_
     IPropertySetStorage *ppstg)
 {
     _ICOM_THIS_From_IPropertySetStorage(StorageImpl, ppstg);
-    return StorageBaseImpl_AddRef( (IStorage*)This );
+    return IStorage_AddRef( (IStorage*)This );
 }
 
 /************************************************************************
@@ -1275,7 +1275,7 @@ static ULONG WINAPI IPropertySetStorage_
     IPropertySetStorage *ppstg)
 {
     _ICOM_THIS_From_IPropertySetStorage(StorageImpl, ppstg);
-    return StorageBaseImpl_Release( (IStorage*)This );
+    return IStorage_Release( (IStorage*)This );
 }
 
 /************************************************************************
Index: dlls/ole32/stg_stream.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/stg_stream.c,v
retrieving revision 1.25
diff -u -p -r1.25 stg_stream.c
--- dlls/ole32/stg_stream.c	7 Mar 2005 12:24:42 -0000	1.25
+++ dlls/ole32/stg_stream.c	31 Mar 2005 11:25:54 -0000
@@ -45,89 +45,6 @@
 WINE_DEFAULT_DEBUG_CHANNEL(storage);
 
 
-/*
- * Virtual function table for the StgStreamImpl class.
- */
-static IStreamVtbl StgStreamImpl_Vtbl =
-{
-    StgStreamImpl_QueryInterface,
-    StgStreamImpl_AddRef,
-    StgStreamImpl_Release,
-    StgStreamImpl_Read,
-    StgStreamImpl_Write,
-    StgStreamImpl_Seek,
-    StgStreamImpl_SetSize,
-    StgStreamImpl_CopyTo,
-    StgStreamImpl_Commit,
-    StgStreamImpl_Revert,
-    StgStreamImpl_LockRegion,
-    StgStreamImpl_UnlockRegion,
-    StgStreamImpl_Stat,
-    StgStreamImpl_Clone
-};
-
-/******************************************************************************
-** StgStreamImpl implementation
-*/
-
-/***
- * This is the constructor for the StgStreamImpl class.
- *
- * Params:
- *    parentStorage - Pointer to the storage that contains the stream to open
- *    ownerProperty - Index of the property that points to this stream.
- */
-StgStreamImpl* StgStreamImpl_Construct(
-		StorageBaseImpl* parentStorage,
-    DWORD            grfMode,
-    ULONG            ownerProperty)
-{
-  StgStreamImpl* newStream;
-
-  newStream = HeapAlloc(GetProcessHeap(), 0, sizeof(StgStreamImpl));
-
-  if (newStream!=0)
-  {
-    /*
-     * Set-up the virtual function table and reference count.
-     */
-    newStream->lpVtbl    = &StgStreamImpl_Vtbl;
-    newStream->ref       = 0;
-
-    /*
-     * We want to nail-down the reference to the storage in case the
-     * stream out-lives the storage in the client application.
-     */
-    newStream->parentStorage = parentStorage;
-    IStorage_AddRef((IStorage*)newStream->parentStorage);
-
-    newStream->grfMode = grfMode;
-    newStream->ownerProperty = ownerProperty;
-
-    /*
-     * Start the stream at the beginning.
-     */
-    newStream->currentPosition.u.HighPart = 0;
-    newStream->currentPosition.u.LowPart = 0;
-
-    /*
-     * Initialize the rest of the data.
-     */
-    newStream->streamSize.u.HighPart = 0;
-    newStream->streamSize.u.LowPart  = 0;
-    newStream->bigBlockChain       = 0;
-    newStream->smallBlockChain     = 0;
-
-    /*
-     * Read the size from the property and determine if the blocks forming
-     * this stream are large or small.
-     */
-    StgStreamImpl_OpenBlockChain(newStream);
-  }
-
-  return newStream;
-}
-
 /***
  * This is the destructor of the StgStreamImpl class.
  *
@@ -135,7 +52,7 @@ StgStreamImpl* StgStreamImpl_Construct(
  * class. The pointer passed-in to this function will be freed and will not
  * be valid anymore.
  */
-void StgStreamImpl_Destroy(StgStreamImpl* This)
+static void StgStreamImpl_Destroy(StgStreamImpl* This)
 {
   TRACE("(%p)\n", This);
 
@@ -170,7 +87,7 @@ void StgStreamImpl_Destroy(StgStreamImpl
  * This implements the IUnknown method QueryInterface for this
  * class
  */
-HRESULT WINAPI StgStreamImpl_QueryInterface(
+static HRESULT WINAPI StgStreamImpl_QueryInterface(
 		  IStream*     iface,
 		  REFIID         riid,	      /* [in] */
 		  void**         ppvObject)   /* [iid_is][out] */
@@ -191,11 +108,8 @@ HRESULT WINAPI StgStreamImpl_QueryInterf
   /*
    * Compare the riid with the interface IDs implemented by this object.
    */
-  if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0)
-  {
-    *ppvObject = (IStream*)This;
-  }
-  else if (memcmp(&IID_IStream, riid, sizeof(IID_IStream)) == 0)
+  if (IsEqualGUID(&IID_IUnknown, riid)||
+      IsEqualGUID(&IID_IStream, riid))
   {
     *ppvObject = (IStream*)This;
   }
@@ -210,7 +124,7 @@ HRESULT WINAPI StgStreamImpl_QueryInterf
    * Query Interface always increases the reference count by one when it is
    * successful
    */
-  StgStreamImpl_AddRef(iface);
+  IStream_AddRef(iface);
 
   return S_OK;
 }
@@ -219,7 +133,7 @@ HRESULT WINAPI StgStreamImpl_QueryInterf
  * This implements the IUnknown method AddRef for this
  * class
  */
-ULONG WINAPI StgStreamImpl_AddRef(
+static ULONG WINAPI StgStreamImpl_AddRef(
 		IStream* iface)
 {
   StgStreamImpl* const This=(StgStreamImpl*)iface;
@@ -230,7 +144,7 @@ ULONG WINAPI StgStreamImpl_AddRef(
  * This implements the IUnknown method Release for this
  * class
  */
-ULONG WINAPI StgStreamImpl_Release(
+static ULONG WINAPI StgStreamImpl_Release(
 		IStream* iface)
 {
   StgStreamImpl* const This=(StgStreamImpl*)iface;
@@ -255,7 +169,7 @@ ULONG WINAPI StgStreamImpl_Release(
  * that describes the stream.
  * If the stream's size is null, no chain is opened.
  */
-void StgStreamImpl_OpenBlockChain(
+static void StgStreamImpl_OpenBlockChain(
         StgStreamImpl* This)
 {
   StgProperty    curProperty;
@@ -325,7 +239,7 @@ void StgStreamImpl_OpenBlockChain(
  *
  * See the documentation of ISequentialStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Read(
+static HRESULT WINAPI StgStreamImpl_Read(
 		  IStream*     iface,
 		  void*          pv,        /* [length_is][size_is][out] */
 		  ULONG          cb,        /* [in] */
@@ -426,7 +340,7 @@ end:
  *
  * See the documentation of ISequentialStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Write(
+static HRESULT WINAPI StgStreamImpl_Write(
 	          IStream*     iface,
 		  const void*    pv,          /* [size_is][in] */
 		  ULONG          cb,          /* [in] */
@@ -526,7 +440,7 @@ HRESULT WINAPI StgStreamImpl_Write(
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Seek(
+static HRESULT WINAPI StgStreamImpl_Seek(
 		  IStream*      iface,
 		  LARGE_INTEGER   dlibMove,         /* [in] */
 		  DWORD           dwOrigin,         /* [in] */
@@ -588,7 +502,7 @@ HRESULT WINAPI StgStreamImpl_Seek(
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_SetSize(
+static HRESULT WINAPI StgStreamImpl_SetSize(
 				     IStream*      iface,
 				     ULARGE_INTEGER  libNewSize)   /* [in] */
 {
@@ -695,7 +609,7 @@ HRESULT WINAPI StgStreamImpl_SetSize(
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_CopyTo(
+static HRESULT WINAPI StgStreamImpl_CopyTo(
 				    IStream*      iface,
 				    IStream*      pstm,         /* [unique][in] */
 				    ULARGE_INTEGER  cb,           /* [in] */
@@ -780,7 +694,7 @@ HRESULT WINAPI StgStreamImpl_CopyTo(
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Commit(
+static HRESULT WINAPI StgStreamImpl_Commit(
 		  IStream*      iface,
 		  DWORD           grfCommitFlags)  /* [in] */
 {
@@ -795,13 +709,13 @@ HRESULT WINAPI StgStreamImpl_Commit(
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Revert(
+static HRESULT WINAPI StgStreamImpl_Revert(
 		  IStream* iface)
 {
   return S_OK;
 }
 
-HRESULT WINAPI StgStreamImpl_LockRegion(
+static HRESULT WINAPI StgStreamImpl_LockRegion(
 					IStream*     iface,
 					ULARGE_INTEGER libOffset,   /* [in] */
 					ULARGE_INTEGER cb,          /* [in] */
@@ -811,7 +725,7 @@ HRESULT WINAPI StgStreamImpl_LockRegion(
   return E_NOTIMPL;
 }
 
-HRESULT WINAPI StgStreamImpl_UnlockRegion(
+static HRESULT WINAPI StgStreamImpl_UnlockRegion(
 					  IStream*     iface,
 					  ULARGE_INTEGER libOffset,   /* [in] */
 					  ULARGE_INTEGER cb,          /* [in] */
@@ -829,7 +743,7 @@ HRESULT WINAPI StgStreamImpl_UnlockRegio
  *
  * See the documentation of IStream for more info.
  */
-HRESULT WINAPI StgStreamImpl_Stat(
+static HRESULT WINAPI StgStreamImpl_Stat(
 		  IStream*     iface,
 		  STATSTG*       pstatstg,     /* [out] */
 		  DWORD          grfStatFlag)  /* [in] */
@@ -872,7 +786,7 @@ HRESULT WINAPI StgStreamImpl_Stat(
  * should be basically as simple as creating a new stream with the same
  * parent etc and positioning its seek cursor.
  */
-HRESULT WINAPI StgStreamImpl_Clone(
+static HRESULT WINAPI StgStreamImpl_Clone(
 				   IStream*     iface,
 				   IStream**    ppstm) /* [out] */
 {
@@ -900,4 +814,87 @@ HRESULT WINAPI StgStreamImpl_Clone(
   assert (SUCCEEDED(hres));
 
   return S_OK;
+}
+
+/*
+ * Virtual function table for the StgStreamImpl class.
+ */
+static IStreamVtbl StgStreamImpl_Vtbl =
+{
+    StgStreamImpl_QueryInterface,
+    StgStreamImpl_AddRef,
+    StgStreamImpl_Release,
+    StgStreamImpl_Read,
+    StgStreamImpl_Write,
+    StgStreamImpl_Seek,
+    StgStreamImpl_SetSize,
+    StgStreamImpl_CopyTo,
+    StgStreamImpl_Commit,
+    StgStreamImpl_Revert,
+    StgStreamImpl_LockRegion,
+    StgStreamImpl_UnlockRegion,
+    StgStreamImpl_Stat,
+    StgStreamImpl_Clone
+};
+
+/******************************************************************************
+** StgStreamImpl implementation
+*/
+
+/***
+ * This is the constructor for the StgStreamImpl class.
+ *
+ * Params:
+ *    parentStorage - Pointer to the storage that contains the stream to open
+ *    ownerProperty - Index of the property that points to this stream.
+ */
+StgStreamImpl* StgStreamImpl_Construct(
+		StorageBaseImpl* parentStorage,
+    DWORD            grfMode,
+    ULONG            ownerProperty)
+{
+  StgStreamImpl* newStream;
+
+  newStream = HeapAlloc(GetProcessHeap(), 0, sizeof(StgStreamImpl));
+
+  if (newStream!=0)
+  {
+    /*
+     * Set-up the virtual function table and reference count.
+     */
+    newStream->lpVtbl    = &StgStreamImpl_Vtbl;
+    newStream->ref       = 0;
+
+    /*
+     * We want to nail-down the reference to the storage in case the
+     * stream out-lives the storage in the client application.
+     */
+    newStream->parentStorage = parentStorage;
+    IStorage_AddRef((IStorage*)newStream->parentStorage);
+
+    newStream->grfMode = grfMode;
+    newStream->ownerProperty = ownerProperty;
+
+    /*
+     * Start the stream at the beginning.
+     */
+    newStream->currentPosition.u.HighPart = 0;
+    newStream->currentPosition.u.LowPart = 0;
+
+    /*
+     * Initialize the rest of the data.
+     */
+    newStream->streamSize.u.HighPart = 0;
+    newStream->streamSize.u.LowPart  = 0;
+    newStream->bigBlockChain       = 0;
+    newStream->smallBlockChain     = 0;
+
+    /*
+     * Read the size from the property and determine if the blocks forming
+     * this stream are large or small.
+     */
+    StgStreamImpl_OpenBlockChain(newStream);
+  }
+
+  return newStream;
 }
Index: dlls/ole32/storage32.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/storage32.c,v
retrieving revision 1.80
diff -u -p -r1.80 storage32.c
--- dlls/ole32/storage32.c	29 Mar 2005 18:56:22 -0000	1.80
+++ dlls/ole32/storage32.c	31 Mar 2005 11:25:55 -0000
@@ -157,70 +157,6 @@ static DWORD GetShareModeFromSTGM(DWORD 
 static DWORD GetAccessModeFromSTGM(DWORD stgm);
 static DWORD GetCreationModeFromSTGM(DWORD stgm);
 
-/*
- * Virtual function table for the IStorage32Impl class.
- */
-static IStorageVtbl Storage32Impl_Vtbl =
-{
-    StorageBaseImpl_QueryInterface,
-    StorageBaseImpl_AddRef,
-    StorageBaseImpl_Release,
-    StorageBaseImpl_CreateStream,
-    StorageBaseImpl_OpenStream,
-    StorageImpl_CreateStorage,
-    StorageBaseImpl_OpenStorage,
-    StorageImpl_CopyTo,
-    StorageImpl_MoveElementTo,
-    StorageImpl_Commit,
-    StorageImpl_Revert,
-    StorageBaseImpl_EnumElements,
-    StorageImpl_DestroyElement,
-    StorageBaseImpl_RenameElement,
-    StorageImpl_SetElementTimes,
-    StorageBaseImpl_SetClass,
-    StorageImpl_SetStateBits,
-    StorageImpl_Stat
-};
-
-/*
- * Virtual function table for the Storage32InternalImpl class.
- */
-static IStorageVtbl Storage32InternalImpl_Vtbl =
-  {
-    StorageBaseImpl_QueryInterface,
-    StorageBaseImpl_AddRef,
-    StorageBaseImpl_Release,
-    StorageBaseImpl_CreateStream,
-    StorageBaseImpl_OpenStream,
-    StorageImpl_CreateStorage,
-    StorageBaseImpl_OpenStorage,
-    StorageImpl_CopyTo,
-    StorageImpl_MoveElementTo,
-    StorageInternalImpl_Commit,
-    StorageInternalImpl_Revert,
-    StorageBaseImpl_EnumElements,
-    StorageImpl_DestroyElement,
-    StorageBaseImpl_RenameElement,
-    StorageImpl_SetElementTimes,
-    StorageBaseImpl_SetClass,
-    StorageImpl_SetStateBits,
-    StorageBaseImpl_Stat
-};
-
-/*
- * Virtual function table for the IEnumSTATSTGImpl class.
- */
-static IEnumSTATSTGVtbl IEnumSTATSTGImpl_Vtbl =
-{
-    IEnumSTATSTGImpl_QueryInterface,
-    IEnumSTATSTGImpl_AddRef,
-    IEnumSTATSTGImpl_Release,
-    IEnumSTATSTGImpl_Next,
-    IEnumSTATSTGImpl_Skip,
-    IEnumSTATSTGImpl_Reset,
-    IEnumSTATSTGImpl_Clone
-};
-
 extern IPropertySetStorageVtbl IPropertySetStorage_Vtbl;
 
 
@@ -280,7 +216,7 @@ HRESULT WINAPI StorageBaseImpl_QueryInte
    * Query Interface always increases the reference count by one when it is
    * successful
    */
-  StorageBaseImpl_AddRef(iface);
+  IStorage_AddRef(iface);
 
   return S_OK;
 }
@@ -435,7 +371,7 @@ HRESULT WINAPI StorageBaseImpl_OpenStrea
        * Since we are returning a pointer to the interface, we have to
        * nail down the reference.
        */
-      StgStreamImpl_AddRef(*ppstm);
+      IStream_AddRef(*ppstm);
 
       res = S_OK;
       goto end;
@@ -622,7 +558,7 @@ HRESULT WINAPI StorageBaseImpl_EnumEleme
      * Don't forget to nail down a reference to the new object before
      * returning it.
      */
-    IEnumSTATSTGImpl_AddRef(*ppenum);
+    IEnumSTATSTG_AddRef(*ppenum);
 
     return S_OK;
   }
@@ -735,7 +671,7 @@ HRESULT WINAPI StorageBaseImpl_RenameEle
     return STG_E_FILEALREADYEXISTS;
   }
 
-  IEnumSTATSTGImpl_Reset((IEnumSTATSTG*)propertyEnumeration);
+  IEnumSTATSTG_Reset((IEnumSTATSTG*)propertyEnumeration);
 
   /*
    * Search the enumeration for the old property name
@@ -834,7 +770,7 @@ HRESULT WINAPI StorageBaseImpl_RenameEle
      * Invoke Destroy to get rid of the ole property and automatically redo
      * the linking of it's previous and next members...
      */
-    StorageImpl_DestroyElement((IStorage*)This->ancestorStorage, pwcsOldName);
+    IStorage_DestroyElement((IStorage*)This->ancestorStorage, pwcsOldName);
 
   }
   else
@@ -996,7 +932,7 @@ HRESULT WINAPI StorageBaseImpl_CreateStr
      * Since we are returning a pointer to the interface, we have to nail down
      * the reference.
      */
-    StgStreamImpl_AddRef(*ppstm);
+    IStream_AddRef(*ppstm);
   }
   else
   {
@@ -2200,6 +2136,31 @@ HRESULT WINAPI StorageImpl_SetStateBits(
   return E_NOTIMPL;
 }
 
+/*
+ * Virtual function table for the IStorage32Impl class.
+ */
+static IStorageVtbl Storage32Impl_Vtbl =
+{
+    StorageBaseImpl_QueryInterface,
+    StorageBaseImpl_AddRef,
+    StorageBaseImpl_Release,
+    StorageBaseImpl_CreateStream,
+    StorageBaseImpl_OpenStream,
+    StorageImpl_CreateStorage,
+    StorageBaseImpl_OpenStorage,
+    StorageImpl_CopyTo,
+    StorageImpl_MoveElementTo,
+    StorageImpl_Commit,
+    StorageImpl_Revert,
+    StorageBaseImpl_EnumElements,
+    StorageImpl_DestroyElement,
+    StorageBaseImpl_RenameElement,
+    StorageImpl_SetElementTimes,
+    StorageBaseImpl_SetClass,
+    StorageImpl_SetStateBits,
+    StorageImpl_Stat
+};
+
 HRESULT StorageImpl_Construct(
   StorageImpl* This,
   HANDLE       hFile,
@@ -3472,48 +3433,6 @@ BlockChainStream* Storage32Impl_SmallBlo
   return bigBlockChain;
 }
 
-/******************************************************************************
-** Storage32InternalImpl implementation
-*/
-
-StorageInternalImpl* StorageInternalImpl_Construct(
-  StorageImpl* ancestorStorage,
-  ULONG          rootPropertyIndex)
-{
-  StorageInternalImpl* newStorage;
-
-  /*
-   * Allocate space for the new storage object
-   */
-  newStorage = HeapAlloc(GetProcessHeap(), 0, sizeof(StorageInternalImpl));
-
-  if (newStorage!=0)
-  {
-    memset(newStorage, 0, sizeof(StorageInternalImpl));
-
-    /*
-     * Initialize the virtual function table.
-     */
-    newStorage->base.lpVtbl = &Storage32InternalImpl_Vtbl;
-    newStorage->base.v_destructor = &StorageInternalImpl_Destroy;
-
-    /*
-     * Keep the ancestor storage pointer and nail a reference to it.
-     */
-    newStorage->base.ancestorStorage = ancestorStorage;
-    StorageBaseImpl_AddRef((IStorage*)(newStorage->base.ancestorStorage));
-
-    /*
-     * Keep the index of the root property set for this storage,
-     */
-    newStorage->base.rootPropertySetIndex = rootPropertyIndex;
-
-    return newStorage;
-  }
-
-  return 0;
-}
-
 void StorageInternalImpl_Destroy( StorageBaseImpl *iface)
 {
   StorageInternalImpl* This = (StorageInternalImpl*) iface;
@@ -3549,52 +3468,6 @@ HRESULT WINAPI StorageInternalImpl_Rever
   return S_OK;
 }
 
-/******************************************************************************
-** IEnumSTATSTGImpl implementation
-*/
-
-IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct(
-  StorageImpl* parentStorage,
-  ULONG          firstPropertyNode)
-{
-  IEnumSTATSTGImpl* newEnumeration;
-
-  newEnumeration = HeapAlloc(GetProcessHeap(), 0, sizeof(IEnumSTATSTGImpl));
-
-  if (newEnumeration!=0)
-  {
-    /*
-     * Set-up the virtual function table and reference count.
-     */
-    newEnumeration->lpVtbl    = &IEnumSTATSTGImpl_Vtbl;
-    newEnumeration->ref       = 0;
-
-    /*
-     * We want to nail-down the reference to the storage in case the
-     * enumeration out-lives the storage in the client application.
-     */
-    newEnumeration->parentStorage = parentStorage;
-    IStorage_AddRef((IStorage*)newEnumeration->parentStorage);
-
-    newEnumeration->firstPropertyNode   = firstPropertyNode;
-
-    /*
-     * Initialize the search stack
-     */
-    newEnumeration->stackSize    = 0;
-    newEnumeration->stackMaxSize = ENUMSTATSGT_SIZE_INCREMENT;
-    newEnumeration->stackToVisit =
-      HeapAlloc(GetProcessHeap(), 0, sizeof(ULONG)*ENUMSTATSGT_SIZE_INCREMENT);
-
-    /*
-     * Make sure the current node of the iterator is the first one.
-     */
-    IEnumSTATSTGImpl_Reset((IEnumSTATSTG*)newEnumeration);
-  }
-
-  return newEnumeration;
-}
-
 void IEnumSTATSTGImpl_Destroy(IEnumSTATSTGImpl* This)
 {
   IStorage_Release((IStorage*)This->parentStorage);
@@ -3623,28 +3496,15 @@ HRESULT WINAPI IEnumSTATSTGImpl_QueryInt
   /*
    * Compare the riid with the interface IDs implemented by this object.
    */
-  if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0)
-  {
-    *ppvObject = (IEnumSTATSTG*)This;
-  }
-  else if (memcmp(&IID_IStorage, riid, sizeof(IID_IEnumSTATSTG)) == 0)
+  if (IsEqualGUID(&IID_IUnknown, riid) ||
+      IsEqualGUID(&IID_IStorage, riid))
   {
     *ppvObject = (IEnumSTATSTG*)This;
+    IEnumSTATSTG_AddRef((IEnumSTATSTG*)This);
+    return S_OK;
   }
 
-  /*
-   * Check that we obtained an interface.
-   */
-  if ((*ppvObject)==0)
-    return E_NOINTERFACE;
-
-  /*
-   * Query Interface always increases the reference count by one when it is
-   * successful
-   */
-  IEnumSTATSTGImpl_AddRef((IEnumSTATSTG*)This);
-
-  return S_OK;
+  return E_NOINTERFACE;
 }
 
 ULONG   WINAPI IEnumSTATSTGImpl_AddRef(
@@ -4060,6 +3920,133 @@ ULONG IEnumSTATSTGImpl_PopSearchNode(
     This->stackSize--;
 
   return topNode;
+}
+
+/*
+ * Virtual function table for the IEnumSTATSTGImpl class.
+ */
+static IEnumSTATSTGVtbl IEnumSTATSTGImpl_Vtbl =
+{
+    IEnumSTATSTGImpl_QueryInterface,
+    IEnumSTATSTGImpl_AddRef,
+    IEnumSTATSTGImpl_Release,
+    IEnumSTATSTGImpl_Next,
+    IEnumSTATSTGImpl_Skip,
+    IEnumSTATSTGImpl_Reset,
+    IEnumSTATSTGImpl_Clone
+};
+
+/******************************************************************************
+** IEnumSTATSTGImpl implementation
+*/
+
+IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct(
+  StorageImpl* parentStorage,
+  ULONG          firstPropertyNode)
+{
+  IEnumSTATSTGImpl* newEnumeration;
+
+  newEnumeration = HeapAlloc(GetProcessHeap(), 0, sizeof(IEnumSTATSTGImpl));
+
+  if (newEnumeration!=0)
+  {
+    /*
+     * Set-up the virtual function table and reference count.
+     */
+    newEnumeration->lpVtbl    = &IEnumSTATSTGImpl_Vtbl;
+    newEnumeration->ref       = 0;
+
+    /*
+     * We want to nail-down the reference to the storage in case the
+     * enumeration out-lives the storage in the client application.
+     */
+    newEnumeration->parentStorage = parentStorage;
+    IStorage_AddRef((IStorage*)newEnumeration->parentStorage);
+
+    newEnumeration->firstPropertyNode   = firstPropertyNode;
+
+    /*
+     * Initialize the search stack
+     */
+    newEnumeration->stackSize    = 0;
+    newEnumeration->stackMaxSize = ENUMSTATSGT_SIZE_INCREMENT;
+    newEnumeration->stackToVisit =
+      HeapAlloc(GetProcessHeap(), 0, sizeof(ULONG)*ENUMSTATSGT_SIZE_INCREMENT);
+
+    /*
+     * Make sure the current node of the iterator is the first one.
+     */
+    IEnumSTATSTGImpl_Reset((IEnumSTATSTG*)newEnumeration);
+  }
+
+  return newEnumeration;
+}
+
+/*
+ * Virtual function table for the Storage32InternalImpl class.
+ */
+static IStorageVtbl Storage32InternalImpl_Vtbl =
+{
+    StorageBaseImpl_QueryInterface,
+    StorageBaseImpl_AddRef,
+    StorageBaseImpl_Release,
+    StorageBaseImpl_CreateStream,
+    StorageBaseImpl_OpenStream,
+    StorageImpl_CreateStorage,
+    StorageBaseImpl_OpenStorage,
+    StorageImpl_CopyTo,
+    StorageImpl_MoveElementTo,
+    StorageInternalImpl_Commit,
+    StorageInternalImpl_Revert,
+    StorageBaseImpl_EnumElements,
+    StorageImpl_DestroyElement,
+    StorageBaseImpl_RenameElement,
+    StorageImpl_SetElementTimes,
+    StorageBaseImpl_SetClass,
+    StorageImpl_SetStateBits,
+    StorageBaseImpl_Stat
+};
+
+/******************************************************************************
+** Storage32InternalImpl implementation
+*/
+
+StorageInternalImpl* StorageInternalImpl_Construct(
+  StorageImpl* ancestorStorage,
+  ULONG          rootPropertyIndex)
+{
+  StorageInternalImpl* newStorage;
+
+  /*
+   * Allocate space for the new storage object
+   */
+  newStorage = HeapAlloc(GetProcessHeap(), 0, sizeof(StorageInternalImpl));
+
+  if (newStorage!=0)
+  {
+    memset(newStorage, 0, sizeof(StorageInternalImpl));
+
+    /*
+     * Initialize the virtual function table.
+     */
+    newStorage->base.lpVtbl = &Storage32InternalImpl_Vtbl;
+    newStorage->base.v_destructor = &StorageInternalImpl_Destroy;
+
+    /*
+     * Keep the ancestor storage pointer and nail a reference to it.
+     */
+    newStorage->base.ancestorStorage = ancestorStorage;
+    StorageBaseImpl_AddRef((IStorage*)(newStorage->base.ancestorStorage));
+
+    /*
+     * Keep the index of the root property set for this storage,
+     */
+    newStorage->base.rootPropertySetIndex = rootPropertyIndex;
+
+    return newStorage;
+  }
+
+  return 0;
 }
 
 /******************************************************************************
Index: dlls/ole32/storage32.h
===================================================================
RCS file: /home/wine/wine/dlls/ole32/storage32.h,v
retrieving revision 1.20
diff -u -p -r1.20 storage32.h
--- dlls/ole32/storage32.h	23 Mar 2005 13:15:19 -0000	1.20
+++ dlls/ole32/storage32.h	31 Mar 2005 11:25:55 -0000
@@ -240,66 +240,6 @@ struct StorageBaseImpl
 };
 
 
-/*
- * Prototypes for the methods of the Storage32BaseImpl class.
- */
-HRESULT WINAPI StorageBaseImpl_QueryInterface(
-            IStorage*        iface,
-            REFIID             riid,
-            void**             ppvObject);
-
-ULONG WINAPI StorageBaseImpl_AddRef(
-            IStorage*        iface);
-
-ULONG WINAPI StorageBaseImpl_Release(
-            IStorage*        iface);
-
-HRESULT WINAPI StorageBaseImpl_OpenStream(
-            IStorage*        iface,
-            const OLECHAR*   pwcsName,  /* [string][in] */
-            void*              reserved1, /* [unique][in] */
-            DWORD              grfMode,   /* [in] */
-            DWORD              reserved2, /* [in] */
-            IStream**        ppstm);    /* [out] */
-
-HRESULT WINAPI StorageBaseImpl_OpenStorage(
-            IStorage*        iface,
-            const OLECHAR*   pwcsName,      /* [string][unique][in] */
-            IStorage*        pstgPriority,  /* [unique][in] */
-            DWORD              grfMode,       /* [in] */
-            SNB              snbExclude,    /* [unique][in] */
-            DWORD              reserved,      /* [in] */
-            IStorage**       ppstg);        /* [out] */
-
-HRESULT WINAPI StorageBaseImpl_EnumElements(
-            IStorage*        iface,
-            DWORD              reserved1, /* [in] */
-            void*              reserved2, /* [size_is][unique][in] */
-            DWORD              reserved3, /* [in] */
-            IEnumSTATSTG**     ppenum);   /* [out] */
-
-HRESULT WINAPI StorageBaseImpl_Stat(
-            IStorage*        iface,
-            STATSTG*           pstatstg,     /* [out] */
-            DWORD              grfStatFlag); /* [in] */
-
-HRESULT WINAPI StorageBaseImpl_RenameElement(
-            IStorage*        iface,
-            const OLECHAR*   pwcsOldName,  /* [string][in] */
-            const OLECHAR*   pwcsNewName); /* [string][in] */
-
-HRESULT WINAPI StorageBaseImpl_CreateStream(
-            IStorage*        iface,
-            const OLECHAR*   pwcsName,  /* [string][in] */
-            DWORD              grfMode,   /* [in] */
-            DWORD              reserved1, /* [in] */
-            DWORD              reserved2, /* [in] */
-            IStream**        ppstm);    /* [out] */
-
-HRESULT WINAPI StorageBaseImpl_SetClass(
-            IStorage*        iface,
-            REFCLSID           clsid);  /* [in] */
-
 /****************************************************************************
  * Storage32Impl definitions.
  *
@@ -351,59 +291,6 @@ struct StorageImpl
   BigBlockFile* bigBlockFile;
 };
 
-/*
- * Method declaration for the Storage32Impl class
- */
-
-HRESULT WINAPI StorageImpl_CreateStorage(
-            IStorage*      iface,
-            const OLECHAR* pwcsName,  /* [string][in] */
-            DWORD            grfMode,   /* [in] */
-            DWORD            dwStgFmt,  /* [in] */
-            DWORD            reserved2, /* [in] */
-            IStorage**     ppstg);    /* [out] */
-
-HRESULT WINAPI StorageImpl_CopyTo(
-            IStorage*      iface,
-            DWORD          ciidExclude,  /* [in] */
-            const IID*     rgiidExclude, /* [size_is][unique][in] */
-            SNB            snbExclude, /* [unique][in] */
-            IStorage*    pstgDest);    /* [unique][in] */
-
-HRESULT WINAPI StorageImpl_MoveElementTo(
-            IStorage*      iface,
-            const OLECHAR* pwcsName,    /* [string][in] */
-            IStorage*      pstgDest,    /* [unique][in] */
-            const OLECHAR* pwcsNewName, /* [string][in] */
-            DWORD            grfFlags);   /* [in] */
-
-HRESULT WINAPI StorageImpl_Commit(
-            IStorage*      iface,
-            DWORD          grfCommitFlags); /* [in] */
-
-HRESULT WINAPI StorageImpl_Revert(
-            IStorage*      iface);
-
-HRESULT WINAPI StorageImpl_DestroyElement(
-            IStorage*      iface,
-            const OLECHAR* pwcsName); /* [string][in] */
-
-HRESULT WINAPI StorageImpl_SetElementTimes(
-            IStorage*      iface,
-            const OLECHAR* pwcsName, /* [string][in] */
-            const FILETIME*  pctime,   /* [in] */
-            const FILETIME*  patime,   /* [in] */
-            const FILETIME*  pmtime);  /* [in] */
-
-HRESULT WINAPI StorageImpl_SetStateBits(
-            IStorage*      iface,
-            DWORD          grfStateBits, /* [in] */
-            DWORD          grfMask);     /* [in] */
-
-HRESULT WINAPI StorageImpl_Stat(IStorage* iface,
-                                STATSTG*  pstatstg,     /* [out] */
-                                DWORD     grfStatFlag); /* [in] */
-
 void StorageImpl_Destroy(
 	    StorageBaseImpl* This);
 
@@ -551,37 +438,6 @@ struct IEnumSTATSTGImpl
 #define ENUMSTATSGT_SIZE_INCREMENT 10
 };
 
-/*
- * Method definitions for the IEnumSTATSTGImpl class.
- */
-HRESULT WINAPI IEnumSTATSTGImpl_QueryInterface(
-	    IEnumSTATSTG*     iface,
-	    REFIID            riid,
-	    void**            ppvObject);
-
-ULONG WINAPI IEnumSTATSTGImpl_AddRef(
-            IEnumSTATSTG*     iface);
-
-ULONG WINAPI IEnumSTATSTGImpl_Release(
-            IEnumSTATSTG*     iface);
-
-HRESULT WINAPI IEnumSTATSTGImpl_Next(
-            IEnumSTATSTG*     iface,
-	    ULONG             celt,
-	    STATSTG*          rgelt,
-	    ULONG*            pceltFetched);
-
-HRESULT WINAPI IEnumSTATSTGImpl_Skip(
-            IEnumSTATSTG*     iface,
-	    ULONG             celt);
-
-HRESULT WINAPI IEnumSTATSTGImpl_Reset(
-            IEnumSTATSTG* iface);
-
-HRESULT WINAPI IEnumSTATSTGImpl_Clone(
-            IEnumSTATSTG*     iface,
-	    IEnumSTATSTG**    ppenum);
-
 IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct(
             StorageImpl* This,
 	    ULONG          firstPropertyNode);
@@ -666,80 +522,6 @@ StgStreamImpl* StgStreamImpl_Construct(
 		StorageBaseImpl* parentStorage,
     DWORD            grfMode,
     ULONG            ownerProperty);
-
-void StgStreamImpl_Destroy(
-                StgStreamImpl* This);
-
-void StgStreamImpl_OpenBlockChain(
-                StgStreamImpl* This);
-
-HRESULT WINAPI StgStreamImpl_QueryInterface(
-		IStream*      iface,
-		REFIID         riid,		/* [in] */
-		void**         ppvObject);  /* [iid_is][out] */
-
-ULONG WINAPI StgStreamImpl_AddRef(
-		IStream*      iface);
-
-ULONG WINAPI StgStreamImpl_Release(
-		IStream*      iface);
-
-HRESULT WINAPI StgStreamImpl_Read(
-	        IStream*      iface,
-		void*          pv,        /* [length_is][size_is][out] */
-		ULONG          cb,        /* [in] */
-		ULONG*         pcbRead);  /* [out] */
-
-HRESULT WINAPI StgStreamImpl_Write(
-		IStream*      iface,
-		const void*    pv,          /* [size_is][in] */
-		ULONG          cb,          /* [in] */
-		ULONG*         pcbWritten); /* [out] */
-
-HRESULT WINAPI StgStreamImpl_Seek(
-		IStream*      iface,
-		LARGE_INTEGER   dlibMove,         /* [in] */
-		DWORD           dwOrigin,         /* [in] */
-		ULARGE_INTEGER* plibNewPosition); /* [out] */
-
-HRESULT WINAPI StgStreamImpl_SetSize(
-	        IStream*      iface,
-		ULARGE_INTEGER  libNewSize);  /* [in] */
-
-HRESULT WINAPI StgStreamImpl_CopyTo(
-		IStream*      iface,
-		IStream*      pstm,         /* [unique][in] */
-		ULARGE_INTEGER  cb,           /* [in] */
-		ULARGE_INTEGER* pcbRead,      /* [out] */
-		ULARGE_INTEGER* pcbWritten);  /* [out] */
-
-HRESULT WINAPI StgStreamImpl_Commit(
-	    	IStream*      iface,
-		DWORD           grfCommitFlags); /* [in] */
-
-HRESULT WINAPI StgStreamImpl_Revert(
-		IStream*  iface);
-
-HRESULT WINAPI StgStreamImpl_LockRegion(
-		IStream*     iface,
-		ULARGE_INTEGER libOffset,   /* [in] */
-		ULARGE_INTEGER cb,          /* [in] */
-		DWORD          dwLockType); /* [in] */
-
-HRESULT WINAPI StgStreamImpl_UnlockRegion(
-		IStream*     iface,
-		ULARGE_INTEGER libOffset,   /* [in] */
-	        ULARGE_INTEGER cb,          /* [in] */
-		DWORD          dwLockType); /* [in] */
-
-HRESULT WINAPI StgStreamImpl_Stat(
-		IStream*     iface,
-	        STATSTG*       pstatstg,     /* [out] */
-	        DWORD          grfStatFlag); /* [in] */
-
-HRESULT WINAPI StgStreamImpl_Clone(
-		IStream*     iface,
-		IStream**    ppstm);       /* [out] */
 
 
 /********************************************************************************


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic