From 3ae2ed5269d9b2c51fdb81251ce498800b82ea6a Mon Sep 17 00:00:00 2001 From: Pankaj Bhojwani Date: Thu, 1 Oct 2020 16:41:25 -0400 Subject: [PATCH 1/4] allow user defined structs --- IntervalTree.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/IntervalTree.h b/IntervalTree.h index eb9fc62..b67d13b 100644 --- a/IntervalTree.h +++ b/IntervalTree.h @@ -61,7 +61,7 @@ class IntervalTree { IntervalTree() : left(nullptr) , right(nullptr) - , center(0) + , center(Scalar{}) {} ~IntervalTree() = default; @@ -93,8 +93,8 @@ class IntervalTree { std::size_t depth = 16, std::size_t minbucket = 64, std::size_t maxbucket = 512, - Scalar leftextent = 0, - Scalar rightextent = 0) + Scalar leftextent = {}, + Scalar rightextent = {}) : left(nullptr) , right(nullptr) { @@ -106,7 +106,7 @@ class IntervalTree { if (!ivals.empty()) { center = (minmaxStart.first->start + minmaxStop.second->stop) / 2; } - if (leftextent == 0 && rightextent == 0) { + if (leftextent == Scalar{} && rightextent == Scalar{}) { // sort intervals by start std::sort(ivals.begin(), ivals.end(), IntervalStartCmp()); } else { @@ -118,10 +118,10 @@ class IntervalTree { assert(is_valid().first); return; } else { - Scalar leftp = 0; - Scalar rightp = 0; + Scalar leftp = Scalar{}; + Scalar rightp = Scalar{}; - if (leftextent || rightextent) { + if (leftextent != Scalar{} || rightextent != Scalar{}) { leftp = leftextent; rightp = rightextent; } else { From cc610c996e1540d9970999cb57612c8a0c0e8ff8 Mon Sep 17 00:00:00 2001 From: Pankaj Bhojwani Date: Thu, 1 Oct 2020 16:58:38 -0400 Subject: [PATCH 2/4] small fix --- IntervalTree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IntervalTree.h b/IntervalTree.h index b67d13b..aedc89f 100644 --- a/IntervalTree.h +++ b/IntervalTree.h @@ -61,7 +61,7 @@ class IntervalTree { IntervalTree() : left(nullptr) , right(nullptr) - , center(Scalar{}) + , center() {} ~IntervalTree() = default; From 0f97e944497241fcf483d19316b178e10c40f3d7 Mon Sep 17 00:00:00 2001 From: Pankaj Bhojwani Date: Mon, 5 Oct 2020 11:32:59 -0400 Subject: [PATCH 3/4] qol --- IntervalTree.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/IntervalTree.h b/IntervalTree.h index aedc89f..ab2bf14 100644 --- a/IntervalTree.h +++ b/IntervalTree.h @@ -21,6 +21,24 @@ class Interval { , stop(std::max(s, e)) , value(v) {} + + Interval() + { + } + + constexpr bool operator==(const Interval& other) const noexcept + { + return start == other.start && + stop == other.stop && + value == other.value; + } + + constexpr bool operator!=(const Interval& other) const noexcept + { + return start != other.start || + stop != other.stop || + value != other.value; + } }; template From 9f4d488616495944dec129c30dacc7939b021bbd Mon Sep 17 00:00:00 2001 From: Pankaj Bhojwani Date: Mon, 5 Oct 2020 12:13:21 -0400 Subject: [PATCH 4/4] equality redundancy --- IntervalTree.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/IntervalTree.h b/IntervalTree.h index ab2bf14..2d904e7 100644 --- a/IntervalTree.h +++ b/IntervalTree.h @@ -35,9 +35,7 @@ class Interval { constexpr bool operator!=(const Interval& other) const noexcept { - return start != other.start || - stop != other.stop || - value != other.value; + return !(*this == other); } };