1#ifndef NDNPH_CORE_SIMPLE_QUEUE_HPP
2#define NDNPH_CORE_SIMPLE_QUEUE_HPP
12 static_assert(std::is_default_constructible<T>::value,
"");
13 static_assert(std::is_move_assignable<T>::value,
"");
14 static_assert(std::is_move_constructible<T>::value,
"");
18 size_t newTail = nextIndex(m_tail);
19 if (newTail == m_head) {
23 m_arr[m_tail] = std::move(item);
28 std::tuple<Item, bool>
pop() {
29 if (m_head == m_tail) {
30 return std::make_tuple(T(),
false);
32 Item item = std::move(m_arr[m_head]);
34 m_head = nextIndex(m_head);
35 return std::make_tuple(std::move(item),
true);
28 std::tuple<Item, bool>
pop() {
…}
43 return (m_tail - m_head + m_cap1) % m_cap1;
65 size_t nextIndex(
size_t i)
const {
66 return (i + 1) % m_cap1;
80template<
typename T,
size_t C>
SimpleQueue with dynamically allocated memory.
Definition simple-queue.hpp:92
DynamicSimpleQueue(size_t capacity)
Definition simple-queue.hpp:94
~DynamicSimpleQueue()
Definition simple-queue.hpp:97
Generic non-thread-safe queue.
Definition simple-queue.hpp:10
size_t capacity() const
Definition simple-queue.hpp:38
size_t available() const
Definition simple-queue.hpp:46
std::tuple< Item, bool > pop()
Definition simple-queue.hpp:28
size_t size() const
Definition simple-queue.hpp:42
Item * getArray()
Definition simple-queue.hpp:60
bool push(Item item)
Definition simple-queue.hpp:17
SimpleQueue(Item *arr, size_t cap)
Constructor.
Definition simple-queue.hpp:56
T Item
Definition simple-queue.hpp:15
SimpleQueue with statically allocated memory.
Definition simple-queue.hpp:81
StaticSimpleQueue()
Definition simple-queue.hpp:83