/* Starshatter: The Open Source Project Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. */ #pragma once #include namespace starshatter { namespace foundation { template struct BufferReader : public BaseReader { BufferReader(); BufferReader(Source src); BufferReader(Source src, Count bytes); BufferReader(const BufferReader& other) = default; BufferReader& operator=(const BufferReader& other) = default; BufferReader(BufferReader&& other) = default; BufferReader& operator=(BufferReader&& other) = default; ~BufferReader() override = default; bool valid() const override; Count available() const override; Count seek(Count pos) override; Count seek(Offset offset, Direction dir) override; Count read(char* dest) override; Count read(char* dest, Count bytes) override; Count peek(char* dest) const override; Count peek(char* dest, Count bytes) const override; const char* data() const override; private: Source buffer; Count size; Count position; }; } // namespace foundation } // namespace starshatter #include "buffer.inl.h"