Exemple #1
0
                public void Visit(object a_object)
                {
                    QPending newPending = ((QPending)a_object).InternalClonePayload();

                    // We need to change the constraint here, so our pending collector
                    // uses the right comparator.
                    newPending.ChangeConstraint();
                    QPending oldPending = (QPending)Tree.Find(((Tree)this._enclosing._pending.value),
                                                              newPending);

                    if (oldPending != null)
                    {
                        // We only keep one pending result for all array elements and memorize,
                        // whether we had a true or a false result or both.
                        if (oldPending._result != newPending._result)
                        {
                            oldPending._result = QPending.Both;
                        }
                    }
                    else
                    {
                        this._enclosing._pending.value = Tree.Add(((Tree)this._enclosing._pending.value),
                                                                  newPending);
                    }
                }
Exemple #2
0
 internal virtual bool Evaluate(QPending a_pending)
 {
     QPending oldPending = (QPending)Tree.Find(_pendingJoins, a_pending);
     if (oldPending == null)
     {
         a_pending.ChangeConstraint();
         _pendingJoins = Tree.Add(_pendingJoins, a_pending.InternalClonePayload());
         return true;
     }
     _pendingJoins = _pendingJoins.RemoveNode(oldPending);
     oldPending._join.EvaluatePending(this, oldPending, a_pending._result);
     return false;
 }
Exemple #3
0
		public virtual bool Evaluate(QPending pending)
		{
			QPending oldPending = (QPending)Tree.Find(_pendingJoins, pending);
			if (oldPending == null)
			{
				pending.ChangeConstraint();
				_pendingJoins = Tree.Add(_pendingJoins, pending.InternalClonePayload());
				return true;
			}
			_pendingJoins = _pendingJoins.RemoveNode(oldPending);
			oldPending._join.EvaluatePending(this, oldPending, pending._result);
			return false;
		}
Exemple #4
0
 public void Visit(object a_object)
 {
     QPending newPending = ((QPending)a_object).InternalClonePayload();
     newPending.ChangeConstraint();
     QPending oldPending = (QPending)Tree.Find(((Tree)pending.value), newPending);
     if (oldPending != null)
     {
         if (oldPending._result != newPending._result)
         {
             oldPending._result = QPending.Both;
         }
     }
     else
     {
         pending.value = Tree.Add(((Tree)pending.value), newPending);
     }
 }
Exemple #5
0
 internal virtual bool Evaluate(QPending a_pending)
 {
     var oldPending = (QPending) Find(_pendingJoins, a_pending);
     if (oldPending == null)
     {
         a_pending.ChangeConstraint();
         _pendingJoins = Add(_pendingJoins, a_pending.InternalClonePayload());
         return true;
     }
     _pendingJoins = _pendingJoins.RemoveNode(oldPending);
     oldPending._join.EvaluatePending(this, oldPending, a_pending._result);
     return false;
 }