20#include "pw_stream/stream.h"
27constexpr ptrdiff_t ResolveSeekOffset(ptrdiff_t offset,
30 size_t current_position) {
35 return static_cast<ptrdiff_t
>(current_position) + offset;
38 return static_cast<ptrdiff_t
>(end_position) + offset;
46constexpr Status CalculateSeek(ptrdiff_t offset,
49 size_t& current_position) {
50 const ptrdiff_t new_position =
51 ResolveSeekOffset(offset, origin, end_position, current_position);
53 if (new_position < 0 ||
static_cast<size_t>(new_position) > end_position) {
57 current_position =
static_cast<size_t>(new_position);
static constexpr Status OutOfRange()
Operation attempted out of range; e.g. seeking past end of file.
Definition: status.h:172
Whence
Positions from which to seek.
Definition: stream.h:48
@ kCurrent
Definition: stream.h:58
@ kBeginning
Definition: stream.h:51
@ kEnd
Definition: stream.h:62
constexpr Status OkStatus()
Definition: status.h:297