Arduino DLNA Server
Loading...
Searching...
No Matches
Queue.h
Go to the documentation of this file.
1#pragma once
2#include "List.h"
3
4namespace tiny_dlna {
5
13template <class T, class Alloc = DLNA_ALLOCATOR<T>>
14class Queue {
15 public:
16 Queue() = default;
17 explicit Queue(const Alloc& alloc) : l_instance(alloc) {}
18
19 // enqueue by non-const lvalue reference (matches existing copy ctor semantics)
20 bool enqueue(T& data) { return l_instance.push_front(data); }
21
22 // enqueue by move - avoids copying/memory allocation when possible
23 bool enqueue(T&& data) { return l_instance.push_front(std::move(data)); }
24
25 bool peek(T& data) {
26 if (l_instance.end()->prior == nullptr) return false;
27 data = *(l_instance.end()->prior);
28 return true;
29 }
30
31 bool dequeue(T& data) { return l_instance.pop_back(data); }
32
33 size_t size() { return l_instance.size(); }
34
35 bool clear() { return l_instance.clear(); }
36
37 bool empty() { return l_instance.empty(); }
38
39 // setAllocator removed (legacy allocator support dropped)
40
41 protected:
42 List<T, Alloc> l_instance; // underlying allocator-aware list
43};
44
45} // namespace tiny_dlna
Double linked list.
Definition: List.h:19
FIFO Queue which is based on a List.
Definition: Queue.h:14
bool dequeue(T &data)
Definition: Queue.h:31
size_t size()
Definition: Queue.h:33
bool enqueue(T &&data)
Definition: Queue.h:23
bool clear()
Definition: Queue.h:35
List< T, Alloc > l_instance
Definition: Queue.h:42
Queue(const Alloc &alloc)
Definition: Queue.h:17
bool empty()
Definition: Queue.h:37
bool peek(T &data)
Definition: Queue.h:25
bool enqueue(T &data)
Definition: Queue.h:20
Definition: Allocator.h:13