pianod2
multisource multiuser scriptable networked music player
Classes | Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
EnumeratedArray< Enumeration, ValueType, size_element, enum_size > Class Template Reference

An array indexed by an enumeration rather than an integer of some sort. More...

#include <enumeratedarray.h>

Classes

class  eaiterator
 

Public Types

using value_type = ValueType
 
using enumeration_type = Enumeration
 
using iterator = eaiterator< ValueType >
 
using const_iterator = eaiterator< const ValueType >
 

Public Member Functions

 EnumeratedArray ()
 Initialize an enumerated array. Set values to value type's default. More...
 
 EnumeratedArray (ValueType initial)
 Initialize an enumerated array. Set values to a specific initial value. More...
 
ValueType & operator[] (const Enumeration index) noexcept
 Access an element of an enumerated array. More...
 
const ValueType & operator[] (const Enumeration index) const noexcept
 Access an element of a constant enumerated array. More...
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 

Private Types

using needs_initialization = std::conditional< std::is_pod< ValueType >::value, std::true_type, std::false_type >
 

Private Attributes

ValueType underlying [enum_size]
 

Detailed Description

template<typename Enumeration, typename ValueType, Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
class EnumeratedArray< Enumeration, ValueType, size_element, enum_size >

An array indexed by an enumeration rather than an integer of some sort.

Warning
Underlying this template is a plain-old array. Keep in mind:
  • Reused enumeration values will collide.
  • Sparse enumerations will allocate space for unused values.
Template Parameters
EnumerationThe enumeration type to use as array index.
ValueTypeThe value type of which the array is composed.
size_elementAn element representing the number of values, i.e., one larger than the last meaningful slot. The default is a member of the enumeration named "Count".
enum_sizeThe size of the array. Like normal arrays, the largest index is one less than this item.

Member Typedef Documentation

◆ const_iterator

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
using EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::const_iterator = eaiterator <const ValueType>

◆ enumeration_type

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
using EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::enumeration_type = Enumeration

◆ iterator

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
using EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::iterator = eaiterator<ValueType>

◆ needs_initialization

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
using EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::needs_initialization = std::conditional <std::is_pod<ValueType>::value,std::true_type,std::false_type>
private

◆ value_type

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
using EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::value_type = ValueType

Constructor & Destructor Documentation

◆ EnumeratedArray() [1/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::EnumeratedArray ( )
inline

Initialize an enumerated array. Set values to value type's default.

◆ EnumeratedArray() [2/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::EnumeratedArray ( ValueType  initial)
inlineexplicit

Initialize an enumerated array. Set values to a specific initial value.

Member Function Documentation

◆ begin() [1/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
const_iterator EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::begin ( ) const
inlinenoexcept

◆ begin() [2/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
iterator EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::begin ( )
inlinenoexcept

◆ end() [1/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
const_iterator EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::end ( ) const
inlinenoexcept

◆ end() [2/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
iterator EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::end ( )
inlinenoexcept

◆ operator[]() [1/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
const ValueType& EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::operator[] ( const Enumeration  index) const
inlinenoexcept

Access an element of a constant enumerated array.

◆ operator[]() [2/2]

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
ValueType& EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::operator[] ( const Enumeration  index)
inlinenoexcept

Access an element of an enumerated array.

Member Data Documentation

◆ underlying

template<typename Enumeration , typename ValueType , Enumeration size_element = Enumeration::Count, int enum_size = static_cast <int> (size_element)>
ValueType EnumeratedArray< Enumeration, ValueType, size_element, enum_size >::underlying[enum_size]
private

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