From 2066e4911948d11cac5a234d2f7773dc5f06ba96 Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 18 Mar 2024 23:41:20 +0100 Subject: Added filesystem-only starshatter::data DataLoader replacement Step by step. The intent is to find a good spot between current data representations and the standard library and put the intermediate stage there. After it matures a bit, we can move further away. --- FoundationEx/src/reader/file.h | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 FoundationEx/src/reader/file.h (limited to 'FoundationEx/src/reader/file.h') diff --git a/FoundationEx/src/reader/file.h b/FoundationEx/src/reader/file.h new file mode 100644 index 0000000..22810b6 --- /dev/null +++ b/FoundationEx/src/reader/file.h @@ -0,0 +1,49 @@ +/* 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 + +#include +#include + + +namespace starshatter +{ +namespace foundation +{ + + +struct FileReader : public BaseReader +{ + FileReader() = default; + FileReader(std::fstream src); + FileReader(const FileReader& other) = delete; + FileReader& operator=(const FileReader& other) = delete; + FileReader(FileReader&& other) = default; + FileReader& operator=(FileReader&& other) = default; + ~FileReader() 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; + Text more() override; + +private: + mutable std::fstream file = {}; + Count size = {}; + Count position = {}; +}; + + +} // namespace foundation +} // namespace starshatter -- cgit v1.1