56 return a.low < b.low || (a.low == b.low && a.high > b.high);
63 void insert(uint64_t low, uint64_t high, T payload) {
65 intervals.push_back({low, high, payload});
83 [](uint64_t point,
const Interval& interval) {
84 return point < interval.low;
92 for (; it >=
intervals.begin() && it->low <= point; --it) {
93 if (it->contains(point)) {
94 if (!best || it->
low > best->
low) {
101 return best ? best->
payload : T();
A specialized implementation of an Interval Tree optimized for Bash++'s particular use case.
Definition IntervalTree.h:38
void ensure_sorted()
Definition IntervalTree.h:51
void insert(uint64_t low, uint64_t high, T payload)
Definition IntervalTree.h:63
bool sorted
Definition IntervalTree.h:49
T find_innermost_overlap(uint64_t point)
Find the innermost interval that overlaps a given point.
Definition IntervalTree.h:78
std::vector< Interval > intervals
Definition IntervalTree.h:48
Definition IntervalTree.h:40
bool contains(const Interval &other) const
Definition IntervalTree.h:45
uint64_t low
Definition IntervalTree.h:41
uint64_t high
Definition IntervalTree.h:41
bool contains(uint64_t point) const
Definition IntervalTree.h:44
T payload
Definition IntervalTree.h:42