71 for (
auto& r : ranges)
72 total += r.getLength();
86 for (
auto& r : ranges)
88 auto end =
total + r.getLength();
91 return r.getStart() + (index -
total);
102 for (
auto& r : ranges)
135 return { ranges.
getFirst().getStart(),
149 std::sort (ranges.
begin(), ranges.
end(),
162 for (
int i = ranges.
size(); --i >= 0;)
210 for (
auto& r : ranges)
222 if (! range.isEmpty())
223 for (
auto& r : ranges)
224 if (r.intersects (range))
233 if (! range.isEmpty())
234 for (
auto& r : ranges)
235 if (r.contains (range))
246 bool operator!= (
const SparseSet& other)
const noexcept {
return ranges != other.ranges; }
250 Array<Range<Type>> ranges;
254 for (
int i = ranges.size(); --i > 0;)
257 auto& r2 = ranges.getReference (i);
259 if (r1.getEnd() == r2.getStart())
261 r1.setEnd (r2.getEnd());
bool isEmpty() const noexcept
int size() const noexcept
void removeRange(int startIndex, int numberToRemove)
void remove(int indexToRemove)
void insert(int indexToInsertAt, ParameterType newElement)
ElementType getFirst() const noexcept
ElementType * begin() noexcept
ElementType * end() noexcept
void add(const ElementType &newElement)
bool contains(ParameterType elementToLookFor) const
ElementType & getReference(int index) noexcept
ElementType getLast() const noexcept
Range< Type > getRange(int rangeIndex) const noexcept
void invertRange(Range< Type > range)
bool overlapsRange(Range< Type > range) const noexcept
Type size() const noexcept
void addRange(Range< Type > range)
bool isEmpty() const noexcept
Type operator[](Type index) const noexcept
bool contains(Type valueToLookFor) const noexcept
int getNumRanges() const noexcept
const Array< Range< Type > > & getRanges() const noexcept
Range< Type > getTotalRange() const noexcept
bool containsRange(Range< Type > range) const noexcept
void removeRange(Range< Type > rangeToRemove)