18#include "pw_allocator/allocator.h"
19#include "pw_containers/dynamic_deque.h"
20#include "pw_containers/internal/generic_queue.h"
31template <
typename T,
typename SizeType = u
int16_t>
33 :
public containers::internal::GenericQueue<DynamicQueue<T, SizeType>,
34 DynamicDeque<T, SizeType>> {
39 using const_iterator =
typename Deque::const_iterator;
40 using const_pointer =
typename Deque::const_pointer;
41 using const_reference =
typename Deque::const_reference;
42 using difference_type =
typename Deque::difference_type;
43 using iterator =
typename Deque::iterator;
44 using pointer =
typename Deque::pointer;
45 using reference =
typename Deque::reference;
46 using size_type =
typename Deque::size_type;
47 using value_type =
typename Deque::value_type;
51 : deque_(allocator) {}
62 void clear() { deque_.clear(); }
65 [[nodiscard]]
bool try_push(
const value_type& value) {
66 return deque_.try_push_back(value);
70 [[nodiscard]]
bool try_push(value_type&& value) {
71 return deque_.try_push_back(std::move(value));
75 template <
typename... Args>
77 return deque_.try_emplace_back(std::forward<Args>(args)...);
104 template <
typename,
typename>
105 friend class containers::internal::GenericQueue;
107 Deque& deque() {
return deque_; }
108 const Deque& deque()
const {
return deque_; }
Definition: allocator.h:34
Definition: dynamic_deque.h:55
void reserve(size_type new_capacity)
Increases capacity() to at least new_capacity. Crashes on failure.
Definition: dynamic_deque.h:146
void reserve_exact(size_type new_capacity)
Increases capacity() to exactly new_capacity. Crashes on failure.
Definition: dynamic_deque.h:162
void swap(DynamicDeque &other) noexcept
Swaps the contents of two deques. No allocations occur.
Definition: dynamic_deque.h:177
bool try_reserve(size_type new_capacity)
Definition: dynamic_deque.h:235
void shrink_to_fit()
Attempts to reduce capacity() to size(). Not guaranteed to succeed.
Definition: dynamic_deque.h:256
bool try_reserve_exact(size_type new_capacity)
Definition: dynamic_deque.h:157
Definition: dynamic_queue.h:34
void clear()
Removes all elements from the queue.
Definition: dynamic_queue.h:62
bool try_reserve_exact(size_type capacity)
Attempts to set the queue capacity to max(capacity, size()) elements.
Definition: dynamic_queue.h:93
void reserve(size_type capacity)
Sets the queue capacity to at least max(capacity, size()) elements.
Definition: dynamic_queue.h:81
constexpr DynamicQueue(pw::Allocator &allocator)
Constructs a DynamicQueue using the provided allocator.
Definition: dynamic_queue.h:50
constexpr DynamicQueue(DynamicQueue &&)=default
Move operations are supported and incur no allocations.
void swap(DynamicQueue &other)
Swaps the contents with another queue.
Definition: dynamic_queue.h:101
bool try_push(const value_type &value)
Attempts to add an element to the back of the queue.
Definition: dynamic_queue.h:65
bool try_push(value_type &&value)
Attempts to add an element to the back of the queue (move version).
Definition: dynamic_queue.h:70
bool try_reserve(size_type capacity)
Definition: dynamic_queue.h:85
void shrink_to_fit()
Reduces memory usage by releasing unused capacity, if possible.
Definition: dynamic_queue.h:98
bool try_emplace(Args &&... args)
Attempts to construct an element in place at the back of the queue.
Definition: dynamic_queue.h:76
void reserve_exact(size_type capacity)
Sets the queue capacity to max(capacity, size()) elements.
Definition: dynamic_queue.h:90
Provides basic helpers for reading and writing UTF-8 encoded strings.
Definition: alignment.h:27