Lines Matching defs:ifstate
46 struct ifstate {
47 struct ifstate *prev;
54 static struct ifstate *ifstate;
128 struct ifstate *
129 ifstate_create(struct ifstate *prev, struct place *p, bool startstate)
131 struct ifstate *is;
148 ifstate_destroy(struct ifstate *is)
157 struct ifstate *newstate;
159 newstate = ifstate_create(ifstate, p, startstate);
160 if (!ifstate->curtrue) {
164 ifstate = newstate;
171 struct ifstate *is;
173 is = ifstate;
174 ifstate = ifstate->prev;
188 doprint = ifstate->curtrue;
197 if (ifstate->curtrue) {
207 ifstate->curtrue ? "taken" : "not taken");
217 doprint = ifstate->curtrue;
225 line, ifstate->curtrue ? "taken" : "not taken");
235 doprint = ifstate->curtrue;
243 line, ifstate->curtrue ? "taken" : "not taken");
256 if (ifstate->seenelse) {
261 doprint = ifstate->curtrue;
263 if (ifstate->evertrue) {
264 ifstate->curtrue = false;
273 ifstate->curtrue = eval(&p3, expr);
274 ifstate->evertrue = ifstate->curtrue;
279 debuglog2(&lp->current, &ifstate->startplace, "#elif: %s",
280 ifstate->curtrue ? "taken" : "not taken");
293 if (ifstate->seenelse) {
299 doprint = ifstate->curtrue;
301 ifstate->curtrue = !ifstate->evertrue;
302 ifstate->evertrue = true;
303 ifstate->seenelse = true;
306 debuglog2(&lp->current, &ifstate->startplace, "#else: %s",
307 ifstate->curtrue ? "taken" : "not taken");
318 if (ifstate->prev == NULL) {
322 debuglog2(&lp->current, &ifstate->startplace, "#endif");
610 if (directives[i].ifskip && !ifstate->curtrue) {
700 } else if (ifstate->curtrue) {
709 while (ifstate->prev != NULL) {
711 complain(&ifstate->startplace, "...opened at this point");
724 ifstate = ifstate_create(NULL, NULL, true);
730 assert(ifstate->prev == NULL);
731 ifstate_destroy(ifstate);
732 ifstate = NULL;