Lines Matching defs:cs
799 cset *cs;
816 if ((cs = allocset(p)) == NULL) {
824 CHadd(cs, ']');
826 CHadd(cs, '-');
828 p_b_term(p, cs);
830 CHadd(cs, '-');
834 freeset(p, cs);
843 if (CHIN(cs, i) && isalpha(i)) {
846 CHadd(cs, ci);
848 if (cs->multis != NULL)
849 mccase(p, cs);
855 if (CHIN(cs, i))
856 CHsub(cs, i);
858 CHadd(cs, i);
860 CHsub(cs, '\n');
861 if (cs->multis != NULL)
862 mcinvert(p, cs);
865 assert(cs->multis == NULL); /* xxx */
867 if (nch(p, cs) == 1) { /* optimize singleton sets */
868 ordinary(p, firstch(p, cs));
869 freeset(p, cs);
871 EMIT(OANYOF, freezeset(p, cs));
878 p_b_term(struct parse *p, cset *cs)
904 p_b_cclass(p, cs);
913 p_b_eclass(p, cs);
932 CHadd(cs, i);
941 p_b_cclass(struct parse *p, cset *cs)
963 CHadd(cs, c);
965 MCadd(p, cs, u);
974 p_b_eclass(struct parse *p, cset *cs)
979 CHadd(cs, c);
1197 cset *cs;
1230 cs = &p->g->sets[no];
1231 cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
1232 cs->mask = 1 << ((no) % CHAR_BIT);
1233 cs->hash = 0;
1234 cs->smultis = 0;
1235 cs->multis = NULL;
1237 return(cs);
1253 freeset(struct parse *p, cset *cs)
1260 CHsub(cs, i);
1261 if (cs == top-1) /* recover only the easy case */
1275 freezeset(struct parse *p, cset *cs)
1277 uch h = cs->hash;
1285 if (cs2->hash == h && cs2 != cs) {
1288 if (!!CHIN(cs2, i) != !!CHIN(cs, i))
1295 freeset(p, cs);
1296 cs = cs2;
1299 return((int)(cs - p->g->sets));
1306 firstch(struct parse *p, cset *cs)
1312 if (CHIN(cs, i))
1322 nch(struct parse *p, cset *cs)
1329 if (CHIN(cs, i))
1338 mcadd( struct parse *p, cset *cs, const char *cp)
1340 size_t oldend = cs->smultis;
1343 cs->smultis += strlen(cp) + 1;
1344 np = realloc(cs->multis, cs->smultis);
1346 if (cs->multis)
1347 free(cs->multis);
1348 cs->multis = NULL;
1352 cs->multis = np;
1354 llvm_strlcpy(cs->multis + oldend - 1, cp, cs->smultis - oldend + 1);
1365 mcinvert(struct parse *p, cset *cs)
1367 assert(cs->multis == NULL); /* xxx */
1378 mccase(struct parse *p, cset *cs)
1380 assert(cs->multis == NULL); /* xxx */