Module: wine Branch: master Commit: 8c3bf0e95e8a9ab2f4b3396f0d3d97524098dfd4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8c3bf0e95e8a9ab2f4b3396f0d...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Oct 14 13:01:07 2015 +0200
webservices: Implement WsSetOutput.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/webservices/webservices.spec | 2 +- dlls/webservices/writer.c | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-)
diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec index 0a77d45..15c2c89 100644 --- a/dlls/webservices/webservices.spec +++ b/dlls/webservices/webservices.spec @@ -154,7 +154,7 @@ @ stub WsSetInputToBuffer @ stub WsSetListenerProperty @ stub WsSetMessageProperty -@ stub WsSetOutput +@ stdcall WsSetOutput(ptr ptr ptr ptr long ptr) @ stub WsSetOutputToBuffer @ stub WsSetReaderPosition @ stub WsSetWriterPosition diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index 51711e4..620cc46 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -57,6 +57,7 @@ writer_props[] =
struct writer { + WS_XML_WRITER_OUTPUT_TYPE output_type; ULONG prop_count; WS_XML_WRITER_PROPERTY prop[sizeof(writer_props)/sizeof(writer_props[0])]; }; @@ -162,5 +163,57 @@ HRESULT WINAPI WsGetWriterProperty( WS_XML_WRITER *handle, WS_XML_WRITER_PROPERT TRACE( "%p %u %p %u %p\n", handle, id, buf, size, error ); if (error) FIXME( "ignoring error parameter\n" );
+ if (!writer->output_type) return WS_E_INVALID_OPERATION; return get_writer_prop( writer, id, buf, size ); } + +/************************************************************************** + * WsSetOutput [webservices.@] + */ +HRESULT WINAPI WsSetOutput( WS_XML_WRITER *handle, const WS_XML_WRITER_ENCODING *encoding, + const WS_XML_WRITER_OUTPUT *output, const WS_XML_WRITER_PROPERTY *properties, + ULONG count, WS_ERROR *error ) +{ + struct writer *writer = (struct writer *)handle; + HRESULT hr; + ULONG i; + + TRACE( "%p %p %p %p %u %p\n", handle, encoding, output, properties, count, error ); + if (error) FIXME( "ignoring error parameter\n" ); + + if (!writer) return E_INVALIDARG; + + switch (encoding->encodingType) + { + case WS_XML_WRITER_ENCODING_TYPE_TEXT: + { + WS_XML_WRITER_TEXT_ENCODING *text = (WS_XML_WRITER_TEXT_ENCODING *)encoding; + if (text->charSet != WS_CHARSET_UTF8) + { + FIXME( "charset %u not supported\n", text->charSet ); + return E_NOTIMPL; + } + break; + } + default: + FIXME( "encoding type %u not supported\n", encoding->encodingType ); + return E_NOTIMPL; + } + switch (output->outputType) + { + case WS_XML_WRITER_OUTPUT_TYPE_BUFFER: + writer->output_type = WS_XML_WRITER_OUTPUT_TYPE_BUFFER; + break; + default: + FIXME( "output type %u not supported\n", output->outputType ); + 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; + } + + return S_OK; +}