Classes | |
class | AbstractFifo |
Encapsulates the logic required to implement a lock-free FIFO. More... | |
class | AbstractFifo::ScopedReadWrite< mode > |
Class for a scoped reader/writer. More... | |
class | Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize > |
Holds a resizable array of primitive or copy-by-value objects. More... | |
class | ArrayAllocationBase< ElementType, TypeOfCriticalSectionToUse > |
Implements some basic array storage allocation functions. More... | |
class | ArrayBase< ElementType, TypeOfCriticalSectionToUse > |
A basic object container. More... | |
class | DynamicObject |
Represents a dynamically implemented object. More... | |
class | DefaultElementComparator< ElementType > |
A simple ElementComparator class that can be used to sort an array of objects that support the '<' operator. More... | |
struct | Enumerated< Index, Value > |
Returned when dereferencing an EnumerateIterator. More... | |
class | EnumerateIterator< Iter, Index > |
An iterator that wraps some other iterator, keeping track of the relative position of that iterator based on calls to arithmetic operators such as operator++(), operator--(), operator+(), and operator-(). More... | |
class | IteratorPair< Begin, End > |
Wraps a pair of iterators, providing member begin() and end() functions that return those iterators. More... | |
class | FixedSizeFunction< len, Ret(Args...)> |
A type similar to std::function that holds a callable object. More... | |
struct | DefaultHashFunctions |
A simple class to generate hash functions for some primitive types, intended for use with the HashMap class. More... | |
class | HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse > |
Holds a set of mappings between some key/value pairs. More... | |
struct | HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::Iterator |
Iterates over the items in a HashMap. More... | |
class | LinkedListPointer< ObjectType > |
Helps to manipulate singly-linked lists of objects. More... | |
class | LinkedListPointer< ObjectType >::Appender |
Allows efficient repeated insertions into a list. More... | |
class | ListenerList< ListenerClass, ArrayType > |
Holds a set of objects and can invoke a member function callback on each object in the set with a single call. More... | |
struct | ListenerList< ListenerClass, ArrayType >::DummyBailOutChecker |
A dummy bail-out checker that always returns false. More... | |
class | LightweightListenerList< ListenerClass > |
A lightweight version of the ListenerList that doesn't provide any guarantees when mutating the list from a callback, but allows callbacks to be triggered concurrently without a mutex. More... | |
class | NamedValueSet |
Holds a set of named var objects. More... | |
struct | NamedValueSet::NamedValue |
Structure for a named var object. More... | |
class | Optional< Value > |
A simple optional type. More... | |
class | OwnedArray< ObjectClass, TypeOfCriticalSectionToUse > |
An array designed for holding objects. More... | |
class | PropertySet |
A set of named property values, which can be strings, integers, floating point, etc. More... | |
class | ReferenceCountedArray< ObjectClass, TypeOfCriticalSectionToUse > |
Holds a list of objects derived from ReferenceCountedObject, or which implement basic reference-count handling methods. More... | |
class | ScopedValueSetter< ValueType > |
Helper class providing an RAII-based mechanism for temporarily setting and then re-setting a value. More... | |
class | SingleThreadedAbstractFifo |
Encapsulates the logic for a single-threaded FIFO. More... | |
class | SortedSet< ElementType, TypeOfCriticalSectionToUse > |
Holds a set of unique primitive objects, such as ints or doubles. More... | |
class | Span< Value, Extent > |
A non-owning view over contiguous objects stored in an Array or vector or other similar container. More... | |
class | SparseSet< Type > |
Holds a set of primitive values, storing them as a set of ranges. More... | |
class | var |
A variant class, that can be used to hold a range of primitive values. More... | |
struct | var::NativeFunctionArgs |
This structure is passed to a NativeFunction callback, and contains invocation details about the function's arguments and context. More... | |
Typedefs | |
template<typename ListenerClass > | |
using | ThreadSafeListenerList = ListenerList<ListenerClass, Array<ListenerClass*, CriticalSection>> |
A thread safe version of the ListenerList class. | |
using | Nullopt = std::nullopt_t |
Functions | |
template<typename Begin , typename End = Begin> | |
constexpr auto | makeRange (Begin begin, End end) |
Given two iterators "begin" and "end", returns an IteratorPair with a member begin() and end() function. | |
template<typename Range , typename Index = detail::withAdlSize::AdlSignedSize<Range>> | |
constexpr auto | enumerate (Range &&range, Index startingValue={}) |
Given a range and an optional starting offset, returns an IteratorPair that holds EnumerateIterators wrapping the begin() and end() of the range. | |
template<size_t len, typename T > | |
bool | operator!= (const FixedSizeFunction< len, T > &fn, std::nullptr_t) |
template<size_t len, typename T > | |
bool | operator!= (std::nullptr_t, const FixedSizeFunction< len, T > &fn) |
template<size_t len, typename T > | |
bool | operator== (const FixedSizeFunction< len, T > &fn, std::nullptr_t) |
template<size_t len, typename T > | |
bool | operator== (std::nullptr_t, const FixedSizeFunction< len, T > &fn) |
template<typename Value > | |
Optional< std::decay_t< Value > > | makeOptional (Value &&v) |
template<typename T , typename End > | |
Span (T, End) -> Span< std::remove_pointer_t< decltype(detail::toAddress(std::declval< T >()))> > | |
template<typename T , size_t N> | |
Span (T(&)[N]) -> Span< T, N > | |
template<typename T , size_t N> | |
Span (std::array< T, N > &) -> Span< T, N > | |
template<typename T , size_t N> | |
Span (const std::array< T, N > &) -> Span< const T, N > | |
template<typename Range > | |
Span (Range &&r) -> Span< std::remove_pointer_t< decltype(std::data(r))> > | |
JUCE_API bool | operator== (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator!= (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator< (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator<= (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator> (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator>= (const var &, const var &) |
Compares the values of two var objects, using the var::equals() comparison. | |
JUCE_API bool | operator== (const var &, const String &) |
JUCE_API bool | operator!= (const var &, const String &) |
JUCE_API bool | operator== (const var &, const char *) |
JUCE_API bool | operator!= (const var &, const char *) |
template<typename ElementComparator , typename TargetValueType > | |
int | Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::indexOfSorted (ElementComparator &comparator, TargetValueType elementToLookFor) const |
Finds the index of an element in the array, assuming that the array is sorted. | |
template<class ElementComparator > | |
void | Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::sort (ElementComparator &comparator, bool retainOrderOfEquivalentItems=false) |
Sorts the elements in the array. | |
template<class ElementComparator > | |
int | OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::addSorted (ElementComparator &comparator, ObjectClass *newObject) noexcept |
Inserts a new object into the array assuming that the array is sorted. | |
template<typename ElementComparator > | |
int | OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::indexOfSorted (ElementComparator &comparator, const ObjectClass *objectToLookFor) const noexcept |
Finds the index of an object in the array, assuming that the array is sorted. | |
template<class ElementComparator > | |
void | OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::sort (ElementComparator &comparator, bool retainOrderOfEquivalentItems=false) noexcept |
Sorts the elements in the array. | |
template<class ElementComparator > | |
int | ReferenceCountedArray< ObjectClass, TypeOfCriticalSectionToUse >::indexOfSorted (ElementComparator &comparator, const ObjectClass *objectToLookFor) const noexcept |
Finds the index of an object in the array, assuming that the array is sorted. | |
template<class ElementComparator > | |
void | ReferenceCountedArray< ObjectClass, TypeOfCriticalSectionToUse >::sort (ElementComparator &comparator, bool retainOrderOfEquivalentItems=false) noexcept |
Sorts the elements in the array. | |
Variables | |
constexpr auto | nullopt = std::nullopt |
constexpr auto | dynamicExtent = std::numeric_limits<size_t>::max() |
using ThreadSafeListenerList = ListenerList<ListenerClass, Array<ListenerClass*, CriticalSection>> |
A thread safe version of the ListenerList class.
using Nullopt = std::nullopt_t |
|
nodiscardconstexpr |
Given two iterators "begin" and "end", returns an IteratorPair with a member begin() and end() function.
This pair can be used in contexts that expect an iterable range, the most significant of which is ranged-for loops. This automatically deduces the Begin and End types, so it is more concise to use than directly calling the IteratorPair constructor.
|
nodiscardconstexpr |
Given a range and an optional starting offset, returns an IteratorPair that holds EnumerateIterators wrapping the begin() and end() of the range.
This is useful in situations where you need to iterate some range, but also query the position of each item in the range.
A simple usage might look like this:
You can also use structured bindings to concisely destructure each Enumerated instance:
Note that the Enumerated instance is returned by value. This is because each Enumerated instance is created on-demand when the iterator is dereferenced. As a result, the following will result in a dangling reference, and will probably trigger a compiler warning:
The 'value' member of Enumerated automatically assumes the same type as dereferencing the wrapped iterator, which is normally a reference to an element of a container. In the following snippet, the type of '[index, value]' is 'const Enumerated<ptrdiff_t, int&>', the type of 'index' is 'ptrdiff_t', and the type of 'value' is 'int&'.
By default, the constness of pair.value will match the constness of the range passed to enumerate. If you pass a mutable lvalue reference to enumerate, then each value will also be mutable. If you pass a constant lvalue reference to enumerate, then each value will be const. If you know that you don't need the iterated elements to be mutable, it's good practice to wrap the range with std::as_const before passing it to enumerate:
bool operator!= | ( | const FixedSizeFunction< len, T > & | fn, |
std::nullptr_t | ) |
bool operator!= | ( | std::nullptr_t | , |
const FixedSizeFunction< len, T > & | fn ) |
bool operator== | ( | const FixedSizeFunction< len, T > & | fn, |
std::nullptr_t | ) |
bool operator== | ( | std::nullptr_t | , |
const FixedSizeFunction< len, T > & | fn ) |
Span | ( | T | , |
End | ) -> Span< std::remove_pointer_t< decltype(detail::toAddress(std::declval< T >()))> > |
Span | ( | T(&) | [N] | ) | -> Span< T, N > |
Span | ( | std::array< T, N > & | ) | -> Span< T, N > |
Span | ( | const std::array< T, N > & | ) | -> Span< const T, N > |
Span | ( | Range && | r | ) | -> Span< std::remove_pointer_t< decltype(std::data(r))> > |
Compares the values of two var objects, using the var::equals() comparison.
Compares the values of two var objects, using the var::equals() comparison.
Compares the values of two var objects, using the var::equals() comparison.
Referenced by ColourGradient::operator>=().
Compares the values of two var objects, using the var::equals() comparison.
Compares the values of two var objects, using the var::equals() comparison.
Compares the values of two var objects, using the var::equals() comparison.
int Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::indexOfSorted | ( | ElementComparator & | comparator, |
TargetValueType | elementToLookFor ) const |
Finds the index of an element in the array, assuming that the array is sorted.
This will use a comparator to do a binary-chop to find the index of the given element, if it exists. If the array isn't sorted, the behaviour of this method will be unpredictable.
comparator | the comparator to use to compare the elements - see the sort() method for details about the form this object should take |
elementToLookFor | the element to search for |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().
void Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::sort | ( | ElementComparator & | comparator, |
bool | retainOrderOfEquivalentItems = false ) |
Sorts the elements in the array.
This will use a comparator object to sort the elements into order. The object passed must have a method of the form:
..and this method must return:
To improve performance, the compareElements() method can be declared as static or const.
comparator | the comparator to use for comparing elements. |
retainOrderOfEquivalentItems | if this is true, then items which the comparator says are equivalent will be kept in the order in which they currently appear in the array. This is slower to perform, but may be important in some cases. If it's false, a faster algorithm is used, but equivalent elements may be rearranged. |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin().
|
noexcept |
Inserts a new object into the array assuming that the array is sorted.
This will use a comparator to find the position at which the new object should go. If the array isn't sorted, the behaviour of this method will be unpredictable.
comparator | the comparator to use to compare the elements - see the sort method for details about this object's structure |
newObject | the new object to insert to the array |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::getLock(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::insert(), and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().
|
noexcept |
Finds the index of an object in the array, assuming that the array is sorted.
This will use a comparator to do a binary-chop to find the index of the given element, if it exists. If the array isn't sorted, the behaviour of this method will be unpredictable.
comparator | the comparator to use to compare the elements - see the sort() method for details about the form this object should take |
objectToLookFor | the object to search for |
References OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::getLock(), and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().
|
noexcept |
Sorts the elements in the array.
This will use a comparator object to sort the elements into order. The object passed must have a method of the form:
..and this method must return:
To improve performance, the compareElements() method can be declared as static or const.
comparator | the comparator to use for comparing elements. |
retainOrderOfEquivalentItems | if this is true, then items which the comparator says are equivalent will be kept in the order in which they currently appear in the array. This is slower to perform, but may be important in some cases. If it's false, a faster algorithm is used, but equivalent elements may be rearranged. |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::getLock(), and OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::size().
Referenced by ValueTree::sort().
|
noexcept |
Finds the index of an object in the array, assuming that the array is sorted.
This will use a comparator to do a binary-chop to find the index of the given element, if it exists. If the array isn't sorted, the behaviour of this method will be unpredictable.
comparator | the comparator to use to compare the elements - see the sort() method for details about the form this object should take |
objectToLookFor | the object to search for |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().
|
noexcept |
Sorts the elements in the array.
This will use a comparator object to sort the elements into order. The object passed must have a method of the form:
..and this method must return:
To improve performance, the compareElements() method can be declared as static or const.
comparator | the comparator to use for comparing elements. |
retainOrderOfEquivalentItems | if this is true, then items which the comparator says are equivalent will be kept in the order in which they currently appear in the array. This is slower to perform, but may be important in some cases. If it's false, a faster algorithm is used, but equivalent elements may be rearranged. |
References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin(), and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().
|
constexpr |
|
constexpr |