20#ifndef REALM_INTERVAL_TREE_H
21#define REALM_INTERVAL_TREE_H
28 template <
typename IT,
typename LT>
37 void add_interval(IT iv_start, IT iv_end, LT iv_label,
bool defer =
true);
39 template <
typename IR>
40 void add_intervals(
const IR &iv_ranges, LT iv_label,
bool defer =
true);
44 template <
typename IR>
51 template <
typename MARKER>
54 void test_interval(IT iv_start, IT iv_end, std::vector<bool> &labels_found)
const;
55 void test_interval(IT iv_start, IT iv_end, std::set<LT> &labels_found)
const;
57 template <
typename IR,
typename MARKER>
60 template <
typename IR>
61 void test_intervals(
const IR &iv_ranges, std::vector<bool> &labels_found)
const;
63 template <
typename IR>
66 template <
typename IR,
typename MARKER>
69 template <
typename IR>
71 std::vector<bool> &labels_found)
const;
73 template <
typename IR>
90 template <
typename MARKER>
93 template <
typename IR,
typename MARKER>
95 MARKER &marker)
const;
109#include "realm/interval_tree.inl"
Definition interval_tree.h:29
void test_sorted_intervals(const IR &iv_ranges, MARKER &marker) const
std::vector< IT > pending_starts
Definition interval_tree.h:101
void add_interval(IT iv_start, IT iv_end, LT iv_label, bool defer=true)
void test_sorted_intervals(const IR &iv_ranges, std::set< LT > &labels_found) const
void test_interval(IT iv_start, IT iv_end, MARKER &marker) const
void test_intervals(const IR &iv_ranges, MARKER &marker) const
void test_interval(IT iv_start, IT iv_end, std::set< LT > &labels_found) const
void test_interval(IT iv_start, IT iv_end, std::vector< bool > &labels_found) const
void test_intervals(const IR &iv_ranges, std::vector< bool > &labels_found) const
void remove_intervals(const IR &iv_ranges, LT iv_label)
size_t count
Definition interval_tree.h:104
void construct_tree(bool rebuild_completely=false)
std::vector< LT > pending_labels
Definition interval_tree.h:102
void remove_by_label(LT iv_label)
std::vector< IT > pending_ends
Definition interval_tree.h:101
void test_intervals(const IR &iv_ranges, std::set< LT > &labels_found) const
void test_sorted_intervals(const IR &iv_ranges, std::vector< bool > &labels_found) const
void remove_interval(IT iv_start, IT iv_end, LT iv_label)
TreeNode * root
Definition interval_tree.h:103
void add_intervals(const IR &iv_ranges, LT iv_label, bool defer=true)
Definition activemsg.h:38
Definition interval_tree.h:76
static TreeNode * build_tree(const std::vector< IT > &pending_starts, const std::vector< IT > &pending_ends, const std::vector< LT > &pending_labels)
std::vector< int > sorted_by_start
Definition interval_tree.h:81
void test_sorted_intervals(const IR &iv_ranges, int pos, int count, MARKER &marker) const
TreeNode * left
Definition interval_tree.h:78
TreeNode * right
Definition interval_tree.h:78
std::vector< IT > starts
Definition interval_tree.h:79
std::vector< IT > ends
Definition interval_tree.h:79
void test_interval(IT iv_start, IT iv_end, MARKER &marker) const
void repopulate_pending(IntervalTree< IT, LT > *tree)
std::vector< int > sorted_by_end
Definition interval_tree.h:81
IT split_val
Definition interval_tree.h:77
std::vector< LT > labels
Definition interval_tree.h:80