|
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.