Holds a set of primitive values, storing them as a set of ranges. More...
#include <juce_SparseSet.h>
Public Member Functions | |
SparseSet () | |
Creates a new empty set. More... | |
SparseSet (const SparseSet< Type > &other) | |
Creates a copy of another SparseSet. More... | |
void | addRange (const Range< Type > range) |
Adds a range of contiguous values to the set. More... | |
void | clear () |
Clears the set. More... | |
bool | contains (const Type valueToLookFor) const |
Checks whether a particular value is in the set. More... | |
bool | containsRange (const Range< Type > range) |
Checks whether the whole of a given range is contained within this one. More... | |
int | getNumRanges () const noexcept |
Returns the number of contiguous blocks of values. More... | |
const Range< Type > | getRange (const int rangeIndex) const |
Returns one of the contiguous ranges of values stored. More... | |
Range< Type > | getTotalRange () const |
Returns the range between the lowest and highest values in the set. More... | |
void | invertRange (const Range< Type > range) |
Does an XOR of the values in a given range. More... | |
bool | isEmpty () const noexcept |
Checks whether the set is empty. More... | |
bool | operator!= (const SparseSet< Type > &other) noexcept |
bool | operator== (const SparseSet< Type > &other) noexcept |
Type | operator[] (Type index) const |
Returns one of the values in the set. More... | |
bool | overlapsRange (const Range< Type > range) |
Checks whether any part of a given range overlaps any part of this set. More... | |
void | removeRange (const Range< Type > rangeToRemove) |
Removes a range of values from the set. More... | |
Type | size () const |
Returns the number of values in the set. More... | |
Private Member Functions | |
void | simplify () |
Private Attributes | |
Array< Type, DummyCriticalSection > | values |
Holds a set of primitive values, storing them as a set of ranges.
This container acts like an array, but can efficiently hold large contiguous ranges of values. It's quite a specialised class, mostly useful for things like keeping the set of selected rows in a listbox.
The type used as a template parameter must be an integer type, such as int, short, int64, etc.
Creates a copy of another SparseSet.
Adds a range of contiguous values to the set.
e.g. addRange (Range <int> (10, 14)) will add (10, 11, 12, 13) to the set.
Referenced by SparseSet< int >::invertRange().
|
inline |
Clears the set.
|
inline |
Checks whether a particular value is in the set.
Referenced by SparseSet< int >::removeRange().
Checks whether the whole of a given range is contained within this one.
Returns the number of contiguous blocks of values.
Referenced by SparseSet< int >::containsRange(), SparseSet< int >::getRange(), SparseSet< int >::invertRange(), and SparseSet< int >::overlapsRange().
|
inline |
Returns one of the contiguous ranges of values stored.
rangeIndex | the index of the range to look up, between 0 and (getNumRanges() - 1) |
Referenced by SparseSet< int >::invertRange().
Returns the range between the lowest and highest values in the set.
Does an XOR of the values in a given range.
|
inlinenoexcept |
Checks whether the set is empty.
This is much quicker than using (size() == 0).
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
Returns one of the values in the set.
index | the index of the value to retrieve, in the range 0 to (size() - 1). |
Checks whether any part of a given range overlaps any part of this set.
|
inline |
Removes a range of values from the set.
e.g. removeRange (Range<int> (10, 14)) will remove (10, 11, 12, 13) from the set.
Referenced by SparseSet< int >::addRange(), and SparseSet< int >::invertRange().
|
inlineprivate |
Referenced by SparseSet< int >::addRange(), and SparseSet< int >::removeRange().
|
inline |
Returns the number of values in the set.
Because of the way the data is stored, this method can take longer if there are a lot of items in the set. Use isEmpty() for a quick test of whether there are any items.
|
private |
Referenced by SparseSet< int >::addRange(), SparseSet< int >::clear(), SparseSet< int >::contains(), SparseSet< int >::containsRange(), SparseSet< int >::getNumRanges(), SparseSet< int >::getRange(), SparseSet< int >::getTotalRange(), SparseSet< int >::isEmpty(), SparseSet< int >::operator!=(), SparseSet< int >::operator==(), SparseSet< int >::operator[](), SparseSet< int >::overlapsRange(), SparseSet< int >::removeRange(), and SparseSet< int >::size().