Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        //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;
                }
            }
        }