intersect method

void intersect(
  1. DRange range
)

Implementation

void intersect(DRange range) {
  var newRanges = <SubRange>[];

  void _intersect(SubRange subrange) {
    var i = 0;
    while (i < _ranges.length && !subrange.overlaps(_ranges[i])) {
      i++;
    }
    while (i < _ranges.length && subrange.overlaps(_ranges[i])) {
      var low = max(_ranges[i].low, subrange.low);
      var high = min(_ranges[i].high, subrange.high);
      newRanges.add(SubRange(low, high));
      i++;
    }
  }

  range._ranges.forEach(_intersect);
  _ranges = newRanges;
  _update_length();
}