18#include "pw_multibuf/internal/chunk_iterator.h"
20namespace pw::multibuf {
30template <
typename Deque,
31 ChunkContiguity kContiguity,
32 ChunkMutability kMutability>
35 using size_type =
typename Deque::size_type;
36 using value_type =
typename Deque::value_type;
37 using difference_type =
typename Deque::difference_type;
44 constexpr size_type size()
const {
45 if constexpr (kContiguity == ChunkContiguity::kKeepAll) {
46 return deque().
size() / begin_.entries_per_chunk_;
48 return static_cast<size_type
>(std::distance(begin_, end_));
51 constexpr iterator begin()
const {
return begin_; }
52 constexpr iterator end()
const {
return end_; }
61 friend class ::pw::multibuf::test::IteratorTest;
64 std::conditional_t<kMutability == ChunkMutability::kConst,
68 constexpr ChunksImpl(DequeRefType& deque, size_type entries_per_chunk) {
69 begin_.deque_ = &deque;
70 begin_.entries_per_chunk_ = entries_per_chunk;
72 end_.entries_per_chunk_ = entries_per_chunk;
73 end_.chunk_ = deque.size() / entries_per_chunk;
76 constexpr const Deque& deque()
const {
return *(begin_.deque_); }
95template <
typename Deque>
112template <
typename Deque>
128template <
typename Deque>
144template <
typename Deque>
constexpr size_type size() const noexcept
Returns the number of elements in the deque.
Definition: generic_deque.h:69
Base class for ranges of chunks.
Definition: chunks.h:33
Definition: multibuf_v2.h:1072