Cogs.Core
|
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 |
Indexable queue where an element index is fixed through arbitrary enqueues and dequeues.
Definition at line 17 of file FixedIndexQueue.h.
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.
|
private |
Signed helper type.
Definition at line 20 of file FixedIndexQueue.h.
|
inline |
Constructor.
Definition at line 26 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::capacity().
|
inline |
Returns back element.
Definition at line 127 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
|
inline |
Returns back element.
Definition at line 130 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
|
inline |
Returns fixed index of current back element.
Definition at line 136 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::operator[](), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::validIndex().
|
inline |
Returns the current capacity of the queue.
Definition at line 29 of file FixedIndexQueue.h.
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::FixedIndexQueue(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::grow().
|
inline |
Removes all entries from the queue, but will continue with new unused indices.
Definition at line 48 of file FixedIndexQueue.h.
|
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().
|
inline |
Returns true if there are currently no elements in the queue.
Definition at line 32 of file FixedIndexQueue.h.
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::back(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backIndex(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::front(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontIndex(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::operator[](), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::popFront(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::validIndex().
|
inline |
Returns front element.
Definition at line 121 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
|
inline |
Returns front element.
Definition at line 124 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
|
inline |
Returns fixed index of front.
Definition at line 133 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::operator[](), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::validIndex().
|
inlineprivate |
Double the capacity of the queue.
Definition at line 160 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::capacity().
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushBack(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushFront().
|
inlineprivate |
True if there is no free capacity left.
Definition at line 157 of file FixedIndexQueue.h.
Referenced by Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushBack(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::pushFront().
|
inline |
Look up an element in the queue by a fixed index.
Definition at line 101 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backIndex(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontIndex().
|
inline |
Look up an element in the queue by a fixed index.
Definition at line 111 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backIndex(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontIndex().
|
inline |
Removes the front from the queue.
Definition at line 91 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty().
|
inline |
Adds a new element to the back of the queue.
Definition at line 73 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::grow(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::noCapacity().
|
inline |
Adds a new element to the front of the queue.
Definition at line 82 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::grow(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::noCapacity().
|
inline |
Removes all entries from the queue, recycles indices and starts from zero.
Definition at line 56 of file FixedIndexQueue.h.
|
inlineprivate |
Definition at line 168 of file FixedIndexQueue.h.
|
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().
|
inline |
Check if a fixed index is valid, that is, refers to an element in the queue.
Definition at line 139 of file FixedIndexQueue.h.
References Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::backIndex(), Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::empty(), and Cogs::Collections::FixedIndexQueue< Element, IndexBaseType >::frontIndex().
|
private |
Definition at line 152 of file FixedIndexQueue.h.
|
private |
Definition at line 151 of file FixedIndexQueue.h.
|
private |
Definition at line 153 of file FixedIndexQueue.h.
|
private |
Definition at line 149 of file FixedIndexQueue.h.
|
private |
Definition at line 150 of file FixedIndexQueue.h.
|
private |
Definition at line 154 of file FixedIndexQueue.h.