Hans Leidekker : webservices: Implement WsWriteXmlBufferToBytes.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jan 21 11:22:06 CST 2016


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Jan 21 15:27:57 2016 +0100

webservices: Implement WsWriteXmlBufferToBytes.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/webservices.spec |  2 +-
 dlls/webservices/writer.c         | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec
index 42f5b63..fe9eb6c 100644
--- a/dlls/webservices/webservices.spec
+++ b/dlls/webservices/webservices.spec
@@ -188,6 +188,6 @@
 @ stub WsWriteType
 @ stub WsWriteValue
 @ stdcall WsWriteXmlBuffer(ptr ptr ptr)
-@ stub WsWriteXmlBufferToBytes
+@ stdcall WsWriteXmlBufferToBytes(ptr ptr ptr ptr long ptr ptr ptr ptr)
 @ stub WsWriteXmlnsAttribute
 @ stdcall WsXmlStringEquals(ptr ptr ptr)
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index 398d651..0178978 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -792,3 +792,41 @@ HRESULT WINAPI WsWriteXmlBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer, W
     write_bytes( writer, xmlbuf->ptr, xmlbuf->size );
     return S_OK;
 }
+
+/**************************************************************************
+ *          WsWriteXmlBufferToBytes		[webservices.@]
+ */
+HRESULT WINAPI WsWriteXmlBufferToBytes( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer,
+                                        const WS_XML_WRITER_ENCODING *encoding,
+                                        const WS_XML_WRITER_PROPERTY *properties, ULONG count,
+                                        WS_HEAP *heap, void **bytes, ULONG *size, WS_ERROR *error )
+{
+    struct writer *writer = (struct writer *)handle;
+    struct xmlbuf *xmlbuf = (struct xmlbuf *)buffer;
+    HRESULT hr;
+    char *buf;
+    ULONG i;
+
+    TRACE( "%p %p %p %p %u %p %p %p %p\n", handle, buffer, encoding, properties, count, heap,
+           bytes, size, error );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    if (!writer || !xmlbuf || !heap || !bytes) return E_INVALIDARG;
+
+    if (encoding && encoding->encodingType != WS_XML_WRITER_ENCODING_TYPE_TEXT)
+    {
+        FIXME( "encoding type %u not supported\n", encoding->encodingType );
+        return E_NOTIMPL;
+    }
+
+    for (i = 0; i < count; i++)
+    {
+        hr = set_writer_prop( writer, properties[i].id, properties[i].value, properties[i].valueSize );
+        if (hr != S_OK) return hr;
+    }
+
+    if (!(buf = ws_alloc( heap, xmlbuf->size ))) return WS_E_QUOTA_EXCEEDED;
+    memcpy( buf, xmlbuf->ptr, xmlbuf->size );
+    *bytes = buf;
+    return S_OK;
+}




More information about the wine-cvs mailing list