public OrIterator(LogExpr logExpr, Agent ag, Unifier un) { this.logExpr = logExpr; this.ag = ag; this.un = un; ileft = (OrIterator <Unifier>)logExpr.GetLHS().LogicalConsequence(ag, un); }
//public bool HasNext() //{ // if (needsUpdate) Get(); // return current != null; //} //public Unifier Next() //{ // if (needsUpdate) Get(); // if (current != default) needsUpdate = true; // return current; //} private void Get() { needsUpdate = false; current = default; if (ileft != null && ileft.MoveNext()) { current = ileft.Current; } else { if (iright == null) { iright = (OrIterator <Unifier>)logExpr.GetRHS().LogicalConsequence(ag, un); } if (iright != null && iright.MoveNext()) { current = iright.Current; } } }