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

Function xmlTextReaderNextTree

ThirdParty/libxml2/vtklibxml2/xmlreader.c:1875–1934  ·  view source on GitHub ↗

* * * Operating on a preparsed tree * * * ************************************************************************/

Source from the content-addressed store, hash-verified

1873 * *
1874 ************************************************************************/
1875static int
1876xmlTextReaderNextTree(xmlTextReaderPtr reader)
1877{
1878 if (reader == NULL)
1879 return(-1);
1880
1881 if (reader->state == XML_TEXTREADER_END)
1882 return(0);
1883
1884 if (reader->node == NULL) {
1885 if (reader->doc->children == NULL) {
1886 reader->state = XML_TEXTREADER_END;
1887 return(0);
1888 }
1889
1890 reader->node = reader->doc->children;
1891 reader->state = XML_TEXTREADER_START;
1892 return(1);
1893 }
1894
1895 if (reader->state != XML_TEXTREADER_BACKTRACK) {
1896 /* Here removed traversal to child, because we want to skip the subtree,
1897 replace with traversal to sibling to skip subtree */
1898 if (reader->node->next != 0) {
1899 /* Move to sibling if present,skipping sub-tree */
1900 reader->node = reader->node->next;
1901 reader->state = XML_TEXTREADER_START;
1902 return(1);
1903 }
1904
1905 /* if reader->node->next is NULL mean no subtree for current node,
1906 so need to move to sibling of parent node if present */
1907 reader->state = XML_TEXTREADER_BACKTRACK;
1908 /* This will move to parent if present */
1909 xmlTextReaderRead(reader);
1910 }
1911
1912 if (reader->node->next != 0) {
1913 reader->node = reader->node->next;
1914 reader->state = XML_TEXTREADER_START;
1915 return(1);
1916 }
1917
1918 if (reader->node->parent != 0) {
1919 if (reader->node->parent->type == XML_DOCUMENT_NODE) {
1920 reader->state = XML_TEXTREADER_END;
1921 return(0);
1922 }
1923
1924 reader->node = reader->node->parent;
1925 reader->depth--;
1926 reader->state = XML_TEXTREADER_BACKTRACK;
1927 /* Repeat process to move to sibling of parent node if present */
1928 xmlTextReaderNextTree(reader);
1929 }
1930
1931 reader->state = XML_TEXTREADER_END;
1932

Callers 2

xmlTextReaderNextFunction · 0.85
xmlTextReaderNextSiblingFunction · 0.85

Calls 1

xmlTextReaderReadFunction · 0.85

Tested by

no test coverage detected