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