Cogs.Core
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Cogs::Collections::FixedIndexQueue< Element, IndexBaseType > Class Template Reference

Indexable queue where an element index is fixed through arbitrary enqueues and dequeues. More...

#include <FixedIndexQueue.h>

Public Types

typedef std::make_unsigned< IndexBaseType >::type IndexType
 Unsigned type used for indices, typically uint32_t or uin64_t.
 

Public Member Functions

 FixedIndexQueue ()
 Constructor.
 
const IndexType capacity () const
 Returns the current capacity of the queue.
 
IndexType empty () const
 Returns true if there are currently no elements in the queue.
 
IndexType count () const
 Returns number of elements currently in the queue.
 
void clear ()
 Removes all entries from the queue, but will continue with new unused indices.
 
void reset ()
 Removes all entries from the queue, recycles indices and starts from zero.
 
void shrink ()
 Reduce capacity to the minimum needed to preserve the contents.
 
void pushBack (Element e)
 Adds a new element to the back of the queue.
 
void pushFront (Element e)
 Adds a new element to the front of the queue.
 
void popFront ()
 Removes the front from the queue.
 
Element & operator[] (IndexType fixedIndex)
 Look up an element in the queue by a fixed index.
 
const Element & operator[] (IndexType fixedIndex) const
 Look up an element in the queue by a fixed index.
 
Element & front ()
 Returns front element.
 
const Element & front () const
 Returns front element.
 
Element & back ()
 Returns back element.
 
const Element & back () const
 Returns back element.
 
IndexType frontIndex () const
 Returns fixed index of front.
 
IndexType backIndex () const
 Returns fixed index of current back element.
 
bool validIndex (uint32_t fixedIndex) const
 Check if a fixed index is valid, that is, refers to an element in the queue.
 

Private Types

typedef std::make_signed< IndexBaseType >::type SignedIndexType
 Signed helper type.
 

Private Member Functions

bool noCapacity () const
 True if there is no free capacity left.
 
void grow ()
 Double the capacity of the queue.
 
void resize (IndexType sizeL2New)
 

Private Attributes

IndexType sizeL2 = 0
 
IndexType sizeMask = 0
 
IndexType frontOffset = 0
 
IndexType backOffset = 0
 
IndexType offsetToFixedIndexShift = 0
 
Cogs::Memory::TypedBuffer< Element > storage
 

Detailed Description

template<typename Element, typename IndexBaseType>
class Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >

Indexable queue where an element index is fixed through arbitrary enqueues and dequeues.

Definition at line 17 of file FixedIndexQueue.h.

Member Typedef Documentation

◆ IndexType

template<typename Element , typename IndexBaseType >
typedef std::make_unsigned<IndexBaseType>::type Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::IndexType

Unsigned type used for indices, typically uint32_t or uin64_t.

Definition at line 23 of file FixedIndexQueue.h.

◆ SignedIndexType

template<typename Element , typename IndexBaseType >
typedef std::make_signed<IndexBaseType>::type Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::SignedIndexType
private

Signed helper type.

Definition at line 20 of file FixedIndexQueue.h.

Constructor & Destructor Documentation

◆ FixedIndexQueue()

template<typename Element , typename IndexBaseType >
Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::FixedIndexQueue ( )
inline

Member Function Documentation

◆ back() [1/2]

template<typename Element , typename IndexBaseType >
Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::back ( )
inline

Returns back element.

Definition at line 127 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().

◆ back() [2/2]

template<typename Element , typename IndexBaseType >
const Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::back ( ) const
inline

Returns back element.

Definition at line 130 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().

◆ backIndex()

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backIndex ( ) const
inline

◆ capacity()

template<typename Element , typename IndexBaseType >
const IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::capacity ( ) const
inline

◆ clear()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::clear ( )
inline

Removes all entries from the queue, but will continue with new unused indices.

Definition at line 48 of file FixedIndexQueue.h.

◆ count()

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::count ( ) const
inline

Returns number of elements currently in the queue.

Definition at line 40 of file FixedIndexQueue.h.

Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::shrink().

◆ empty()

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty ( ) const
inline

◆ front() [1/2]

template<typename Element , typename IndexBaseType >
Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::front ( )
inline

Returns front element.

Definition at line 121 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().

◆ front() [2/2]

template<typename Element , typename IndexBaseType >
const Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::front ( ) const
inline

Returns front element.

Definition at line 124 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().

◆ frontIndex()

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontIndex ( ) const
inline

◆ grow()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::grow ( )
inlineprivate

◆ noCapacity()

template<typename Element , typename IndexBaseType >
bool Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::noCapacity ( ) const
inlineprivate

◆ operator[]() [1/2]

template<typename Element , typename IndexBaseType >
Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::operator[] ( IndexType  fixedIndex)
inline

◆ operator[]() [2/2]

template<typename Element , typename IndexBaseType >
const Element & Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::operator[] ( IndexType  fixedIndex) const
inline

◆ popFront()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::popFront ( )
inline

Removes the front from the queue.

Definition at line 91 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().

◆ pushBack()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushBack ( Element  e)
inline

◆ pushFront()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushFront ( Element  e)
inline

◆ reset()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::reset ( )
inline

Removes all entries from the queue, recycles indices and starts from zero.

Definition at line 56 of file FixedIndexQueue.h.

◆ resize()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::resize ( IndexType  sizeL2New)
inlineprivate

Definition at line 168 of file FixedIndexQueue.h.

◆ shrink()

template<typename Element , typename IndexBaseType >
void Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::shrink ( )
inline

Reduce capacity to the minimum needed to preserve the contents.

Definition at line 64 of file FixedIndexQueue.h.

References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::count(), and Cogs::roundUpToPowerOfTwoShift().

◆ validIndex()

template<typename Element , typename IndexBaseType >
bool Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::validIndex ( uint32_t  fixedIndex) const
inline

Member Data Documentation

◆ backOffset

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backOffset = 0
private

Definition at line 152 of file FixedIndexQueue.h.

◆ frontOffset

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontOffset = 0
private

Definition at line 151 of file FixedIndexQueue.h.

◆ offsetToFixedIndexShift

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::offsetToFixedIndexShift = 0
private

Definition at line 153 of file FixedIndexQueue.h.

◆ sizeL2

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::sizeL2 = 0
private

Definition at line 149 of file FixedIndexQueue.h.

◆ sizeMask

template<typename Element , typename IndexBaseType >
IndexType Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::sizeMask = 0
private

Definition at line 150 of file FixedIndexQueue.h.

◆ storage

template<typename Element , typename IndexBaseType >
Cogs::Memory::TypedBuffer<Element> Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::storage
private

Definition at line 154 of file FixedIndexQueue.h.


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