MCPcopy Create free account
hub / github.com/Kitware/VTK / xmlTextReaderReadTree

Function xmlTextReaderReadTree

ThirdParty/libxml2/vtklibxml2/xmlreader.c:1946–2007  ·  view source on GitHub ↗

* xmlTextReaderReadTree: * @reader: the xmlTextReaderPtr used * * Moves the position of the current instance to the next node in * the stream, exposing its properties. * * Returns 1 if the node was read successfully, 0 if there is no more * nodes to read, or -1 in case of error */

Source from the content-addressed store, hash-verified

1944 * nodes to read, or -1 in case of error
1945 */
1946static int
1947xmlTextReaderReadTree(xmlTextReaderPtr reader) {
1948 if (reader->state == XML_TEXTREADER_END)
1949 return(0);
1950
1951next_node:
1952 if (reader->node == NULL) {
1953 if (reader->doc->children == NULL) {
1954 reader->state = XML_TEXTREADER_END;
1955 return(0);
1956 }
1957
1958 reader->node = reader->doc->children;
1959 reader->state = XML_TEXTREADER_START;
1960 goto found_node;
1961 }
1962
1963 if ((reader->state != XML_TEXTREADER_BACKTRACK) &&
1964 (reader->node->type != XML_DTD_NODE) &&
1965 (reader->node->type != XML_XINCLUDE_START) &&
1966 (reader->node->type != XML_ENTITY_REF_NODE)) {
1967 if (reader->node->children != NULL) {
1968 reader->node = reader->node->children;
1969 reader->depth++;
1970 reader->state = XML_TEXTREADER_START;
1971 goto found_node;
1972 }
1973
1974 if (reader->node->type == XML_ATTRIBUTE_NODE) {
1975 reader->state = XML_TEXTREADER_BACKTRACK;
1976 goto found_node;
1977 }
1978 }
1979
1980 if (reader->node->next != NULL) {
1981 reader->node = reader->node->next;
1982 reader->state = XML_TEXTREADER_START;
1983 goto found_node;
1984 }
1985
1986 if (reader->node->parent != NULL) {
1987 if ((reader->node->parent->type == XML_DOCUMENT_NODE) ||
1988 (reader->node->parent->type == XML_HTML_DOCUMENT_NODE)) {
1989 reader->state = XML_TEXTREADER_END;
1990 return(0);
1991 }
1992
1993 reader->node = reader->node->parent;
1994 reader->depth--;
1995 reader->state = XML_TEXTREADER_BACKTRACK;
1996 goto found_node;
1997 }
1998
1999 reader->state = XML_TEXTREADER_END;
2000
2001found_node:
2002 if ((reader->node->type == XML_XINCLUDE_START) ||
2003 (reader->node->type == XML_XINCLUDE_END))

Callers 1

xmlTextReaderReadFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected