#pragma once #include #include namespace sp { namespace io { struct FileTag { enum OpenMode { In = 1, Out = 1 << 1, }; }; template <> class IOInterface { private: std::unique_ptr m_FileInput; std::unique_ptr m_FileOutput; public: IOInterface(const std::string& a_FilePath, unsigned int a_OpenMode); IOInterface(IOInterface&& other); DataBuffer Read(std::size_t a_Amount); void Write(const sp::DataBuffer& a_Data); }; using File = IOInterface; } // namespace io } // namespace sp