42 bool empty(
void)
const;
49 void push(
const T &elem,
const size_t index);
54 const T &
front(
void)
const;
71 std::vector<T> _pushedElems;
72 std::vector<bool> _pushedElemsFlag;
86 _pushedElems(capacity),
87 _pushedElemsFlag(capacity, false),
96 return _readyElems.empty();
103 assert(index < _pushedElems.size());
104 _pushedElems[index] = elem;
105 _pushedElemsFlag[index] =
true;
108 while (_pushedElemsFlag[_indexToAck])
111 assert(not _readyElems.full());
112 _readyElems.push_back(_pushedElems[_indexToAck]);
113 _pushedElems[_indexToAck] = T();
114 _pushedElemsFlag[_indexToAck] =
false;
117 if (++_indexToAck == _pushedElems.size()) _indexToAck = 0;
121 template <
typename T>
124 return _readyElems.front();
127 template <
typename T>
130 return _readyElems.front();
133 template <
typename T>
136 _readyElems.pop_front();
139 template <
typename T>
142 return _readyElems.capacity();
const T & front(void) const
Definition: OrderedQueue.hpp:122
void push(const T &elem, const size_t index)
Definition: OrderedQueue.hpp:100
size_t capacity(void) const
How many elements can be stored?
Definition: OrderedQueue.hpp:140
bool empty(void) const
Definition: OrderedQueue.hpp:94
Definition: RingDeque.hpp:28
void pop(void)
Definition: OrderedQueue.hpp:134
Definition: OrderedQueue.hpp:28
OrderedQueue(void)
Construct a size-zero ordered queue.
Definition: OrderedQueue.hpp:77