| 6833 | */ |
| 6834 | |
| 6835 | int |
| 6836 | xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names, |
| 6837 | int max) { |
| 6838 | xmlValidCtxt vctxt; |
| 6839 | int nb_valid_elements = 0; |
| 6840 | const xmlChar *elements[256]={0}; |
| 6841 | int nb_elements = 0, i; |
| 6842 | const xmlChar *name; |
| 6843 | |
| 6844 | xmlNode *ref_node; |
| 6845 | xmlNode *parent; |
| 6846 | xmlNode *test_node; |
| 6847 | |
| 6848 | xmlNode *prev_next; |
| 6849 | xmlNode *next_prev; |
| 6850 | xmlNode *parent_childs; |
| 6851 | xmlNode *parent_last; |
| 6852 | |
| 6853 | xmlElement *element_desc; |
| 6854 | |
| 6855 | if (prev == NULL && next == NULL) |
| 6856 | return(-1); |
| 6857 | |
| 6858 | if (names == NULL) return(-1); |
| 6859 | if (max <= 0) return(-1); |
| 6860 | |
| 6861 | memset(&vctxt, 0, sizeof (xmlValidCtxt)); |
| 6862 | vctxt.error = xmlNoValidityErr; /* this suppresses err/warn output */ |
| 6863 | |
| 6864 | nb_valid_elements = 0; |
| 6865 | ref_node = prev ? prev : next; |
| 6866 | parent = ref_node->parent; |
| 6867 | |
| 6868 | /* |
| 6869 | * Retrieves the parent element declaration |
| 6870 | */ |
| 6871 | element_desc = xmlGetDtdElementDesc(parent->doc->intSubset, |
| 6872 | parent->name); |
| 6873 | if ((element_desc == NULL) && (parent->doc->extSubset != NULL)) |
| 6874 | element_desc = xmlGetDtdElementDesc(parent->doc->extSubset, |
| 6875 | parent->name); |
| 6876 | if (element_desc == NULL) return(-1); |
| 6877 | |
| 6878 | /* |
| 6879 | * Do a backup of the current tree structure |
| 6880 | */ |
| 6881 | prev_next = prev ? prev->next : NULL; |
| 6882 | next_prev = next ? next->prev : NULL; |
| 6883 | parent_childs = parent->children; |
| 6884 | parent_last = parent->last; |
| 6885 | |
| 6886 | /* |
| 6887 | * Creates a dummy node and insert it into the tree |
| 6888 | */ |
| 6889 | test_node = xmlNewDocNode (ref_node->doc, NULL, BAD_CAST "<!dummy?>", NULL); |
| 6890 | if (test_node == NULL) |
| 6891 | return(-1); |
| 6892 |
no test coverage detected