124 [[nodiscard]]
size_t size()
const;
133 template <
typename R>
134 requires std::ranges::random_access_range<R>
135 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
136 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
139 m_chunks->emplace_back(s, s + count);
143 template <
typename R>
144 requires std::ranges::random_access_range<R>
145 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
146 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
149 m_chunks->emplace_back(span.begin(), span.end());
153 template <
typename R>
154 requires std::ranges::random_access_range<R>
155 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
156 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
159 m_chunks->emplace_back(std::move(buffer));
163 template <
typename R>
164 requires std::ranges::random_access_range<R>
165 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
166 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
169 m_chunks->emplace_back(count, value);
173 template <
typename R>
174 requires std::ranges::random_access_range<R>
175 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
176 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
179 m_chunks->emplace_back(std::vector<uint8_t>{
static_cast<uint8_t
>(value)});
183 template <
typename R>
184 requires std::ranges::random_access_range<R>
185 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
186 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
189 m_chunks->reserve(
size);
192 template <
typename R>
193 requires std::ranges::random_access_range<R>
194 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
195 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
198 m_chunks->reserve(calculate_reserve_size());
201 template <
typename R>
202 requires std::ranges::random_access_range<R>
203 && std::ranges::random_access_range<std::ranges::range_value_t<R>>
204 && std::same_as<typename std::ranges::range_value_t<R>::value_type, uint8_t>
207 return std::accumulate(
211 [](
size_t acc,
const auto& chunk)
213 return acc + chunk.size();