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

Function xmlValidateElementType

ThirdParty/libxml2/vtklibxml2/valid.c:4665–4979  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4663 */
4664
4665static int
4666xmlValidateElementType(xmlValidCtxtPtr ctxt) {
4667 int ret = -1;
4668 int determinist = 1;
4669
4670 NODE = xmlValidateSkipIgnorable(NODE);
4671 if ((NODE == NULL) && (CONT == NULL))
4672 return(1);
4673 if ((NODE == NULL) &&
4674 ((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
4675 (CONT->ocur == XML_ELEMENT_CONTENT_OPT))) {
4676 return(1);
4677 }
4678 if (CONT == NULL) return(-1);
4679 if ((NODE != NULL) && (NODE->type == XML_ENTITY_REF_NODE))
4680 return(-2);
4681
4682 /*
4683 * We arrive here when more states need to be examined
4684 */
4685cont:
4686
4687 /*
4688 * We just recovered from a rollback generated by a possible
4689 * epsilon transition, go directly to the analysis phase
4690 */
4691 if (STATE == ROLLBACK_PARENT) {
4692 ret = 1;
4693 goto analyze;
4694 }
4695
4696 /*
4697 * we may have to save a backup state here. This is the equivalent
4698 * of handling epsilon transition in NFAs.
4699 */
4700 if ((CONT != NULL) &&
4701 ((CONT->parent == NULL) ||
4702 (CONT->parent == (xmlElementContentPtr) 1) ||
4703 (CONT->parent->type != XML_ELEMENT_CONTENT_OR)) &&
4704 ((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
4705 (CONT->ocur == XML_ELEMENT_CONTENT_OPT) ||
4706 ((CONT->ocur == XML_ELEMENT_CONTENT_PLUS) && (OCCURRENCE)))) {
4707 if (vstateVPush(ctxt, CONT, NODE, DEPTH, OCCURS, ROLLBACK_PARENT) < 0)
4708 return(0);
4709 }
4710
4711
4712 /*
4713 * Check first if the content matches
4714 */
4715 switch (CONT->type) {
4716 case XML_ELEMENT_CONTENT_PCDATA:
4717 if (NODE == NULL) {
4718 ret = 0;
4719 break;
4720 }
4721 if (NODE->type == XML_TEXT_NODE) {
4722 /*

Callers 1

Calls 4

xmlValidateSkipIgnorableFunction · 0.85
vstateVPushFunction · 0.85
xmlStrEqualFunction · 0.85
vstateVPopFunction · 0.85

Tested by

no test coverage detected