diff --git a/IntervalTree.h b/IntervalTree.h index eb9fc62..2d904e7 100644 --- a/IntervalTree.h +++ b/IntervalTree.h @@ -21,6 +21,22 @@ 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 !(*this == other); + } }; template @@ -61,7 +77,7 @@ class IntervalTree { IntervalTree() : left(nullptr) , right(nullptr) - , center(0) + , center() {} ~IntervalTree() = default; @@ -93,8 +109,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 +122,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 +134,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 {