Cogs.Foundation
Loading...
Searching...
No Matches
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.

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.

◆ SignedIndexType

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

Signed helper type.

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

◆ back() [2/2]

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

◆ 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

◆ count()

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

◆ 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

◆ front() [2/2]

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

◆ 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

◆ 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

◆ resize()

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

◆ shrink()

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

◆ 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

◆ frontOffset

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

◆ offsetToFixedIndexShift

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

◆ sizeL2

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

◆ sizeMask

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

◆ storage

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

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