void bdd_unmark_upto(int i, int level) { BddNode *node = &bddnodes[i]; if (i < 2) return; if (!(LEVELp(node) & MARKON)) return; LEVELp(node) &= MARKOFF; if (LEVELp(node) > level) return; bdd_unmark_upto(LOWp(node), level); bdd_unmark_upto(HIGHp(node), level); }
void bdd_unmark_upto(int i, int level) { BddNode *node = &bddnodes[i]; if (i < 2) return; if (!MARKEDp(node)) return; UNMARKp(node); if (LEVELp(node) > level) return; bdd_unmark_upto(LOWp(node), level); bdd_unmark_upto(HIGHp(node), level); }