57 return a.low < b.low || (a.low == b.low && a.high > b.high);
64 void insert(uint64_t low, uint64_t high, T payload) {
66 intervals.push_back({low, high, payload});
84 [](uint64_t point,
const Interval& interval) {
85 return point < interval.low;
93 for (; it >=
intervals.begin() && it->low <= point; --it) {
94 if (it->contains(point)) {
95 if (!best || it->
low > best->
low) {
102 return best ? best->
payload : T();
A specialized implementation of an Interval Tree optimized for Bash++'s particular use case.
Definition IntervalTree.h:39
void ensure_sorted()
Definition IntervalTree.h:52
void insert(uint64_t low, uint64_t high, T payload)
Definition IntervalTree.h:64
bool sorted
Definition IntervalTree.h:50
T find_innermost_overlap(uint64_t point)
Find the innermost interval that overlaps a given point.
Definition IntervalTree.h:79
std::vector< Interval > intervals
Definition IntervalTree.h:49
Definition IntervalTree.h:41
bool contains(const Interval &other) const
Definition IntervalTree.h:46
uint64_t low
Definition IntervalTree.h:42
uint64_t high
Definition IntervalTree.h:42
bool contains(uint64_t point) const
Definition IntervalTree.h:45
T payload
Definition IntervalTree.h:43