Huw Davies : ole32: Implement IEnum*_Next marshallers.

Alexandre Julliard julliard at winehq.org
Tue Oct 28 10:01:56 CDT 2008


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Oct 27 15:44:07 2008 +0000

ole32: Implement IEnum*_Next marshallers.

---

 dlls/ole32/usrmarshal.c |   84 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 60 insertions(+), 24 deletions(-)

diff --git a/dlls/ole32/usrmarshal.c b/dlls/ole32/usrmarshal.c
index 9996891..e504485 100644
--- a/dlls/ole32/usrmarshal.c
+++ b/dlls/ole32/usrmarshal.c
@@ -2010,8 +2010,10 @@ HRESULT CALLBACK IEnumUnknown_Next_Proxy(
     IUnknown **rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumUnknown_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumUnknown_Next_Stub(
@@ -2020,8 +2022,12 @@ HRESULT __RPC_STUB IEnumUnknown_Next_Stub(
     IUnknown **rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumUnknown_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy(
@@ -2062,8 +2068,10 @@ HRESULT CALLBACK IEnumMoniker_Next_Proxy(
     IMoniker **rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumMoniker_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumMoniker_Next_Stub(
@@ -2072,8 +2080,12 @@ HRESULT __RPC_STUB IEnumMoniker_Next_Stub(
     IMoniker **rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumMoniker_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 BOOL CALLBACK IRunnableObject_IsRunning_Proxy(
@@ -2142,8 +2154,10 @@ HRESULT CALLBACK IEnumString_Next_Proxy(
     LPOLESTR *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumString_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumString_Next_Stub(
@@ -2152,8 +2166,12 @@ HRESULT __RPC_STUB IEnumString_Next_Stub(
     LPOLESTR *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumString_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 HRESULT CALLBACK ISequentialStream_Read_Proxy(
@@ -2244,8 +2262,10 @@ HRESULT CALLBACK IEnumSTATSTG_Next_Proxy(
     STATSTG *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumSTATSTG_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub(
@@ -2254,8 +2274,12 @@ HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub(
     STATSTG *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumSTATSTG_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 HRESULT CALLBACK IStorage_OpenStream_Proxy(
@@ -2422,8 +2446,10 @@ HRESULT CALLBACK IEnumSTATDATA_Next_Proxy(
     STATDATA *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumSTATDATA_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub(
@@ -2432,8 +2458,12 @@ HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub(
     STATDATA *rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumSTATDATA_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 void CALLBACK IAdviseSink_OnDataChange_Proxy(
@@ -2646,8 +2676,10 @@ HRESULT CALLBACK IEnumOLEVERB_Next_Proxy(
     LPOLEVERB rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    ULONG fetched;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    if (!pceltFetched) pceltFetched = &fetched;
+    return IEnumOLEVERB_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
 }
 
 HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub(
@@ -2656,8 +2688,12 @@ HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub(
     LPOLEVERB rgelt,
     ULONG *pceltFetched)
 {
-    FIXME(":stub\n");
-    return E_NOTIMPL;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
+    *pceltFetched = 0;
+    hr = IEnumOLEVERB_Next(This, celt, rgelt, pceltFetched);
+    if (hr == S_OK) *pceltFetched = celt;
+    return hr;
 }
 
 HRESULT CALLBACK IViewObject_Draw_Proxy(




More information about the wine-cvs mailing list