IntervalSplayTree.findOverlapsWith

find interval(s) overlapping given interval

unlike find interval by key, matching elements could be in left /and/ right subtree

We use template type "T" here instead of the enclosing struct's IntervalType so that we can from externally query with any type of interval object

(note: outdated, see below) Timing data: UnrolledList < D array < SList (emsi)

Notes: Node*[] performed more poorly than UnrolledList on my personal Mac laptop, However, dlang GC-backed Node*[] performed BETTER than UnrolledList (<5%, but consistent) on linux, perhaps due to no memory pressure and GC not needing to free. As this is a bioinformatics tool likely to be run on decent linux machines, we will leave as dyanmic array. TODO: benchmark return Node[] TODO: benchmark return Node** and out count vs non-GC container

struct IntervalSplayTree(IntervalType)
nothrow
Node*[]
findOverlapsWith
(
T
)
if (
__traits(hasMember, T, "start") &&
__traits(hasMember, T, "end")
)

Meta