Esempio n. 1
0
 public static IBTreeRange Union(BTreeRangeUnion union, BTreeRangeSingle single)
 {
     if (single.IsEmpty())
     {
         return union;
     }
     var sorted = NewBTreeRangeSingleCollection();
     sorted.Add(single);
     var range = single;
     var ranges = union.Ranges();
     while (ranges.MoveNext())
     {
         var current = (BTreeRangeSingle) ranges.Current;
         if (CanBeMerged(current, range))
         {
             sorted.Remove(range);
             range = Merge(current, range);
             sorted.Add(range);
         }
         else
         {
             sorted.Add(current);
         }
     }
     return ToRange(sorted);
 }
Esempio n. 2
0
 public static IBTreeRange Intersect(BTreeRangeUnion union, BTreeRangeSingle single
     )
 {
     var collection = NewBTreeRangeSingleCollection();
     CollectIntersections(collection, union, single);
     return ToRange(collection);
 }
Esempio n. 3
0
        public static IBTreeRange Intersect(BTreeRangeUnion union, BTreeRangeSingle single
                                            )
        {
            SortedCollection4 collection = NewBTreeRangeSingleCollection();

            CollectIntersections(collection, union, single);
            return(ToRange(collection));
        }
Esempio n. 4
0
 public static IBTreeRange Union(BTreeRangeUnion union1, BTreeRangeUnion union2)
 {
     var ranges = union1.Ranges();
     IBTreeRange merged = union2;
     while (ranges.MoveNext())
     {
         merged = merged.Union((IBTreeRange) ranges.Current);
     }
     return merged;
 }
Esempio n. 5
0
 public static IBTreeRange Intersect(BTreeRangeUnion union1, BTreeRangeUnion union2
     )
 {
     var collection = NewBTreeRangeSingleCollection();
     var ranges = union1.Ranges();
     while (ranges.MoveNext())
     {
         var current = (BTreeRangeSingle) ranges.Current;
         CollectIntersections(collection, union2, current);
     }
     return ToRange(collection);
 }
Esempio n. 6
0
 private static void CollectIntersections(SortedCollection4 collection, BTreeRangeUnion
     union, BTreeRangeSingle single)
 {
     var ranges = union.Ranges();
     while (ranges.MoveNext())
     {
         var current = (BTreeRangeSingle) ranges.Current;
         if (single.Overlaps(current))
         {
             collection.Add(single.Intersect(current));
         }
     }
 }
Esempio n. 7
0
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return BTreeAlgebra.Union(union, _single);
 }
Esempio n. 8
0
 public BTreeRangeUnionOperation(BTreeRangeUnion union)
 {
     _union = union;
 }
Esempio n. 9
0
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return(BTreeAlgebra.Intersect(_union, union));
 }
Esempio n. 10
0
 public BTreeRangeUnionIntersect(BTreeRangeUnion union) : base(union)
 {
 }
Esempio n. 11
0
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return BTreeAlgebra.Union(_union, union);
 }
Esempio n. 12
0
 public BTreeRangeUnionUnion(BTreeRangeUnion union) : base(union)
 {
 }
Esempio n. 13
0
 protected abstract IBTreeRange Execute(BTreeRangeUnion union);
Esempio n. 14
0
 public void Visit(BTreeRangeUnion union)
 {
     _resultingRange = Execute(union);
 }
Esempio n. 15
0
 public BTreeRangeUnionIntersect(BTreeRangeUnion union) : base(union)
 {
 }