Bug 1184043: P1. Ignore empty interval in intervalset. r=mattwoodrow

Add IntersectsStrict method.
This commit is contained in:
Jean-Yves Avenard 2015-07-15 20:17:27 +10:00
parent 48250e1441
commit a208b0e347

View File

@ -157,6 +157,11 @@ public:
(aOther.mStart - aOther.mFuzz < mEnd + mFuzz);
}
bool IntersectsStrict(const SelfType& aOther) const
{
return mStart < aOther.mEnd && aOther.mStart < mEnd;
}
// Same as Intersects, but including the boundaries.
bool Touches(const SelfType& aOther) const
{
@ -308,14 +313,18 @@ public:
SelfType& operator= (const ElemType& aInterval)
{
mIntervals.Clear();
mIntervals.AppendElement(aInterval);
if (!aInterval.IsEmpty()) {
mIntervals.AppendElement(aInterval);
}
return *this;
}
SelfType& operator= (ElemType&& aInterval)
{
mIntervals.Clear();
mIntervals.AppendElement(Move(aInterval));
if (!aInterval.IsEmpty()) {
mIntervals.AppendElement(Move(aInterval));
}
return *this;
}
@ -463,7 +472,7 @@ public:
const ContainerType& other = aOther.mIntervals;
IndexType i = 0, j = 0;
for (; i < mIntervals.Length() && j < other.Length();) {
if (mIntervals[i].Intersects(other[j])) {
if (mIntervals[i].IntersectsStrict(other[j])) {
intersection.AppendElement(mIntervals[i].Intersection(other[j]));
}
if (mIntervals[i].mEnd < other[j].mEnd) {