Lines Matching refs:cs

121 static void p_b_term(struct parse *p, cset *cs);
122 static void p_b_cclass(struct parse *p, cset *cs);
123 static void p_b_eclass(struct parse *p, cset *cs);
133 static void freeset(struct parse *p, cset *cs);
134 static void CHadd(struct parse *p, cset *cs, wint_t ch);
135 static void CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max);
136 static void CHaddtype(struct parse *p, cset *cs, wctype_t wct);
137 static wint_t singleton(struct parse *p, cset *cs);
849 cset *cs; in p_bracket() local
864 if ((cs = allocset(p)) == NULL) in p_bracket()
868 cs->icase = 1; in p_bracket()
870 cs->invert = 1; in p_bracket()
872 CHadd(p, cs, ']'); in p_bracket()
874 CHadd(p, cs, '-'); in p_bracket()
876 p_b_term(p, cs); in p_bracket()
878 CHadd(p, cs, '-'); in p_bracket()
884 if (cs->invert && p->g->cflags&REG_NEWLINE) in p_bracket()
885 cs->bmp['\n' >> 3] |= 1 << ('\n' & 7); in p_bracket()
887 if ((ch = singleton(p, cs)) != OUT) { /* optimize singleton sets */ in p_bracket()
889 freeset(p, cs); in p_bracket()
891 EMIT(OANYOF, (int)(cs - p->g->sets)); in p_bracket()
898 p_b_term(struct parse *p, cset *cs) in p_b_term() argument
924 p_b_cclass(p, cs); in p_b_term()
933 p_b_eclass(p, cs); in p_b_term()
949 CHadd(p, cs, start); in p_b_term()
954 CHaddrange(p, cs, start, finish); in p_b_term()
963 CHadd(p, cs, i); in p_b_term()
975 p_b_cclass(struct parse *p, cset *cs) in p_b_cclass() argument
995 CHaddtype(p, cs, wct); in p_b_cclass()
1004 p_b_eclass(struct parse *p, cset *cs) in p_b_eclass() argument
1009 CHadd(p, cs, c); in p_b_eclass()
1112 cset *cs; in ordinary() local
1123 if ((cs = allocset(p)) == NULL) in ordinary()
1125 CHadd(p, cs, ch); in ordinary()
1126 EMIT(OANYOF, (int)(cs - p->g->sets)); in ordinary()
1267 cset *cs, *ncs; in allocset() local
1275 cs = &p->g->sets[p->g->ncsets++]; in allocset()
1276 (void) memset(cs, 0, sizeof (*cs)); in allocset()
1278 return (cs); in allocset()
1285 freeset(struct parse *p, cset *cs) in freeset() argument
1289 free(cs->wides); in freeset()
1290 free(cs->ranges); in freeset()
1291 free(cs->types); in freeset()
1292 (void) memset(cs, 0, sizeof (*cs)); in freeset()
1293 if (cs == top-1) /* recover only the easy case */ in freeset()
1302 singleton(struct parse *p, cset *cs) in singleton() argument
1307 if (cs->nranges != 0 || cs->ntypes != 0 || cs->icase != 0) in singleton()
1310 if (cs->nwides > 1) in singleton()
1315 if (CHIN(p->nc, cs, i)) { in singleton()
1324 if (cs->nwides == 0) in singleton()
1329 if (cs->nwides == 1) in singleton()
1330 return (cs->wides[0]); in singleton()
1339 CHadd(struct parse *p, cset *cs, wint_t ch) in CHadd() argument
1344 cs->bmp[ch >> 3] |= 1 << (ch & 7); in CHadd()
1346 newwides = realloc(cs->wides, (cs->nwides + 1) * in CHadd()
1347 sizeof (*cs->wides)); in CHadd()
1352 cs->wides = newwides; in CHadd()
1353 cs->wides[cs->nwides++] = ch; in CHadd()
1355 if (cs->icase) { in CHadd()
1357 cs->bmp[nch >> 3] |= 1 << (nch & 7); in CHadd()
1359 cs->bmp[nch >> 3] |= 1 << (nch & 7); in CHadd()
1367 CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max) in CHaddrange() argument
1372 CHadd(p, cs, min); in CHaddrange()
1375 newranges = realloc(cs->ranges, (cs->nranges + 1) * in CHaddrange()
1376 sizeof (*cs->ranges)); in CHaddrange()
1381 cs->ranges = newranges; in CHaddrange()
1382 cs->ranges[cs->nranges].min = min; in CHaddrange()
1383 cs->ranges[cs->nranges].max = max; in CHaddrange()
1384 cs->nranges++; in CHaddrange()
1391 CHaddtype(struct parse *p, cset *cs, wctype_t wct) in CHaddtype() argument
1398 CHadd(p, cs, i); in CHaddtype()
1399 newtypes = realloc(cs->types, (cs->ntypes + 1) * in CHaddtype()
1400 sizeof (*cs->types)); in CHaddtype()
1405 cs->types = newtypes; in CHaddtype()
1406 cs->types[cs->ntypes++] = wct; in CHaddtype()