From 9b58a3993f57c8012c71c2a188481fbfbd8105ad Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Wed, 10 Feb 2016 15:02:03 +0100 Subject: [PATCH] webservices: Implement WS_MOVE_TO_NEXT_ELEMENT in the reader. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/webservices/reader.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c index 87887ce3fde..e613a450bf9 100644 --- a/dlls/webservices/reader.c +++ b/dlls/webservices/reader.c @@ -1344,6 +1344,24 @@ static BOOL move_to_root_element( struct reader *reader ) return FALSE; } +static BOOL move_to_next_element( struct reader *reader ) +{ + struct list *ptr; + struct node *node = reader->current; + + while ((ptr = list_next( &node->parent->children, &node->entry ))) + { + struct node *next = LIST_ENTRY( ptr, struct node, entry ); + if (next->hdr.node.nodeType == WS_XML_NODE_TYPE_ELEMENT) + { + reader->current = next; + return TRUE; + } + node = next; + } + return FALSE; +} + static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found ) { struct list *ptr; @@ -1361,6 +1379,10 @@ static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found success = move_to_root_element( reader ); break; + case WS_MOVE_TO_NEXT_ELEMENT: + success = move_to_next_element( reader ); + break; + case WS_MOVE_TO_FIRST_NODE: if ((ptr = list_head( &reader->current->parent->children ))) { -- 2.11.4.GIT