A basic object container. More...
#include <juce_ArrayBase.h>
Inherits TypeOfCriticalSectionToUse.
Public Member Functions | |
ArrayBase ()=default | |
ArrayBase (ArrayBase &&other) noexcept | |
template<class OtherElementType , class OtherCriticalSection , typename = AllowConversion<OtherElementType, OtherCriticalSection>> | |
ArrayBase (ArrayBase< OtherElementType, OtherCriticalSection > &&other) noexcept | |
Converting move constructor. More... | |
~ArrayBase () | |
template<typename... OtherElements> | |
void | add (const ElementType &firstNewElement, OtherElements &&... otherElements) |
void | add (const ElementType &newElement) |
template<typename... OtherElements> | |
void | add (ElementType &&firstNewElement, OtherElements &&... otherElements) |
void | add (ElementType &&newElement) |
template<class OtherArrayType > | |
void | addArray (const OtherArrayType &arrayToAddFrom) |
template<class OtherArrayType > | |
std::enable_if<! std::is_pointer< OtherArrayType >::value, int >::type | addArray (const OtherArrayType &arrayToAddFrom, int startIndex, int numElementsToAdd=-1) |
template<typename TypeToCreateFrom > | |
void | addArray (const std::initializer_list< TypeToCreateFrom > &items) |
template<typename Type > | |
void | addArray (const Type *elementsToAdd, int numElementsToAdd) |
const ElementType * | begin () const noexcept |
ElementType * | begin () noexcept |
int | capacity () const noexcept |
void | clear () |
const ElementType * | data () const noexcept |
ElementType * | data () noexcept |
const ElementType * | end () const noexcept |
ElementType * | end () noexcept |
void | ensureAllocatedSize (int minNumElements) |
ElementType | getFirst () const noexcept |
ElementType | getLast () const noexcept |
ElementType | getValueWithDefault (const int index) const noexcept |
void | insert (int indexToInsertAt, ParameterType newElement, int numberOfTimesToInsertIt) |
void | insertArray (int indexToInsertAt, const ElementType *newElements, int numberOfElements) |
void | move (int currentIndex, int newIndex) noexcept |
template<class OtherArrayType > | |
bool | operator!= (const OtherArrayType &other) const noexcept |
ArrayBase & | operator= (ArrayBase &&other) noexcept |
template<class OtherElementType , class OtherCriticalSection , typename = AllowConversion<OtherElementType, OtherCriticalSection>> | |
ArrayBase & | operator= (ArrayBase< OtherElementType, OtherCriticalSection > &&other) noexcept |
Converting move assignment operator. More... | |
template<class OtherArrayType > | |
bool | operator== (const OtherArrayType &other) const noexcept |
const ElementType & | operator[] (const int index) const noexcept |
ElementType & | operator[] (const int index) noexcept |
void | removeElements (int indexToRemoveAt, int numElementsToRemove) |
void | setAllocatedSize (int numElements) |
void | shrinkToNoMoreThan (int maxNumElements) |
int | size () const noexcept |
void | swap (int index1, int index2) |
void | swapWith (ArrayBase &other) noexcept |
Private Types | |
template<class OtherElementType , class OtherCriticalSection > | |
using | AllowConversion = typename std::enable_if<! std::is_same< std::tuple< ElementType, TypeOfCriticalSectionToUse >, std::tuple< OtherElementType, OtherCriticalSection > >::value >::type |
template<typename T > | |
using | IsTriviallyCopyable = std::is_trivially_copyable< T > |
template<typename T > | |
using | NonTriviallyCopyableVoid = typename std::enable_if<! IsTriviallyCopyable< T >::value, void >::type |
using | ParameterType = typename TypeHelpers::ParameterType< ElementType >::type |
template<typename T > | |
using | TriviallyCopyableVoid = typename std::enable_if< IsTriviallyCopyable< T >::value, void >::type |
Private Member Functions | |
template<typename T = ElementType> | |
TriviallyCopyableVoid< T > | addArrayInternal (const ElementType *otherElements, int numElements) |
template<typename Type , typename T = ElementType> | |
TriviallyCopyableVoid< T > | addArrayInternal (const Type *otherElements, int numElements) |
template<typename Type , typename T = ElementType> | |
NonTriviallyCopyableVoid< T > | addArrayInternal (const Type *otherElements, int numElements) |
template<typename... Elements> | |
void | addAssumingCapacityIsReady (Elements &&... toAdd) |
template<typename... Elements> | |
void | addImpl (Elements &&... toAdd) |
void | checkSourceIsNotAMember (const ElementType &element) |
ElementType * | createInsertSpace (int indexToInsertAt, int numElements) |
template<typename T = ElementType> | |
TriviallyCopyableVoid< T > | createInsertSpaceInternal (int indexToInsertAt, int numElements) |
template<typename T = ElementType> | |
NonTriviallyCopyableVoid< T > | createInsertSpaceInternal (int indexToInsertAt, int numElements) |
template<typename T = ElementType> | |
std::enable_if< std::is_move_assignable< T >::value, void >::type | moveAssignElement (ElementType *destination, ElementType &&source) |
template<typename T = ElementType> | |
std::enable_if<! std::is_move_assignable< T >::value, void >::type | moveAssignElement (ElementType *destination, ElementType &&source) |
template<typename T = ElementType> | |
TriviallyCopyableVoid< T > | moveInternal (int currentIndex, int newIndex) noexcept |
template<typename T = ElementType> | |
NonTriviallyCopyableVoid< T > | moveInternal (int currentIndex, int newIndex) noexcept |
template<typename T = ElementType> | |
TriviallyCopyableVoid< T > | removeElementsInternal (int indexToRemoveAt, int numElementsToRemove) |
template<typename T = ElementType> | |
NonTriviallyCopyableVoid< T > | removeElementsInternal (int indexToRemoveAt, int numElementsToRemove) |
template<typename T = ElementType> | |
TriviallyCopyableVoid< T > | setAllocatedSizeInternal (int numElements) |
template<typename T = ElementType> | |
NonTriviallyCopyableVoid< T > | setAllocatedSizeInternal (int numElements) |
Private Attributes | |
HeapBlock< ElementType > | elements |
int | numAllocated = 0 |
int | numUsed = 0 |
Friends | |
template<class OtherElementType , class OtherCriticalSection > | |
class | ArrayBase |
A basic object container.
This class isn't really for public use - it's used by the other array classes, but might come in handy for some purposes.
It inherits from a critical section class to allow the arrays to use the "empty base class optimisation" pattern to reduce their footprint.
@tags{Core}
|
private |
|
private |
|
private |
|
private |
|
private |
|
default |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
Converting move constructor.
Only enabled when the other array has a different type to this one. If you see a compile error here, it's probably because you're attempting a conversion that HeapBlock won't allow.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlineprivate |
|
inlineprivate |
|
inlineprivatenoexcept |
|
inlineprivatenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Converting move assignment operator.
Only enabled when the other array has a different type to this one. If you see a compile error here, it's probably because you're attempting a conversion that HeapBlock won't allow.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
friend |
|
private |
Referenced by juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addArray(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addArrayInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addAssumingCapacityIsReady(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::begin(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::clear(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::createInsertSpace(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::createInsertSpaceInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::data(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::end(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::ensureAllocatedSize(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getFirst(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getLast(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getValueWithDefault(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::moveInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::operator=(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::operator[](), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::removeElementsInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::setAllocatedSize(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::setAllocatedSizeInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::swap(), and juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::swapWith().
|
private |
Referenced by juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::capacity(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::ensureAllocatedSize(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::operator=(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::setAllocatedSize(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::shrinkToNoMoreThan(), and juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::swapWith().
|
private |
Referenced by juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addArray(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addArrayInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addAssumingCapacityIsReady(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::addImpl(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::clear(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::createInsertSpace(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::createInsertSpaceInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::end(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getFirst(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getLast(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::getValueWithDefault(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::insert(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::insertArray(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::move(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::operator=(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::operator[](), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::removeElements(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::removeElementsInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::setAllocatedSize(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::setAllocatedSizeInternal(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::size(), juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::swap(), and juce::ArrayBase< juce::InAppPurchases::Listener *, DummyCriticalSection >::swapWith().