コード例 #1
0
ファイル: BTreeAlgebra.cs プロジェクト: masroore/db4o
 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);
 }
コード例 #2
0
ファイル: BTreeAlgebra.cs プロジェクト: masroore/db4o
 public static IBTreeRange Intersect(BTreeRangeUnion union, BTreeRangeSingle single
     )
 {
     var collection = NewBTreeRangeSingleCollection();
     CollectIntersections(collection, union, single);
     return ToRange(collection);
 }
コード例 #3
0
        public static IBTreeRange Intersect(BTreeRangeUnion union, BTreeRangeSingle single
                                            )
        {
            SortedCollection4 collection = NewBTreeRangeSingleCollection();

            CollectIntersections(collection, union, single);
            return(ToRange(collection));
        }
コード例 #4
0
ファイル: BTreeAlgebra.cs プロジェクト: masroore/db4o
 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;
 }
コード例 #5
0
ファイル: BTreeAlgebra.cs プロジェクト: masroore/db4o
 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);
 }
コード例 #6
0
ファイル: BTreeAlgebra.cs プロジェクト: masroore/db4o
 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));
         }
     }
 }
コード例 #7
0
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return BTreeAlgebra.Union(union, _single);
 }
コード例 #8
0
 public BTreeRangeUnionOperation(BTreeRangeUnion union)
 {
     _union = union;
 }
コード例 #9
0
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return(BTreeAlgebra.Intersect(_union, union));
 }
コード例 #10
0
 public BTreeRangeUnionIntersect(BTreeRangeUnion union) : base(union)
 {
 }
コード例 #11
0
ファイル: BTreeRangeUnionUnion.cs プロジェクト: masroore/db4o
 protected override IBTreeRange Execute(BTreeRangeUnion union)
 {
     return BTreeAlgebra.Union(_union, union);
 }
コード例 #12
0
ファイル: BTreeRangeUnionUnion.cs プロジェクト: masroore/db4o
 public BTreeRangeUnionUnion(BTreeRangeUnion union) : base(union)
 {
 }
コード例 #13
0
ファイル: BTreeRangeOperation.cs プロジェクト: masroore/db4o
 protected abstract IBTreeRange Execute(BTreeRangeUnion union);
コード例 #14
0
ファイル: BTreeRangeOperation.cs プロジェクト: masroore/db4o
 public void Visit(BTreeRangeUnion union)
 {
     _resultingRange = Execute(union);
 }
コード例 #15
0
 public BTreeRangeUnionIntersect(BTreeRangeUnion union) : base(union)
 {
 }