// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_CONTAINERS_SPAN_READER_H_ #define BASE_CONTAINERS_SPAN_READER_H_ #include <concepts> #include <optional> #include "base/containers/span.h" #include "base/memory/stack_allocated.h" #include "base/numerics/byte_conversions.h" #include "base/numerics/safe_conversions.h" namespace base { // A Reader to consume elements from the front of a span dynamically. // // SpanReader is used to split off prefix spans from a larger span, reporting // errors if there's not enough room left (instead of crashing, as would happen // with span directly). template <class T> class SpanReader { … }; template <class T, size_t N> SpanReader(span<T, N>) -> SpanReader<T>; } // namespace base #endif // BASE_CONTAINERS_SPAN_READER_H_