72 total +=
r.getLength();
82 Type operator[] (Type index)
const noexcept
88 auto end = total +
r.getLength();
91 return r.getStart() + (index - total);
104 if (
r.getStart() > valueToLookFor)
107 if (
r.getEnd() > valueToLookFor)
135 return {
ranges.getFirst().getStart(),
136 ranges.getLast().getEnd() };
162 for (
int i =
ranges.size(); --
i >= 0;)
166 if (
r.getEnd() <= rangeToRemove.
getStart())
169 if (
r.getStart() >= rangeToRemove.
getEnd())
176 else if (
r.contains (rangeToRemove))
178 auto r1 =
r.withEnd (rangeToRemove.
getStart());
179 auto r2 =
r.withStart (rangeToRemove.
getEnd());
182 jassert (! r1.isEmpty() || !
r2.isEmpty());
189 if (! r1.isEmpty() && !
r2.isEmpty())
192 else if (rangeToRemove.
getEnd() >
r.getEnd())
198 r.setStart (rangeToRemove.
getEnd());
215 for (
auto&
r : newItems.
ranges)
222 if (! range.isEmpty())
224 if (
r.intersects (range))
233 if (! range.isEmpty())
235 if (
r.contains (range))
245 bool operator== (
const SparseSet& other)
const noexcept {
return ranges == other.ranges; }
246 bool operator!= (
const SparseSet& other)
const noexcept {
return ranges != other.ranges; }
254 for (
int i =
ranges.size(); --
i > 0;)
256 auto& r1 =
ranges.getReference (
i - 1);
259 if (r1.getEnd() ==
r2.getStart())
261 r1.setEnd (
r2.getEnd());
#define noexcept
Definition DistrhoDefines.h:72
uint8_t a
Definition Spc_Cpu.h:141
Definition juce_Array.h:56
Definition juce_Range.h:40
constexpr ValueType getStart() const noexcept
Definition juce_Range.h:80
constexpr bool isEmpty() const noexcept
Definition juce_Range.h:89
constexpr ValueType getEnd() const noexcept
Definition juce_Range.h:86
constexpr bool contains(const ValueType position) const noexcept
Definition juce_Range.h:209
Range< Type > getRange(int rangeIndex) const noexcept
Definition juce_SparseSet.h:125
void invertRange(Range< Type > range)
Definition juce_SparseSet.h:205
void clear()
Definition juce_SparseSet.h:54
SparseSet(const SparseSet &)=default
bool overlapsRange(Range< Type > range) const noexcept
Definition juce_SparseSet.h:220
void simplify()
Definition juce_SparseSet.h:252
Type size() const noexcept
Definition juce_SparseSet.h:67
void addRange(Range< Type > range)
Definition juce_SparseSet.h:143
bool isEmpty() const noexcept
Definition juce_SparseSet.h:59
bool contains(Type valueToLookFor) const noexcept
Definition juce_SparseSet.h:100
int getNumRanges() const noexcept
Definition juce_SparseSet.h:118
const Array< Range< Type > > & getRanges() const noexcept
Definition juce_SparseSet.h:242
Range< Type > getTotalRange() const noexcept
Definition juce_SparseSet.h:130
Array< Range< Type > > ranges
Definition juce_SparseSet.h:250
bool containsRange(Range< Type > range) const noexcept
Definition juce_SparseSet.h:231
SparseSet(SparseSet &&other) noexcept
Definition juce_SparseSet.h:49
void removeRange(Range< Type > rangeToRemove)
Definition juce_SparseSet.h:158
register unsigned i
Definition inflate.c:1575
static void r2(register WDL_FFT_REAL *a)
Definition fft.c:1089
Definition carla_juce.cpp:31
RangedDirectoryIterator end(const RangedDirectoryIterator &)
Definition juce_RangedDirectoryIterator.h:184
int r
Definition crypt.c:458
#define const
Definition zconf.h:137