| 6766 | */ |
| 6767 | |
| 6768 | int |
| 6769 | xmlValidGetPotentialChildren(xmlElementContent *ctree, |
| 6770 | const xmlChar **names, |
| 6771 | int *len, int max) { |
| 6772 | int i; |
| 6773 | |
| 6774 | if ((ctree == NULL) || (names == NULL) || (len == NULL)) |
| 6775 | return(-1); |
| 6776 | if (*len >= max) return(*len); |
| 6777 | |
| 6778 | switch (ctree->type) { |
| 6779 | case XML_ELEMENT_CONTENT_PCDATA: |
| 6780 | for (i = 0; i < *len;i++) |
| 6781 | if (xmlStrEqual(BAD_CAST "#PCDATA", names[i])) return(*len); |
| 6782 | names[(*len)++] = BAD_CAST "#PCDATA"; |
| 6783 | break; |
| 6784 | case XML_ELEMENT_CONTENT_ELEMENT: |
| 6785 | for (i = 0; i < *len;i++) |
| 6786 | if (xmlStrEqual(ctree->name, names[i])) return(*len); |
| 6787 | names[(*len)++] = ctree->name; |
| 6788 | break; |
| 6789 | case XML_ELEMENT_CONTENT_SEQ: |
| 6790 | xmlValidGetPotentialChildren(ctree->c1, names, len, max); |
| 6791 | xmlValidGetPotentialChildren(ctree->c2, names, len, max); |
| 6792 | break; |
| 6793 | case XML_ELEMENT_CONTENT_OR: |
| 6794 | xmlValidGetPotentialChildren(ctree->c1, names, len, max); |
| 6795 | xmlValidGetPotentialChildren(ctree->c2, names, len, max); |
| 6796 | break; |
| 6797 | } |
| 6798 | |
| 6799 | return(*len); |
| 6800 | } |
| 6801 | |
| 6802 | /* |
| 6803 | * Dummy function to suppress messages while we try out valid elements |
no test coverage detected