#pragma once #include "deimos/core/base.h" #include "deimos/core/id_name.h" #include "deimos/core/io.h" namespace deimos { enum class OsConsoleType : uint8_t { kStdOut, kStdErr, }; class OsConsoleApi { public: OsConsoleApi() = default; deimos_NO_COPY_MOVE(OsConsoleApi); virtual ~OsConsoleApi() = default; virtual void Write(OsConsoleType, Span data) = 0; }; class OsApi { public: static constexpr IdName kApiName{"deimos::OsApi"}; OsConsoleApi* console{}; }; class OsConsoleWriter : public IWriter { OsConsoleApi* m_api; OsConsoleType m_type; public: constexpr OsConsoleWriter(OsConsoleApi* api, OsConsoleType type) : m_api{api}, m_type{type} {} constexpr void Write(Span data) override { m_api->Write(m_type, data); } }; } // namespace deimos