Control Surface  1.2.0
MIDI Control Surface library for Arduino
Namespaces | Classes | Typedefs | Functions
Containers

Containers like Array, BitArray, DoublyLinkedList and UniquePtr. More...

+ Collaboration diagram for Containers:

Namespaces

 AH
 PrintStream library
 

Classes

class  ArraySlice< T, N, Reverse, Const >
 Class for a view on a slice of an array. More...
 
struct  Array< T, N >
 An array wrapper for easy copying, comparing, and iterating. More...
 
class  DoublyLinkedList< Node >
 A class for doubly linked lists. More...
 
class  DoublyLinkable< Node >
 A class that can be inherited from to allow inserting into a DoublyLinkedList. More...
 
class  UniquePtr< T >
 Very basic smart pointer. More...
 

Typedefs

template<class T , size_t nb_rows, size_t nb_cols>
using Array2D = Array< Array< T, nb_cols >, nb_rows >
 An easy alias for two-dimensional Arrays. More...
 

Functions

template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
bool operator== (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Slice == Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse2, bool Const2>
bool operator== (const Array< T1, N1 > &a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Array == Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Const1>
bool operator== (ArraySlice< T1, N1, Reverse1, Const1 > a, const Array< T2, N2 > &b)
 Slice == Array. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
bool operator!= (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Slice != Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse2, bool Const2>
bool operator!= (const Array< T1, N1 > &a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Array != Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Const1>
bool operator!= (ArraySlice< T1, N1, Reverse1, Const1 > a, const Array< T2, N2 > &b)
 Slice != Array. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
Array< decltype(T1{}+T2{}), N1 > operator+ (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Slice + Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2>
Array< decltype(T1{}+T2{}), N1 > operator+ (const Array< T1, N1 > &a, const Array< T2, N2 > &b)
 Array + Array. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
const ArraySlice< T1, N1, Reverse1, Const1 > & operator+= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b)
 Slice += Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2>
Array< T1, N1 > & operator+= (Array< T1, N1 > &a, const Array< T2, N2 > &b)
 Array += Array. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
Array< decltype(T1{} - T2{}), N1 > operator- (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Slice - Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2>
Array< decltype(T1{} - T2{}), N1 > operator- (const Array< T1, N1 > &a, const Array< T2, N2 > &b)
 Array - Array. More...
 
template<class T1 , class T2 , size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2>
const ArraySlice< T1, N1, Reverse1, Const1 > & operator-= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b)
 Slice -= Slice. More...
 
template<class T1 , class T2 , size_t N1, size_t N2>
Array< T1, N1 > & operator-= (Array< T1, N1 > &a, const Array< T2, N2 > &b)
 Array -= Array. More...
 
template<class T1 , class T2 , size_t N1, bool Reverse1, bool Const1>
Array< decltype(T1{} *T2{}), N1 > operator* (ArraySlice< T1, N1, Reverse1, Const1 > a, T2 b)
 Slice * Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< decltype(T1{} *T2{}), N1 > operator* (const Array< T1, N1 > &a, T2 b)
 Array * Scalar. More...
 
template<class T1 , class T2 , size_t N2, bool Reverse2, bool Const2>
Array< decltype(T1{} *T2{}), N2 > operator* (T1 a, ArraySlice< T2, N2, Reverse2, Const2 > b)
 Scalar * Slice. More...
 
template<class T1 , class T2 , size_t N2>
Array< decltype(T1{} *T2{}), N2 > operator* (T1 a, const Array< T2, N2 > &b)
 Scalar * Array. More...
 
template<class T1 , class T2 , size_t N1, bool Reverse1, bool Const1>
const ArraySlice< T1, N1, Reverse1, Const1 > & operator*= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, T2 b)
 Slice *= Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< T1, N1 > & operator*= (Array< T1, N1 > &a, T2 b)
 Array *= Scalar. More...
 
template<class T1 , class T2 , size_t N1, bool Reverse1, bool Const1>
Array< decltype(T1{}/T2{}), N1 > operator/ (ArraySlice< T1, N1, Reverse1, Const1 > a, T2 b)
 Slice / Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< decltype(T1{}/T2{}), N1 > operator/ (const Array< T1, N1 > &a, T2 b)
 Array / Scalar. More...
 
template<class T1 , class T2 , size_t N1, bool Reverse1, bool Const1>
const ArraySlice< T1, N1, Reverse1, Const1 > & operator/= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, T2 b)
 Slice /= Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< T1, N1 > & operator/= (Array< T1, N1 > &a, T2 b)
 Array /= Scalar. More...
 
template<class T , size_t N, bool Reverse, bool Const>
Array< decltype(-T{}), N > operator- (ArraySlice< T, N, Reverse, Const > a)
 -Slice More...
 
template<class T , size_t N>
Array< decltype(-T{}), N > operator- (const Array< T, N > &a)
 -Array More...
 
template<typename T , typename... Args>
UniquePtr< T > MakeUnique (Args &&... args)
 

Detailed Description

Containers like Array, BitArray, DoublyLinkedList and UniquePtr.

Typedef Documentation

◆ Array2D

using Array2D = Array<Array<T, nb_cols>, nb_rows>

An easy alias for two-dimensional Arrays.

Definition at line 545 of file Array.hpp.

Function Documentation

◆ operator==() [1/3]

bool AH::operator== ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Slice == Slice.

Definition at line 311 of file Array.hpp.

◆ operator==() [2/3]

bool AH::operator== ( const Array< T1, N1 > &  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Array == Slice.

Definition at line 322 of file Array.hpp.

◆ operator==() [3/3]

bool AH::operator== ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
const Array< T2, N2 > &  b 
)

Slice == Array.

Definition at line 329 of file Array.hpp.

◆ operator!=() [1/3]

bool AH::operator!= ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Slice != Slice.

Definition at line 339 of file Array.hpp.

◆ operator!=() [2/3]

bool AH::operator!= ( const Array< T1, N1 > &  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Array != Slice.

Definition at line 346 of file Array.hpp.

◆ operator!=() [3/3]

bool AH::operator!= ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
const Array< T2, N2 > &  b 
)

Slice != Array.

Definition at line 353 of file Array.hpp.

◆ operator+() [1/2]

Array<decltype(T1{} + T2{}), N1> AH::operator+ ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Slice + Slice.

Definition at line 364 of file Array.hpp.

◆ operator+() [2/2]

Array<decltype(T1{} + T2{}), N1> AH::operator+ ( const Array< T1, N1 > &  a,
const Array< T2, N2 > &  b 
)

Array + Array.

Definition at line 375 of file Array.hpp.

◆ operator+=() [1/2]

const ArraySlice<T1, N1, Reverse1, Const1>& AH::operator+= ( const ArraySlice< T1, N1, Reverse1, Const1 > &  a,
const ArraySlice< T2, N2, Reverse2, Const2 > &  b 
)

Slice += Slice.

Definition at line 384 of file Array.hpp.

◆ operator+=() [2/2]

Array<T1, N1>& AH::operator+= ( Array< T1, N1 > &  a,
const Array< T2, N2 > &  b 
)

Array += Array.

Definition at line 394 of file Array.hpp.

◆ operator-() [1/4]

Array<decltype(T1{} - T2{}), N1> AH::operator- ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Slice - Slice.

Definition at line 405 of file Array.hpp.

◆ operator-() [2/4]

Array<decltype(T1{} - T2{}), N1> AH::operator- ( const Array< T1, N1 > &  a,
const Array< T2, N2 > &  b 
)

Array - Array.

Definition at line 416 of file Array.hpp.

◆ operator-=() [1/2]

const ArraySlice<T1, N1, Reverse1, Const1>& AH::operator-= ( const ArraySlice< T1, N1, Reverse1, Const1 > &  a,
const ArraySlice< T2, N2, Reverse2, Const2 > &  b 
)

Slice -= Slice.

Definition at line 425 of file Array.hpp.

◆ operator-=() [2/2]

Array<T1, N1>& AH::operator-= ( Array< T1, N1 > &  a,
const Array< T2, N2 > &  b 
)

Array -= Array.

Definition at line 435 of file Array.hpp.

◆ operator*() [1/4]

Array<decltype(T1{} * T2{}), N1> AH::operator* ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
T2  b 
)

Slice * Scalar.

Definition at line 445 of file Array.hpp.

◆ operator*() [2/4]

Array<decltype(T1{} * T2{}), N1> AH::operator* ( const Array< T1, N1 > &  a,
T2  b 
)

Array * Scalar.

Definition at line 454 of file Array.hpp.

◆ operator*() [3/4]

Array<decltype(T1{} * T2{}), N2> AH::operator* ( T1  a,
ArraySlice< T2, N2, Reverse2, Const2 >  b 
)

Scalar * Slice.

Definition at line 461 of file Array.hpp.

◆ operator*() [4/4]

Array<decltype(T1{} * T2{}), N2> AH::operator* ( T1  a,
const Array< T2, N2 > &  b 
)

Scalar * Array.

Definition at line 470 of file Array.hpp.

◆ operator*=() [1/2]

const ArraySlice<T1, N1, Reverse1, Const1>& AH::operator*= ( const ArraySlice< T1, N1, Reverse1, Const1 > &  a,
T2  b 
)

Slice *= Scalar.

Definition at line 477 of file Array.hpp.

◆ operator*=() [2/2]

Array<T1, N1>& AH::operator*= ( Array< T1, N1 > &  a,
T2  b 
)

Array *= Scalar.

Definition at line 485 of file Array.hpp.

◆ operator/() [1/2]

Array<decltype(T1{} / T2{}), N1> AH::operator/ ( ArraySlice< T1, N1, Reverse1, Const1 >  a,
T2  b 
)

Slice / Scalar.

Definition at line 495 of file Array.hpp.

◆ operator/() [2/2]

Array<decltype(T1{} / T2{}), N1> AH::operator/ ( const Array< T1, N1 > &  a,
T2  b 
)

Array / Scalar.

Definition at line 504 of file Array.hpp.

◆ operator/=() [1/2]

const ArraySlice<T1, N1, Reverse1, Const1>& AH::operator/= ( const ArraySlice< T1, N1, Reverse1, Const1 > &  a,
T2  b 
)

Slice /= Scalar.

Definition at line 511 of file Array.hpp.

◆ operator/=() [2/2]

Array<T1, N1>& AH::operator/= ( Array< T1, N1 > &  a,
T2  b 
)

Array /= Scalar.

Definition at line 519 of file Array.hpp.

◆ operator-() [3/4]

Array<decltype(-T{}), N> AH::operator- ( ArraySlice< T, N, Reverse, Const >  a)

-Slice

Definition at line 528 of file Array.hpp.

◆ operator-() [4/4]

Array<decltype(-T{}), N> AH::operator- ( const Array< T, N > &  a)

-Array

Definition at line 537 of file Array.hpp.

◆ MakeUnique()

UniquePtr<T> AH::MakeUnique ( Args &&...  args)

Definition at line 66 of file UniquePtr.hpp.