diff --git a/include/webservices.h b/include/webservices.h index d9d10525430..7d9a0e2ed78 100644 --- a/include/webservices.h +++ b/include/webservices.h @@ -27,6 +27,7 @@ typedef struct _WS_ERROR WS_ERROR; typedef struct _WS_HEAP WS_HEAP; typedef struct _WS_XML_BUFFER WS_XML_BUFFER; typedef struct _WS_XML_READER WS_XML_READER; +typedef struct _WS_XML_WRITER WS_XML_WRITER; struct _WS_STRUCT_DESCRIPTION; struct _WS_XML_STRING; @@ -80,6 +81,44 @@ typedef struct _WS_XML_READER_PROPERTY { ULONG valueSize; } WS_XML_READER_PROPERTY; +typedef enum { + WS_XML_WRITER_PROPERTY_MAX_DEPTH, + WS_XML_WRITER_PROPERTY_ALLOW_FRAGMENT, + WS_XML_WRITER_PROPERTY_MAX_ATTRIBUTES, + WS_XML_WRITER_PROPERTY_WRITE_DECLARATION, + WS_XML_WRITER_PROPERTY_INDENT, + WS_XML_WRITER_PROPERTY_BUFFER_TRIM_SIZE, + WS_XML_WRITER_PROPERTY_CHARSET, + WS_XML_WRITER_PROPERTY_BUFFERS, + WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE, + WS_XML_WRITER_PROPERTY_BYTES, + WS_XML_WRITER_PROPERTY_IN_ATTRIBUTE, + WS_XML_WRITER_PROPERTY_MAX_MIME_PARTS_BUFFER_SIZE, + WS_XML_WRITER_PROPERTY_INITIAL_BUFFER, + WS_XML_WRITER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES, + WS_XML_WRITER_PROPERTY_MAX_NAMESPACES, + WS_XML_WRITER_PROPERTY_BYTES_WRITTEN, + WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE, + WS_XML_WRITER_PROPERTY_COMPRESS_EMPTY_ELEMENTS, + WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS +} WS_XML_WRITER_PROPERTY_ID; + +typedef struct _WS_XML_WRITER_PROPERTY { + WS_XML_WRITER_PROPERTY_ID id; + void *value; + ULONG valueSize; +} WS_XML_WRITER_PROPERTY; + +typedef struct _WS_BYTES { + ULONG length; + BYTE *bytes; +} WS_BYTES; + +typedef struct _WS_BUFFERS { + ULONG bufferCount; + WS_BYTES *buffers; +} WS_BUFFERS; + typedef enum { WS_XML_READER_ENCODING_TYPE_TEXT = 1, WS_XML_READER_ENCODING_TYPE_BINARY = 2, @@ -91,6 +130,17 @@ typedef struct _WS_XML_READER_ENCODING { WS_XML_READER_ENCODING_TYPE encodingType; } WS_XML_READER_ENCODING; +typedef enum { + WS_XML_WRITER_ENCODING_TYPE_TEXT = 1, + WS_XML_WRITER_ENCODING_TYPE_BINARY = 2, + WS_XML_WRITER_ENCODING_TYPE_MTOM = 3, + WS_XML_WRITER_ENCODING_TYPE_RAW = 4 +} WS_XML_WRITER_ENCODING_TYPE; + +typedef struct _WS_XML_WRITER_ENCODING { + WS_XML_WRITER_ENCODING_TYPE encodingType; +} WS_XML_WRITER_ENCODING; + typedef enum { WS_CHARSET_AUTO, WS_CHARSET_UTF8, @@ -103,21 +153,39 @@ typedef struct _WS_XML_READER_TEXT_ENCODING { WS_CHARSET charSet; } WS_XML_READER_TEXT_ENCODING; +typedef struct _WS_XML_WRITER_TEXT_ENCODING { + WS_XML_WRITER_ENCODING encoding; + WS_CHARSET charSet; +} WS_XML_WRITER_TEXT_ENCODING; + typedef enum { WS_XML_READER_INPUT_TYPE_BUFFER = 1, WS_XML_READER_INPUT_TYPE_STREAM = 2 } WS_XML_READER_INPUT_TYPE; +typedef enum { + WS_XML_WRITER_OUTPUT_TYPE_BUFFER = 1, + WS_XML_WRITER_OUTPUT_TYPE_STREAM = 2 +} WS_XML_WRITER_OUTPUT_TYPE; + typedef struct _WS_XML_READER_INPUT { WS_XML_READER_INPUT_TYPE inputType; } WS_XML_READER_INPUT; +typedef struct _WS_XML_WRITER_OUTPUT { + WS_XML_WRITER_OUTPUT_TYPE outputType; +} WS_XML_WRITER_OUTPUT; + typedef struct _WS_XML_READER_BUFFER_INPUT { WS_XML_READER_INPUT input; void *encodedData; ULONG encodedDataSize; } WS_XML_READER_BUFFER_INPUT; +typedef struct _WS_XML_WRITER_BUFFER_OUTPUT { + WS_XML_WRITER_OUTPUT output; +} WS_XML_WRITER_BUFFER_OUTPUT; + typedef enum { WS_SHORT_CALLBACK, WS_LONG_CALLBACK @@ -207,6 +275,13 @@ typedef enum { WS_READ_NILLABLE_VALUE = 5 } WS_READ_OPTION; +typedef enum { + WS_WRITE_REQUIRED_VALUE = 1, + WS_WRITE_REQUIRED_POINTER = 2, + WS_WRITE_NILLABLE_VALUE = 3, + WS_WRITE_NILLABLE_POINTER = 4 +} WS_WRITE_OPTION; + typedef enum { WS_TYPE_ATTRIBUTE_FIELD_MAPPING, WS_ATTRIBUTE_FIELD_MAPPING, @@ -233,6 +308,15 @@ typedef struct _WS_ITEM_RANGE { ULONG maxItemCount; } WS_ITEM_RANGE; +enum +{ + WS_FIELD_POINTER = 0x1, + WS_FIELD_OPTIONAL = 0x2, + WS_FIELD_NILLABLE = 0x4, + WS_FIELD_NILLABLE_ITEM = 0x8, + WS_FIELD_OTHER_NAMESPACE = 0x10 +}; + typedef struct _WS_FIELD_DESCRIPTION { WS_FIELD_MAPPING mapping; WS_XML_STRING *localName; @@ -248,6 +332,13 @@ typedef struct _WS_FIELD_DESCRIPTION { WS_ITEM_RANGE *itemRange; } WS_FIELD_DESCRIPTION; +enum +{ + WS_STRUCT_ABSTRACT = 0x1, + WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT = 0x2, + WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES = 0x4 +}; + typedef struct _WS_STRUCT_DESCRIPTION { ULONG size; ULONG alignment; @@ -353,18 +444,21 @@ typedef struct _WS_XML_NODE_POSITION { HRESULT WINAPI WsCreateError(const WS_ERROR_PROPERTY*, ULONG, WS_ERROR**); HRESULT WINAPI WsCreateHeap(SIZE_T, SIZE_T, const WS_HEAP_PROPERTY*, ULONG, WS_HEAP**, WS_ERROR*); HRESULT WINAPI WsCreateReader(const WS_XML_READER_PROPERTY*, ULONG, WS_XML_READER**, WS_ERROR*); +HRESULT WINAPI WsCreateWriter(const WS_XML_WRITER_PROPERTY*, ULONG, WS_XML_WRITER**, WS_ERROR*); HRESULT WINAPI WsFillReader(WS_XML_READER*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*); HRESULT WINAPI WsFindAttribute(WS_XML_READER*, const WS_XML_STRING*, const WS_XML_STRING*, BOOL, ULONG*, WS_ERROR*); void WINAPI WsFreeError(WS_ERROR*); void WINAPI WsFreeHeap(WS_HEAP*); void WINAPI WsFreeReader(WS_XML_READER*); +void WINAPI WsFreeWriter(WS_XML_WRITER*); HRESULT WINAPI WsGetErrorProperty(WS_ERROR*, WS_ERROR_PROPERTY_ID, void*, ULONG); HRESULT WINAPI WsGetErrorString(WS_ERROR*, ULONG, WS_STRING*); HRESULT WINAPI WsGetHeapProperty(WS_HEAP*, WS_HEAP_PROPERTY_ID, void*, ULONG, WS_ERROR*); HRESULT WINAPI WsGetReaderNode(WS_XML_READER*, const WS_XML_NODE**, WS_ERROR*); HRESULT WINAPI WsGetReaderPosition(WS_XML_READER*, WS_XML_NODE_POSITION*, WS_ERROR*); HRESULT WINAPI WsGetReaderProperty(WS_XML_READER*, WS_XML_READER_PROPERTY_ID, void*, ULONG, WS_ERROR*); +HRESULT WINAPI WsGetWriterProperty(WS_XML_WRITER*, WS_XML_WRITER_PROPERTY_ID, void*, ULONG, WS_ERROR*); HRESULT WINAPI WsGetXmlAttribute(WS_XML_READER*, const WS_XML_STRING*, WS_HEAP*, WCHAR**, ULONG*, WS_ERROR*); HRESULT WINAPI WsReadAttribute(WS_XML_READER*, const WS_ATTRIBUTE_DESCRIPTION*, WS_READ_OPTION, @@ -380,7 +474,10 @@ HRESULT WINAPI WsReadType(WS_XML_READER*, WS_TYPE_MAPPING, WS_TYPE, const void*, HRESULT WINAPI WsSetErrorProperty(WS_ERROR*, WS_ERROR_PROPERTY_ID, const void*, ULONG); HRESULT WINAPI WsSetInput(WS_XML_READER*, const WS_XML_READER_ENCODING*, const WS_XML_READER_INPUT*, const WS_XML_READER_PROPERTY*, ULONG, WS_ERROR*); - +HRESULT WINAPI WsSetOutput(WS_XML_WRITER*, const WS_XML_WRITER_ENCODING*, const WS_XML_WRITER_OUTPUT*, + const WS_XML_WRITER_PROPERTY*, ULONG, WS_ERROR*); +HRESULT WINAPI WsWriteType(WS_XML_WRITER*, WS_TYPE_MAPPING, WS_TYPE, const void*, WS_WRITE_OPTION, + const void*, ULONG, WS_ERROR*); #define WS_S_ASYNC 0x003d0000 #define WS_S_END 0x003d0001