## org.dthume.data.interval-treeset

Finger tree based interval treeset implementation.

Based largely on the original paper

Provides an efficient, persistent representation of a set of items sorted by the interval which they occupy.

### covered-range

`(covered-range t)`

Return the covered range, i.e. minimum start value and maximum end value, of the intervals of all the items in interval treeset `t`

.

### difference

### first-overlapping

`(first-overlapping this ival)`

`(first-overlapping this ival n-f)`

Search `this`

for the first value which overlaps `ival`

, returning `nil`

if none is found in the two arg case, or `n-f`

in the three arg case.

### intersection

### interval

`(interval s e)`

Create an interval with range `s`

to `e`

### interval-treeset

`(interval-treeset & {:as conf})`

Create an empty interval tree set. Available options:

- :as-interval
- Extract an interval value for an item
- :compare-point
- Comparator for two points. Defaults to
`clojure.core/compare`

. - :zero-interval
- Zero value for the intervals used in this set. Defaults to
`(interval nil Integer/MIN_VALUE)`

.

### it-difference

`(it-difference lhs rhs)`

### it-intersection

`(it-intersection lhs rhs)`

### it-union

`(it-union lhs rhs)`

### select

`(select this k)`

Return a selection whose selected part contains a single item - `k`

.

### select-overlapping

`(select-overlapping this ival)`

Select the subregion of this set which overlaps `ival`

, returning a tuple of the form `[prefix selected suffix]`

where `prefix`

, `selected`

and `suffix`

are all interval treesets. The methods in `org.dthume.data.finger-tree.selection`

may prove useful in working with the resulting selection.