5 BooleanIterator::BooleanIterator(CSolver * _solver) :
6 solverit(_solver->getConstraints()) {
10 BooleanIterator::~BooleanIterator() {
14 bool BooleanIterator::hasNext() {
15 return boolean.getSize() != 0;
18 void BooleanIterator::updateNext() {
19 if (boolean.getSize() != 0) {
25 if (boolean.getSize() == 0) {
26 if (solverit->hasNext()) {
27 Boolean *b=solverit->next().getBoolean();
28 if (discovered.add(b)) {
36 Boolean *topboolean=boolean.last();
37 uint topindex=index.last();
38 switch(topboolean->type) {
45 BooleanLogic * logicop=(BooleanLogic*) topboolean;
46 uint size=logicop->inputs.getSize();
50 index.push(topindex+1);
51 Boolean *newchild=logicop->inputs.get(topindex).getBoolean();
52 if (discovered.add(newchild)) {
53 boolean.push(logicop->inputs.get(topindex).getBoolean());
64 Boolean * BooleanIterator::next() {
65 Boolean * b = boolean.last();