MCPcopy Create free account
hub / github.com/KhronosGroup/OpenCOLLADA / xmlTextReaderReadTree

Function xmlTextReaderReadTree

Externals/LibXML/xmlreader.c:1897–1958  ·  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

1895 * nodes to read, or -1 in case of error
1896 */
1897static int
1898xmlTextReaderReadTree(xmlTextReaderPtr reader) {
1899 if (reader->state == XML_TEXTREADER_END)
1900 return(0);
1901
1902next_node:
1903 if (reader->node == NULL) {
1904 if (reader->doc->children == NULL) {
1905 reader->state = XML_TEXTREADER_END;
1906 return(0);
1907 }
1908
1909 reader->node = reader->doc->children;
1910 reader->state = XML_TEXTREADER_START;
1911 goto found_node;
1912 }
1913
1914 if ((reader->state != XML_TEXTREADER_BACKTRACK) &&
1915 (reader->node->type != XML_DTD_NODE) &&
1916 (reader->node->type != XML_XINCLUDE_START) &&
1917 (reader->node->type != XML_ENTITY_REF_NODE)) {
1918 if (reader->node->children != NULL) {
1919 reader->node = reader->node->children;
1920 reader->depth++;
1921 reader->state = XML_TEXTREADER_START;
1922 goto found_node;
1923 }
1924
1925 if (reader->node->type == XML_ATTRIBUTE_NODE) {
1926 reader->state = XML_TEXTREADER_BACKTRACK;
1927 goto found_node;
1928 }
1929 }
1930
1931 if (reader->node->next != NULL) {
1932 reader->node = reader->node->next;
1933 reader->state = XML_TEXTREADER_START;
1934 goto found_node;
1935 }
1936
1937 if (reader->node->parent != NULL) {
1938 if ((reader->node->parent->type == XML_DOCUMENT_NODE) ||
1939 (reader->node->parent->type == XML_HTML_DOCUMENT_NODE)) {
1940 reader->state = XML_TEXTREADER_END;
1941 return(0);
1942 }
1943
1944 reader->node = reader->node->parent;
1945 reader->depth--;
1946 reader->state = XML_TEXTREADER_BACKTRACK;
1947 goto found_node;
1948 }
1949
1950 reader->state = XML_TEXTREADER_END;
1951
1952found_node:
1953 if ((reader->node->type == XML_XINCLUDE_START) ||
1954 (reader->node->type == XML_XINCLUDE_END))

Callers 1

xmlTextReaderReadFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected