From 2aa26759e12da36d68641ea3abda9b53292a2cbd Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 18 Mar 2024 00:39:44 +0100 Subject: Bulk busy work towards Reader replacement to inject into DataLoader --- FoundationEx/src/reader/buffer.h | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 FoundationEx/src/reader/buffer.h (limited to 'FoundationEx/src/reader/buffer.h') diff --git a/FoundationEx/src/reader/buffer.h b/FoundationEx/src/reader/buffer.h new file mode 100644 index 0000000..c36310a --- /dev/null +++ b/FoundationEx/src/reader/buffer.h @@ -0,0 +1,51 @@ +/* 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" -- cgit v1.1