#pragma once #include #include namespace sp { class StdInput : public IoInterface { private: std::istream& m_Io; public: StdInput(std::istream& a_Io) : m_Io(a_Io) {} virtual DataBuffer Read(std::size_t a_Amount) override { DataBuffer buffer(a_Amount); m_Io.read(reinterpret_cast(buffer.data()), a_Amount); return buffer; } virtual void Write(const DataBuffer& a_Data) override {} }; class StdOuput : public IoInterface { private: std::ostream& m_Io; public: StdOuput(std::ostream& a_Io) : m_Io(a_Io) {} virtual DataBuffer Read(std::size_t a_Amount) override { return {}; } virtual void Write(const DataBuffer& a_Data) override { m_Io.write(reinterpret_cast(a_Data.data()), a_Data.GetSize()); } }; } // namespace sp