mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Add Ranges::covers
This commit is contained in:
parent
c69119a7b7
commit
0474dacd31
2 changed files with 46 additions and 0 deletions
|
|
@ -406,6 +406,33 @@ public:
|
|||
ranges.drop ({ -1000, 1000 });
|
||||
expect (ranges.isEmpty());
|
||||
}
|
||||
|
||||
beginTest ("Ranges::covers()");
|
||||
{
|
||||
Ranges ranges;
|
||||
|
||||
ranges.set ({ 0, 48 });
|
||||
ranges.set ({ 48, 49 });
|
||||
ranges.set ({ 55, 94 });
|
||||
ranges.set ({ 94, 127 });
|
||||
ranges.set ({ 127, 150 });
|
||||
|
||||
expect (ranges.covers ({ 0, 48 }));
|
||||
expect (ranges.covers ({ 0, 20 }));
|
||||
expect (ranges.covers ({ 10, 30 }));
|
||||
expect (ranges.covers ({ 30, 48 }));
|
||||
expect (ranges.covers ({ 30, 49 }));
|
||||
expect (ranges.covers ({ 55, 150 }));
|
||||
expect (ranges.covers ({ 60, 145 }));
|
||||
|
||||
expect (! ranges.covers ({ -1, 10 }));
|
||||
expect (! ranges.covers ({ 1, 50 }));
|
||||
expect (! ranges.covers ({ 50, 140 }));
|
||||
expect (! ranges.covers ({ 149, 151 }));
|
||||
|
||||
expect (ranges.covers ({ 10, 10 }));
|
||||
expect (! ranges.covers ({ 151, 151 }));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -385,6 +385,25 @@ struct Ranges final
|
|||
return iter != ranges.end() ? std::make_optional (getIndex (iter)) : std::nullopt;
|
||||
}
|
||||
|
||||
/* Returns true if this object covers each element in the provided range. For empty ranges it
|
||||
returns true if the start value is covered.
|
||||
*/
|
||||
bool covers (Range<int64> range) const
|
||||
{
|
||||
for (auto curr = find (range.getStart()), prev = curr; curr != cend(); ++curr)
|
||||
{
|
||||
if (prev != curr && prev->getEnd() != curr->getStart())
|
||||
return false;
|
||||
|
||||
if (range.getEnd() <= curr->getEnd())
|
||||
return true;
|
||||
|
||||
prev = curr;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
size_t getIndex (std::vector<Range<int64>>::const_iterator it) const
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue