Lines Matching refs:tnfa
1183 tre_purge_regset(int *regset, tre_tnfa_t *tnfa, int tag) in tre_purge_regset() argument
1192 tnfa->submatch_data[id].so_tag = tag; in tre_purge_regset()
1194 tnfa->submatch_data[id].eo_tag = tag; in tre_purge_regset()
1204 tre_tnfa_t *tnfa) in tre_add_tags() argument
1211 int first_pass = (mem == NULL || tnfa == NULL); in tre_add_tags()
1225 tnfa->end_tag = 0; in tre_add_tags()
1226 tnfa->minimal_tags[0] = -1; in tre_add_tags()
1229 regset = xmalloc(sizeof(*regset) * ((tnfa->num_submatches + 1) * 2)); in tre_add_tags()
1235 parents = xmalloc(sizeof(*parents) * (tnfa->num_submatches + 1)); in tre_add_tags()
1243 saved_states = xmalloc(sizeof(*saved_states) * (tnfa->num_submatches + 1)); in tre_add_tags()
1253 for (i = 0; i <= tnfa->num_submatches; i++) in tre_add_tags()
1302 tnfa->submatch_data[id].parents = NULL; in tre_add_tags()
1311 assert(tnfa->submatch_data[id].parents == NULL); in tre_add_tags()
1312 tnfa->submatch_data[id].parents = p; in tre_add_tags()
1341 tnfa->tag_directions[tag] = direction; in tre_add_tags()
1344 for (i = 0; tnfa->minimal_tags[i] >= 0; i++); in tre_add_tags()
1345 tnfa->minimal_tags[i] = tag; in tre_add_tags()
1346 tnfa->minimal_tags[i + 1] = minimal_tag; in tre_add_tags()
1347 tnfa->minimal_tags[i + 2] = -1; in tre_add_tags()
1351 tre_purge_regset(regset, tnfa, tag); in tre_add_tags()
1430 tnfa->tag_directions[tag] = TRE_TAG_MAXIMIZE; in tre_add_tags()
1432 tnfa->tag_directions[tag] = direction; in tre_add_tags()
1435 for (i = 0; tnfa->minimal_tags[i] >= 0; i++); in tre_add_tags()
1436 tnfa->minimal_tags[i] = tag; in tre_add_tags()
1437 tnfa->minimal_tags[i + 1] = minimal_tag; in tre_add_tags()
1438 tnfa->minimal_tags[i + 2] = -1; in tre_add_tags()
1442 tre_purge_regset(regset, tnfa, tag); in tre_add_tags()
1500 tnfa->tag_directions[tag] = direction; in tre_add_tags()
1503 for (i = 0; tnfa->minimal_tags[i] >= 0; i++); in tre_add_tags()
1504 tnfa->minimal_tags[i] = tag; in tre_add_tags()
1505 tnfa->minimal_tags[i + 1] = minimal_tag; in tre_add_tags()
1506 tnfa->minimal_tags[i + 2] = -1; in tre_add_tags()
1510 tre_purge_regset(regset, tnfa, tag); in tre_add_tags()
1629 tnfa->tag_directions[tag_left] = TRE_TAG_MAXIMIZE; in tre_add_tags()
1632 tnfa->tag_directions[tag_right] = TRE_TAG_MAXIMIZE; in tre_add_tags()
1648 tre_purge_regset(regset, tnfa, tag); in tre_add_tags()
1653 for (i = 0; tnfa->minimal_tags[i] >= 0; i++); in tre_add_tags()
1654 tnfa->minimal_tags[i] = tag; in tre_add_tags()
1655 tnfa->minimal_tags[i + 1] = minimal_tag; in tre_add_tags()
1656 tnfa->minimal_tags[i + 2] = -1; in tre_add_tags()
1662 tnfa->end_tag = num_tags; in tre_add_tags()
1663 tnfa->num_tags = num_tags; in tre_add_tags()
1664 tnfa->num_minimals = num_minimals; in tre_add_tags()
2699 tre_tnfa_t *tnfa = NULL; in regcomp() local
2743 tnfa = xcalloc(1, sizeof(tre_tnfa_t)); in regcomp()
2744 if (tnfa == NULL) in regcomp()
2746 tnfa->have_backrefs = parse_ctx.max_backref >= 0; in regcomp()
2747 tnfa->have_approx = 0; in regcomp()
2748 tnfa->num_submatches = parse_ctx.submatch_id; in regcomp()
2752 if (tnfa->have_backrefs || !(cflags & REG_NOSUB)) in regcomp()
2756 errcode = tre_add_tags(NULL, stack, tree, tnfa); in regcomp()
2760 if (tnfa->num_tags > 0) in regcomp()
2763 * (tnfa->num_tags + 1)); in regcomp()
2766 tnfa->tag_directions = tag_directions; in regcomp()
2768 sizeof(*tag_directions) * (tnfa->num_tags + 1)); in regcomp()
2770 tnfa->minimal_tags = xcalloc((unsigned)tnfa->num_tags * 2 + 1, in regcomp()
2771 sizeof(*tnfa->minimal_tags)); in regcomp()
2772 if (tnfa->minimal_tags == NULL) in regcomp()
2779 tnfa->submatch_data = submatch_data; in regcomp()
2781 errcode = tre_add_tags(mem, stack, tree, tnfa); in regcomp()
2832 tnfa->transitions = transitions; in regcomp()
2833 tnfa->num_transitions = add; in regcomp()
2839 tnfa->firstpos_chars = NULL; in regcomp()
2852 tnfa->initial = initial; in regcomp()
2876 tnfa->num_transitions = add; in regcomp()
2877 tnfa->final = transitions + offs[tree->lastpos[0].position]; in regcomp()
2878 tnfa->num_states = parse_ctx.position; in regcomp()
2879 tnfa->cflags = cflags; in regcomp()
2886 preg->TRE_REGEX_T_FIELD = (void *)tnfa; in regcomp()
2898 preg->TRE_REGEX_T_FIELD = (void *)tnfa; in regcomp()
2909 tre_tnfa_t *tnfa; in regfree() local
2913 tnfa = (void *)preg->TRE_REGEX_T_FIELD; in regfree()
2914 if (!tnfa) in regfree()
2917 for (i = 0; i < tnfa->num_transitions; i++) in regfree()
2918 if (tnfa->transitions[i].state) in regfree()
2920 if (tnfa->transitions[i].tags) in regfree()
2921 xfree(tnfa->transitions[i].tags); in regfree()
2922 if (tnfa->transitions[i].neg_classes) in regfree()
2923 xfree(tnfa->transitions[i].neg_classes); in regfree()
2925 if (tnfa->transitions) in regfree()
2926 xfree(tnfa->transitions); in regfree()
2928 if (tnfa->initial) in regfree()
2930 for (trans = tnfa->initial; trans->state; trans++) in regfree()
2935 xfree(tnfa->initial); in regfree()
2938 if (tnfa->submatch_data) in regfree()
2940 for (i = 0; i < tnfa->num_submatches; i++) in regfree()
2941 if (tnfa->submatch_data[i].parents) in regfree()
2942 xfree(tnfa->submatch_data[i].parents); in regfree()
2943 xfree(tnfa->submatch_data); in regfree()
2946 if (tnfa->tag_directions) in regfree()
2947 xfree(tnfa->tag_directions); in regfree()
2948 if (tnfa->firstpos_chars) in regfree()
2949 xfree(tnfa->firstpos_chars); in regfree()
2950 if (tnfa->minimal_tags) in regfree()
2951 xfree(tnfa->minimal_tags); in regfree()
2952 xfree(tnfa); in regfree()