JUCE: ArrayBase< ElementType, TypeOfCriticalSectionToUse > Class Template Reference

JUCE

Public Member Functions | List of all members
ArrayBase< ElementType, TypeOfCriticalSectionToUse > Class Template Reference
juce_core » containers

A basic object container. More...

`#include <juce_ArrayBase.h>`

Inherits TypeOfCriticalSectionToUse.

## Public Member Functions
| ArrayBase ()=default
| ~ArrayBase ()
| ArrayBase (ArrayBase &&other) noexcept
ArrayBase & | operator= (ArrayBase &&other) noexcept
template<class OtherElementType , class OtherCriticalSection , typename = AllowConversion<OtherElementType, OtherCriticalSection>>
| ArrayBase (ArrayBase< OtherElementType, OtherCriticalSection > &&other) noexcept
| Converting move constructor. More...
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
template<class OtherArrayType >
bool | operator!= (const OtherArrayType &other) const noexcept
ElementType & | operator[] (const int index) noexcept
const ElementType & | operator[] (const int index) const noexcept
ElementType | getValueWithDefault (const int index) const noexcept
ElementType | getFirst () const noexcept
ElementType | getLast () const noexcept
ElementType * | begin () noexcept
const ElementType * | begin () const noexcept
ElementType * | end () noexcept
const ElementType * | end () const noexcept
ElementType * | data () noexcept
const ElementType * | data () const noexcept
int | size () const noexcept
int | capacity () const noexcept
void | setAllocatedSize (int numElements)
void | ensureAllocatedSize (int minNumElements)
void | shrinkToNoMoreThan (int maxNumElements)
void | clear ()
void | swapWith (ArrayBase &other) noexcept
void | add (const ElementType &newElement)
void | add (ElementType &&newElement)
template<typename... OtherElements>
void | add (const ElementType &firstNewElement, OtherElements &&... otherElements)
template<typename... OtherElements>
void | add (ElementType &&firstNewElement, OtherElements &&... otherElements)
template<typename Type >
void | addArray (const Type *elementsToAdd, int numElementsToAdd)
template<typename TypeToCreateFrom >
void | addArray (const std::initializer_list< TypeToCreateFrom > &items)
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)
void | insert (int indexToInsertAt, ParameterType newElement, int numberOfTimesToInsertIt)
void | insertArray (int indexToInsertAt, const ElementType *newElements, int numberOfElements)
void | removeElements (int indexToRemoveAt, int numElementsToRemove)
void | swap (int index1, int index2)
void | move (int currentIndex, int newIndex) noexcept

## Detailed Description

template<class ElementType, class TypeOfCriticalSectionToUse>
class ArrayBase< ElementType, TypeOfCriticalSectionToUse >

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.

See also
  Array, OwnedArray, ReferenceCountedArray

## Constructor & Destructor Documentation

## ◆ ArrayBase() [1/3]

template<class ElementType , class TypeOfCriticalSectionToUse >

ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ArrayBase | ( |  | ) |
| default

## ◆ ~ArrayBase()

template<class ElementType , class TypeOfCriticalSectionToUse >

ArrayBase< ElementType, TypeOfCriticalSectionToUse >::~ArrayBase | ( |  | ) |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::clear().

## ◆ ArrayBase() [2/3]

template<class ElementType , class TypeOfCriticalSectionToUse >

ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ArrayBase | ( | ArrayBase< ElementType, TypeOfCriticalSectionToUse > && | other | ) |
| noexcept

## ◆ ArrayBase() [3/3]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherElementType , class OtherCriticalSection , typename = AllowConversion<OtherElementType, OtherCriticalSection>>

ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ArrayBase | ( | ArrayBase< OtherElementType, OtherCriticalSection > && | other | ) |
| noexcept

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.

## Member Function Documentation

## ◆ operator=() [1/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

ArrayBase & ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator= | ( | ArrayBase< ElementType, TypeOfCriticalSectionToUse > && | other | ) |
| noexcept

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::swapWith().

## ◆ operator=() [2/2]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherElementType , class OtherCriticalSection , typename = AllowConversion<OtherElementType, OtherCriticalSection>>

ArrayBase & ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator= | ( | ArrayBase< OtherElementType, OtherCriticalSection > && | other | ) |
| noexcept

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.

## ◆ operator==()

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherArrayType >

bool ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator== | ( | const OtherArrayType & | other | ) | const
| noexcept

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin(), and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size().

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator!=().

## ◆ operator!=()

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherArrayType >

bool ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator!= | ( | const OtherArrayType & | other | ) | const
| noexcept

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator==().

## ◆ operator[]() [1/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType & ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator[] | ( | const int | index | ) |
| noexcept

References gl::index, isPositiveAndBelow(), and jassert.

## ◆ operator[]() [2/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

const ElementType & ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator[] | ( | const int | index | ) | const
| noexcept

References gl::index, isPositiveAndBelow(), and jassert.

## ◆ getValueWithDefault()

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType ArrayBase< ElementType, TypeOfCriticalSectionToUse >::getValueWithDefault | ( | const int | index | ) | const
| noexcept

References gl::index, and isPositiveAndBelow().

## ◆ getFirst()

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType ArrayBase< ElementType, TypeOfCriticalSectionToUse >::getFirst | ( |  | ) | const
| noexcept

## ◆ getLast()

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType ArrayBase< ElementType, TypeOfCriticalSectionToUse >::getLast | ( |  | ) | const
| noexcept

## ◆ begin() [1/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin | ( |  | ) |
| noexcept

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator==().

## ◆ begin() [2/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

const ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::begin | ( |  | ) | const
| noexcept

## ◆ end() [1/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::end | ( |  | ) |
| noexcept

## ◆ end() [2/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

const ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::end | ( |  | ) | const
| noexcept

## ◆ data() [1/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::data | ( |  | ) |
| noexcept

## ◆ data() [2/2]

template<class ElementType , class TypeOfCriticalSectionToUse >

const ElementType * ArrayBase< ElementType, TypeOfCriticalSectionToUse >::data | ( |  | ) | const
| noexcept

## ◆ size()

template<class ElementType , class TypeOfCriticalSectionToUse >

int ArrayBase< ElementType, TypeOfCriticalSectionToUse >::size | ( |  | ) | const
| noexcept

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator==().

## ◆ capacity()

template<class ElementType , class TypeOfCriticalSectionToUse >

int ArrayBase< ElementType, TypeOfCriticalSectionToUse >::capacity | ( |  | ) | const
| noexcept

## ◆ setAllocatedSize()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::setAllocatedSize | ( | int | numElements | ) |

References jassert.

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize(), and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::shrinkToNoMoreThan().

## ◆ ensureAllocatedSize()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize | ( | int | minNumElements | ) |

References jassert, and ArrayBase< ElementType, TypeOfCriticalSectionToUse >::setAllocatedSize().

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray().

## ◆ shrinkToNoMoreThan()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::shrinkToNoMoreThan | ( | int | maxNumElements | ) |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::setAllocatedSize().

## ◆ clear()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::clear | ( |  | ) |

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::~ArrayBase().

## ◆ swapWith()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::swapWith | ( | ArrayBase< ElementType, TypeOfCriticalSectionToUse > & | other | ) |
| noexcept

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator=().

## ◆ add() [1/4]

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::add | ( | const ElementType & | newElement | ) |

## ◆ add() [2/4]

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::add | ( | ElementType && | newElement | ) |

## ◆ add() [3/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<typename... OtherElements>

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::add | ( | const ElementType & | firstNewElement,
|  | OtherElements &&... | otherElements
| ) |  |

## ◆ add() [4/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<typename... OtherElements>

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::add | ( | ElementType && | firstNewElement,
|  | OtherElements &&... | otherElements
| ) |  |

## ◆ addArray() [1/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<typename Type >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray | ( | const Type * | elementsToAdd,
|  | int | numElementsToAdd
| ) |  |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize().

Referenced by ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray().

## ◆ addArray() [2/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<typename TypeToCreateFrom >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray | ( | const std::initializer_list< TypeToCreateFrom > & | items | ) |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize().

## ◆ addArray() [3/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherArrayType >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray | ( | const OtherArrayType & | arrayToAddFrom | ) |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize(), and jassert.

## ◆ addArray() [4/4]

template<class ElementType , class TypeOfCriticalSectionToUse >
template<class OtherArrayType >

std::enable_if<!std::is_pointer< OtherArrayType >::value, int >::type ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray | ( | const OtherArrayType & | arrayToAddFrom,
|  | int | startIndex,
|  | int | numElementsToAdd = `-1`
| ) |  |

References ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray(), int(), jassert, and jassertfalse.

## ◆ insert()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::insert | ( | int | indexToInsertAt,
|  | ParameterType | newElement,
|  | int | numberOfTimesToInsertIt
| ) |  |

## ◆ insertArray()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::insertArray | ( | int | indexToInsertAt,
|  | const ElementType * | newElements,
|  | int | numberOfElements
| ) |  |

## ◆ removeElements()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::removeElements | ( | int | indexToRemoveAt,
|  | int | numElementsToRemove
| ) |  |

References jassert.

## ◆ swap()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::swap | ( | int | index1,
|  | int | index2
| ) |  |

References isPositiveAndBelow().

## ◆ move()

template<class ElementType , class TypeOfCriticalSectionToUse >

void ArrayBase< ElementType, TypeOfCriticalSectionToUse >::move | ( | int | currentIndex,
|  | int | newIndex
| ) |  |
| noexcept

References isPositiveAndBelow().

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

- juce_ArrayBase.h