Lines Matching defs:cs
627 cset *cs;
642 if ((cs = allocset(p)) == NULL) {
650 CHadd(cs, ']');
652 CHadd(cs, '-');
654 p_b_term(p, cs);
656 CHadd(cs, '-');
660 freeset(p, cs);
669 if (CHIN(cs, i) && isalpha(i)) {
672 CHadd(cs, ci);
674 if (cs->multis != NULL)
675 mccase(p, cs);
681 if (CHIN(cs, i))
682 CHsub(cs, i);
684 CHadd(cs, i);
686 CHsub(cs, '\n');
687 if (cs->multis != NULL)
688 mcinvert(p, cs);
691 assert(cs->multis == NULL); /* xxx */
693 if (nch(p, cs) == 1) { /* optimize singleton sets */
694 ordinary(p, firstch(p, cs));
695 freeset(p, cs);
697 EMIT(OANYOF, freezeset(p, cs));
704 p_b_term(struct parse *p, cset *cs)
730 p_b_cclass(p, cs);
739 p_b_eclass(p, cs);
758 CHadd(cs, i);
767 p_b_cclass(struct parse *p, cset *cs)
789 CHadd(cs, c);
791 MCadd(p, cs, u);
800 p_b_eclass(struct parse *p, cset *cs)
805 CHadd(cs, c);
1027 cset *cs;
1058 cs = &p->g->sets[no];
1059 cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
1060 cs->mask = 1 << ((no) % CHAR_BIT);
1061 cs->hash = 0;
1062 cs->smultis = 0;
1063 cs->multis = NULL;
1065 return(cs);
1081 freeset(struct parse *p, cset *cs)
1088 CHsub(cs, i);
1089 if (cs == top-1) /* recover only the easy case */
1103 freezeset(struct parse *p, cset *cs)
1105 uch h = cs->hash;
1113 if (cs2->hash == h && cs2 != cs) {
1116 if (!!CHIN(cs2, i) != !!CHIN(cs, i))
1123 freeset(p, cs);
1124 cs = cs2;
1127 return((int)(cs - p->g->sets));
1134 firstch(struct parse *p, cset *cs)
1140 if (CHIN(cs, i))
1150 nch(struct parse *p, cset *cs)
1157 if (CHIN(cs, i))
1166 mcadd( struct parse *p, cset *cs, char *cp)
1168 size_t oldend = cs->smultis;
1171 cs->smultis += strlen(cp) + 1;
1172 np = realloc(cs->multis, cs->smultis);
1174 if (cs->multis)
1175 free(cs->multis);
1176 cs->multis = NULL;
1180 cs->multis = np;
1182 strlcpy(cs->multis + oldend - 1, cp, cs->smultis - oldend + 1);
1193 mcinvert(struct parse *p, cset *cs)
1195 assert(cs->multis == NULL); /* xxx */
1206 mccase(struct parse *p, cset *cs)
1208 assert(cs->multis == NULL); /* xxx */