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

Function xmlParseCRNG_pattern

ThirdParty/libxml2/vtklibxml2/rngparser.c:1037–1075  ·  view source on GitHub ↗

* xmlParseCRNG_pattern: * @ctxt: a compact RNG parser context * * Parse pattern of the RELAX NG Compact Syntax Appendix A * * Returns 0 in case of success and -1 in case of error */

Source from the content-addressed store, hash-verified

1035 * Returns 0 in case of success and -1 in case of error
1036 */
1037static int
1038xmlParseCRNG_pattern(xmlCRelaxNGParserCtxtPtr ctxt)
1039{
1040 tokenPtr token;
1041 xmlNodePtr insert = ctxt->insert, prev, grp;
1042
1043 ctxt->insert = NULL;
1044 xmlParseCRNG_particle(ctxt);
1045 prev = ctxt->insert;
1046 token = xmlParseCRNGGetToken(ctxt, 1);
1047 while ((prev != NULL) && (token != NULL) && (token->toktype == CRNG_OP)) {
1048 if (token->token == ctxt->key_or) {
1049 grp = xmlNewNodeEatName(NULL, (xmlChar *) ctxt->key_choice);
1050 if (grp == NULL) CRNG_MEM_ERROR0();
1051 } else if (token->token == ctxt->key_and) {
1052 grp = xmlNewNodeEatName(NULL, (xmlChar *) ctxt->key_interleave);
1053 if (grp == NULL) CRNG_MEM_ERROR0();
1054 } else if (token->token == ctxt->key_comma) {
1055 grp = xmlNewNodeEatName(NULL, (xmlChar *) ctxt->key_group);
1056 if (grp == NULL) CRNG_MEM_ERROR0();
1057 } else
1058 break;
1059 xmlParseCRNGDropTokens(ctxt, 1);
1060 ctxt->insert = NULL;
1061 xmlParseCRNG_particle(ctxt);
1062 xmlAddChild(grp, prev);
1063 xmlAddChild(grp, ctxt->insert);
1064 prev = grp;
1065 token = xmlParseCRNGGetToken(ctxt, 1);
1066 }
1067 if (insert != NULL) {
1068 xmlAddChild(insert, prev);
1069 ctxt->insert = insert;
1070 } else {
1071 ctxt->insert = prev;
1072 }
1073
1074 return(0);
1075}
1076
1077/**
1078 * xmlParseCRNG_component:

Callers 4

xmlParseCRNG_primaryFunction · 0.85
xmlParseCRNG_componentFunction · 0.85

Calls 5

xmlParseCRNG_particleFunction · 0.85
xmlParseCRNGGetTokenFunction · 0.85
xmlNewNodeEatNameFunction · 0.85
xmlParseCRNGDropTokensFunction · 0.85
xmlAddChildFunction · 0.85

Tested by

no test coverage detected