Lines Matching refs:cs
663 cset *cs;
678 if ((cs = allocset(p)) == NULL) {
686 CHadd(cs, ']');
688 CHadd(cs, '-');
690 p_b_term(p, cs);
692 CHadd(cs, '-');
696 freeset(p, cs);
705 if (CHIN(cs, i) && isalpha(i)) {
708 CHadd(cs, ci);
710 if (cs->multis != NULL)
711 mccase(p, cs);
717 if (CHIN(cs, i))
718 CHsub(cs, i);
720 CHadd(cs, i);
722 CHsub(cs, '\n');
723 if (cs->multis != NULL)
724 mcinvert(p, cs);
727 assert(cs->multis == NULL); /* xxx */
729 if (nch(p, cs) == 1) { /* optimize singleton sets */
730 ordinary(p, firstch(p, cs));
731 freeset(p, cs);
733 EMIT(OANYOF, freezeset(p, cs));
740 p_b_term(struct parse *p, cset *cs)
766 p_b_cclass(p, cs);
775 p_b_eclass(p, cs);
794 CHadd(cs, i);
803 p_b_cclass(struct parse *p, cset *cs)
825 CHadd(cs, c);
827 MCadd(p, cs, u);
836 p_b_eclass(struct parse *p, cset *cs)
841 CHadd(cs, c);
1063 cset *cs;
1094 cs = &p->g->sets[no];
1095 cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
1096 cs->mask = 1 << ((no) % CHAR_BIT);
1097 cs->hash = 0;
1098 cs->smultis = 0;
1099 cs->multis = NULL;
1101 return(cs);
1117 freeset(struct parse *p, cset *cs)
1124 CHsub(cs, i);
1125 if (cs == top-1) /* recover only the easy case */
1139 freezeset(struct parse *p, cset *cs)
1141 uch h = cs->hash;
1149 if (cs2->hash == h && cs2 != cs) {
1152 if (!!CHIN(cs2, i) != !!CHIN(cs, i))
1159 freeset(p, cs);
1160 cs = cs2;
1163 return((int)(cs - p->g->sets));
1170 firstch(struct parse *p, cset *cs)
1176 if (CHIN(cs, i))
1186 nch(struct parse *p, cset *cs)
1193 if (CHIN(cs, i))
1202 mcadd( struct parse *p, cset *cs, const char *cp)
1204 size_t oldend = cs->smultis;
1207 cs->smultis += strlen(cp) + 1;
1208 np = realloc(cs->multis, cs->smultis);
1210 if (cs->multis)
1211 free(cs->multis);
1212 cs->multis = NULL;
1216 cs->multis = np;
1218 llvm_strlcpy(cs->multis + oldend - 1, cp, cs->smultis - oldend + 1);
1229 mcinvert(struct parse *p, cset *cs)
1231 assert(cs->multis == NULL); /* xxx */
1242 mccase(struct parse *p, cset *cs)
1244 assert(cs->multis == NULL); /* xxx */