From 5c4a061f394314d7cdf2e309187e2a38cba4aa3f Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Wed, 10 Feb 2016 15:02:05 +0100 Subject: [PATCH] webservices: Implement WS_MOVE_TO_CHILD_ELEMENT in the reader. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/webservices/reader.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c index 19aa1af6e31..5b0217f2a73 100644 --- a/dlls/webservices/reader.c +++ b/dlls/webservices/reader.c @@ -1380,6 +1380,31 @@ static BOOL move_to_prev_element( struct reader *reader ) return FALSE; } +static BOOL move_to_child_element( struct reader *reader ) +{ + struct list *ptr; + struct node *node; + + if (!(ptr = list_head( &reader->current->children ))) return FALSE; + node = LIST_ENTRY( ptr, struct node, entry ); + if (node->hdr.node.nodeType == WS_XML_NODE_TYPE_ELEMENT) + { + reader->current = node; + return TRUE; + } + while ((ptr = list_next( &reader->current->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; @@ -1405,6 +1430,10 @@ static HRESULT read_move_to( struct reader *reader, WS_MOVE_TO move, BOOL *found success = move_to_prev_element( reader ); break; + case WS_MOVE_TO_CHILD_ELEMENT: + success = move_to_child_element( reader ); + break; + case WS_MOVE_TO_FIRST_NODE: if ((ptr = list_head( &reader->current->parent->children ))) { -- 2.11.4.GIT