private void CollectImplicitAnd(QCon constraint, IIndexedNodeWithRange x, IIndexedNodeWithRange y) { _nodes.Remove(x); _nodes.Remove(y); _nodes.Add(new AndIndexedLeaf(constraint, x, y)); }
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)); }
public JoinedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IBTreeRange range ) { if (null == constraint || null == leaf1 || null == range) { throw new ArgumentNullException(); } _constraint = constraint; _leaf1 = leaf1; _range = range; }
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); }
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); } }
public AndIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange leaf2) : base(constraint, leaf1, leaf1.GetRange().Intersect(leaf2.GetRange())) { }
public OrIndexedLeaf(QCon constraint, IIndexedNodeWithRange leaf1, IIndexedNodeWithRange leaf2) : base(constraint, leaf1, leaf1.GetRange().Union(leaf2.GetRange())) { }