1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Add Ranges::eraseUpTo

This commit is contained in:
attila 2024-11-21 17:29:20 +01:00
parent 5b604e6d3c
commit 0dc97de993
2 changed files with 43 additions and 0 deletions

View file

@ -663,6 +663,41 @@ public:
expectRangedValuesItem (rangedValues.getItem (5), { 45, 60 }, 'd');
}
beginTest ("RangedValues::eraseUpTo() - erasing before all ranges has no effect");
{
auto rangedValues = createRangedValuesObjectForErase();
rangedValues.eraseUpTo (rangedValues.getRanges().get (0).getStart());
expectRangedValuesItem (rangedValues.getItem (0), { 0, 10 }, 'a');
expectRangedValuesItem (rangedValues.getItem (1), { 11, 20 }, 'b');
expectRangedValuesItem (rangedValues.getItem (2), { 23, 30 }, 'c');
expectRangedValuesItem (rangedValues.getItem (3), { 35, 45 }, 'c');
expectRangedValuesItem (rangedValues.getItem (4), { 45, 60 }, 'd');
}
beginTest ("RangedValues::eraseUpTo() - erasing values up to, not including 15");
{
auto rangedValues = createRangedValuesObjectForErase();
rangedValues.eraseUpTo (15);
expectRangedValuesItem (rangedValues.getItem (0), { 15, 20 }, 'b');
expectRangedValuesItem (rangedValues.getItem (1), { 23, 30 }, 'c');
expectRangedValuesItem (rangedValues.getItem (2), { 35, 45 }, 'c');
expectRangedValuesItem (rangedValues.getItem (3), { 45, 60 }, 'd');
}
beginTest ("RangedValues::eraseUpTo() - erasing up to the end of all ranges clears the container");
{
auto rangedValues = createRangedValuesObjectForErase();
const auto ranges = rangedValues.getRanges();
rangedValues.eraseUpTo (ranges.get (ranges.size() - 1).getEnd());
expect (rangedValues.isEmpty());
}
beginTest ("RangedValues::drop() - drop shifts ranges downward on the right side");
{
auto rangedValues = createRangedValuesObjectForErase();

View file

@ -638,6 +638,14 @@ public:
return erase ({ i, ranges.get (ranges.size() - 1).getEnd() });
}
Ranges::Operations eraseUpTo (int64 i)
{
if (ranges.isEmpty())
return {};
return erase ({ ranges.get (0).getStart(), i });
}
/** Create a RangedValues object from non-overlapping ranges. */
template<MergeEqualItems mergeEquals, typename Iterable>
auto setForEach (Iterable begin, Iterable end)