webservices: Implement WsWriteXmlBuffer.
authorHans Leidekker <hans@codeweavers.com>
Thu, 21 Jan 2016 14:27:56 +0000 (15:27 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 21 Jan 2016 16:26:18 +0000 (01:26 +0900)
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
dlls/webservices/webservices.spec
dlls/webservices/writer.c

index 5a2babafcac5ad331220e0c15da028215bd0220a..42f5b635c41851cde1058ab770c76129bfa224a7 100644 (file)
 @ stdcall WsWriteText(ptr ptr ptr)
 @ stub WsWriteType
 @ stub WsWriteValue
-@ stub WsWriteXmlBuffer
+@ stdcall WsWriteXmlBuffer(ptr ptr ptr)
 @ stub WsWriteXmlBufferToBytes
 @ stub WsWriteXmlnsAttribute
 @ stdcall WsXmlStringEquals(ptr ptr ptr)
index d36793a28ba603f4b0f5912ece0b889fe927d484..398d65101d86b39a3c4d61c0087738dc4ba699ce 100644 (file)
@@ -773,3 +773,22 @@ HRESULT WINAPI WsWriteText( WS_XML_WRITER *handle, const WS_XML_TEXT *text, WS_E
     elem->attributes[elem->attributeCount - 1]->value = (WS_XML_TEXT *)dst;
     return S_OK;
 }
+
+/**************************************************************************
+ *          WsWriteXmlBuffer           [webservices.@]
+ */
+HRESULT WINAPI WsWriteXmlBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer, WS_ERROR *error )
+{
+    struct writer *writer = (struct writer *)handle;
+    struct xmlbuf *xmlbuf = (struct xmlbuf *)buffer;
+    HRESULT hr;
+
+    TRACE( "%p %p %p\n", handle, buffer, error );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    if (!writer || !xmlbuf) return E_INVALIDARG;
+
+    if ((hr = write_grow_buffer( writer, xmlbuf->size )) != S_OK) return hr;
+    write_bytes( writer, xmlbuf->ptr, xmlbuf->size );
+    return S_OK;
+}