private void CollectImplicitAnd(QCon constraint, IIndexedNodeWithRange x, IIndexedNodeWithRange
                                 y)
 {
     _nodes.Remove(x);
     _nodes.Remove(y);
     _nodes.Add(new AndIndexedLeaf(constraint, x, y));
 }
Пример #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
		public JoinedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IBTreeRange range
			)
		{
			if (null == constraint || null == leaf1 || null == range)
			{
				throw new ArgumentNullException();
			}
			_constraint = constraint;
			_leaf1 = leaf1;
			_range = range;
		}
Пример #4
0
 public JoinedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IBTreeRange range
                   )
 {
     if (null == constraint || null == leaf1 || null == range)
     {
         throw new ArgumentNullException();
     }
     _constraint = constraint;
     _leaf1      = leaf1;
     _range      = range;
 }
Пример #5
0
        private IIndexedNodeWithRange NodeForConstraint(QCon con)
        {
            IIndexedNodeWithRange node = (IIndexedNodeWithRange)_nodeCache.Get(con);

            if (null != node || _nodeCache.ContainsKey(con))
            {
                return(node);
            }
            node = NewNodeForConstraint(con);
            _nodeCache.Put(con, node);
            return(node);
        }
Пример #6
0
        private void CollectImplicitlyAndingJoins(Collection4 joins, QConObject constraintWithJoins
                                                  )
        {
            IEnumerator i = joins.GetEnumerator();

            i.MoveNext();
            IIndexedNodeWithRange last = NodeForConstraint((QCon)i.Current);

            while (i.MoveNext())
            {
                IIndexedNodeWithRange node = NodeForConstraint((QCon)i.Current);
                last = new AndIndexedLeaf(constraintWithJoins, node, last);
                _nodes.Add(last);
            }
        }
Пример #7
0
		public AndIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange
			 leaf2) : base(constraint, leaf1, leaf1.GetRange().Intersect(leaf2.GetRange()))
		{
		}
Пример #8
0
 public OrIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange
                      leaf2) : base(constraint, leaf1, leaf1.GetRange().Union(leaf2.GetRange()))
 {
 }
Пример #9
0
 public AndIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange
                       leaf2) : base(constraint, leaf1, leaf1.GetRange().Intersect(leaf2.GetRange()))
 {
 }
Пример #10
0
		private void CollectImplicitAnd(QCon constraint, IIndexedNodeWithRange x, IIndexedNodeWithRange
			 y)
		{
			_nodes.Remove(x);
			_nodes.Remove(y);
			_nodes.Add(new AndIndexedLeaf(constraint, x, y));
		}
Пример #11
0
		public OrIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange
			 leaf2) : base(constraint, leaf1, leaf1.GetRange().Union(leaf2.GetRange()))
		{
		}