OpenShot Library | libopenshot-audio  0.2.0
juce::SparseSet< Type > Class Template Reference

Holds a set of primitive values, storing them as a set of ranges. More...

#include <juce_SparseSet.h>

Public Member Functions

 SparseSet (const SparseSet &)=default
 
SparseSetoperator= (const SparseSet &)=default
 
 SparseSet (SparseSet &&other) noexcept
 
SparseSetoperator= (SparseSet &&other) noexcept
 
void clear ()
 Clears the set. More...
 
bool isEmpty () const noexcept
 Checks whether the set is empty. More...
 
Type size () const noexcept
 Returns the number of values in the set. More...
 
Type operator[] (Type index) const noexcept
 Returns one of the values in the set. More...
 
bool contains (Type valueToLookFor) const noexcept
 Checks whether a particular value is in the set. More...
 
int getNumRanges () const noexcept
 Returns the number of contiguous blocks of values. More...
 
Range< Type > getRange (int rangeIndex) const noexcept
 Returns one of the contiguous ranges of values stored. More...
 
Range< Type > getTotalRange () const noexcept
 Returns the range between the lowest and highest values in the set. More...
 
void addRange (Range< Type > range)
 Adds a range of contiguous values to the set. More...
 
void removeRange (Range< Type > rangeToRemove)
 Removes a range of values from the set. More...
 
void invertRange (Range< Type > range)
 Does an XOR of the values in a given range. More...
 
bool overlapsRange (Range< Type > range) const noexcept
 Checks whether any part of a given range overlaps any part of this set. More...
 
bool containsRange (Range< Type > range) const noexcept
 Checks whether the whole of a given range is contained within this one. More...
 
const Array< Range< Type > > & getRanges () const noexcept
 Returns the set as a list of ranges, which you may want to iterate over. More...
 
bool operator== (const SparseSet &other) const noexcept
 
bool operator!= (const SparseSet &other) const noexcept
 

Detailed Description

template<class Type>
class juce::SparseSet< Type >

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.

Definition at line 44 of file juce_SparseSet.h.

Member Function Documentation

◆ clear()

template<class Type >
void juce::SparseSet< Type >::clear ( )
inline

Clears the set.

Definition at line 58 of file juce_SparseSet.h.

◆ isEmpty()

template<class Type >
bool juce::SparseSet< Type >::isEmpty ( ) const
inlinenoexcept

Checks whether the set is empty.

This is much quicker than using (size() == 0).

Definition at line 63 of file juce_SparseSet.h.

◆ size()

template<class Type >
Type juce::SparseSet< Type >::size ( ) const
inlinenoexcept

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.

Definition at line 71 of file juce_SparseSet.h.

◆ operator[]()

template<class Type >
Type juce::SparseSet< Type >::operator[] ( Type  index) const
inlinenoexcept

Returns one of the values in the set.

Parameters
indexthe index of the value to retrieve, in the range 0 to (size() - 1).
Returns
the value at this index, or 0 if it's out-of-range

Definition at line 86 of file juce_SparseSet.h.

◆ contains()

template<class Type >
bool juce::SparseSet< Type >::contains ( Type  valueToLookFor) const
inlinenoexcept

Checks whether a particular value is in the set.

Definition at line 104 of file juce_SparseSet.h.

◆ getNumRanges()

template<class Type >
int juce::SparseSet< Type >::getNumRanges ( ) const
inlinenoexcept

Returns the number of contiguous blocks of values.

See also
getRange

Definition at line 122 of file juce_SparseSet.h.

◆ getRange()

template<class Type >
Range<Type> juce::SparseSet< Type >::getRange ( int  rangeIndex) const
inlinenoexcept

Returns one of the contiguous ranges of values stored.

Parameters
rangeIndexthe index of the range to look up, between 0 and (getNumRanges() - 1)
See also
getTotalRange

Definition at line 129 of file juce_SparseSet.h.

◆ getTotalRange()

template<class Type >
Range<Type> juce::SparseSet< Type >::getTotalRange ( ) const
inlinenoexcept

Returns the range between the lowest and highest values in the set.

See also
getRange

Definition at line 134 of file juce_SparseSet.h.

Referenced by juce::SparseSet< Type >::removeRange().

◆ addRange()

template<class Type >
void juce::SparseSet< Type >::addRange ( Range< Type >  range)
inline

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.

Definition at line 147 of file juce_SparseSet.h.

References juce::Range< ValueType >::getStart(), juce::Range< ValueType >::isEmpty(), and juce::SparseSet< Type >::removeRange().

Referenced by juce::SparseSet< Type >::invertRange().

◆ removeRange()

template<class Type >
void juce::SparseSet< Type >::removeRange ( Range< Type >  rangeToRemove)
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.

Definition at line 162 of file juce_SparseSet.h.

References juce::Range< ValueType >::contains(), juce::Range< ValueType >::getEnd(), juce::Range< ValueType >::getStart(), juce::SparseSet< Type >::getTotalRange(), and juce::Range< ValueType >::isEmpty().

Referenced by juce::SparseSet< Type >::addRange(), and juce::SparseSet< Type >::invertRange().

◆ invertRange()

template<class Type >
void juce::SparseSet< Type >::invertRange ( Range< Type >  range)
inline

Does an XOR of the values in a given range.

Definition at line 209 of file juce_SparseSet.h.

References juce::SparseSet< Type >::addRange(), and juce::SparseSet< Type >::removeRange().

◆ overlapsRange()

template<class Type >
bool juce::SparseSet< Type >::overlapsRange ( Range< Type >  range) const
inlinenoexcept

Checks whether any part of a given range overlaps any part of this set.

Definition at line 224 of file juce_SparseSet.h.

◆ containsRange()

template<class Type >
bool juce::SparseSet< Type >::containsRange ( Range< Type >  range) const
inlinenoexcept

Checks whether the whole of a given range is contained within this one.

Definition at line 235 of file juce_SparseSet.h.

◆ getRanges()

template<class Type >
const Array<Range<Type> >& juce::SparseSet< Type >::getRanges ( ) const
inlinenoexcept

The documentation for this class was generated from the following file: