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.

union