/* 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