示例#1
0
        private void CollectLeaves(Collection4 leaves, Collection4 joins)
        {
            IEnumerator i = joins.GetEnumerator();

            while (i.MoveNext())
            {
                QConJoin join = ((QConJoin)i.Current);
                CollectLeavesFromJoin(leaves, join);
            }
        }
示例#2
0
        private IIndexedNodeWithRange NewNodeForConstraint(QConJoin join)
        {
            IIndexedNodeWithRange c1 = NodeForConstraint(join.Constraint1());
            IIndexedNodeWithRange c2 = NodeForConstraint(join.Constraint2());

            if (join.IsOr())
            {
                return(new OrIndexedLeaf(FindLeafForJoin(join), c1, c2));
            }
            return(new AndIndexedLeaf(join.Constraint1(), c1, c2));
        }
示例#3
0
        private QCon FindLeafForJoin(QConJoin join)
        {
            if (join.Constraint1() is QConObject)
            {
                return(join.Constraint1());
            }
            QCon con = join.Constraint2();

            if (con is QConObject)
            {
                return(con);
            }
            return(FindLeafForJoin((QConJoin)con));
        }
示例#4
0
        private void CollectTopLevelJoins(Collection4 joins, QCon constraintWithJoins)
        {
            IEnumerator i = constraintWithJoins.IterateJoins();

            while (i.MoveNext())
            {
                QConJoin join = (QConJoin)i.Current;
                if (!join.HasJoins())
                {
                    if (!joins.ContainsByIdentity(join))
                    {
                        joins.Add(join);
                    }
                }
                else
                {
                    CollectTopLevelJoins(joins, join);
                }
            }
        }
示例#5
0
        protected virtual void Visit(QConJoin join)
        {
#if SILVERLIGHT
            if (_visitedJoins.ContainsKey(join))
            {
                return;
            }
#else
            if (_visitedJoins.Contains(join))
            {
                return;
            }
#endif
            _builder.Append("(");
            VisitJoinBranch(join.Constraint2());
            _builder.AppendFormat(" {0} ", join.IsOr() ? "or" : "and");
            VisitJoinBranch(join.Constraint1());
            _builder.Append(")");
#if SILVERLIGHT
            _visitedJoins.Add(join, join);
#else
            _visitedJoins.Add(join);
#endif
        }
示例#6
0
 private void CollectLeavesFromJoin(Collection4 leaves, QConJoin join)
 {
     CollectLeavesFromJoinConstraint(leaves, join.Constraint1());
     CollectLeavesFromJoinConstraint(leaves, join.Constraint2());
 }