diff options
Diffstat (limited to 'asl/io/print.cpp')
-rw-r--r-- | asl/io/print.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/asl/io/print.cpp b/asl/io/print.cpp new file mode 100644 index 0000000..0161bd1 --- /dev/null +++ b/asl/io/print.cpp @@ -0,0 +1,31 @@ +#include "asl/io/print.hpp" + +#include <cstdio> + +// @Todo Optimize this, maybe make buffered +class ConsoleWriter : public asl::Writer +{ + FILE* m_handle; + +public: + explicit ConsoleWriter(FILE* handle) + : m_handle{handle} + {} + + void write(asl::span<const asl::byte> s) override + { + fwrite(s.data(), 1, static_cast<size_t>(s.size()), m_handle); + } +}; + +asl::Writer* asl::print_internals::get_stdout_writer() +{ + static ConsoleWriter s_writer{stdout}; + return &s_writer; +} + +asl::Writer* asl::print_internals::get_stderr_writer() +{ + static ConsoleWriter s_writer{stderr}; + return &s_writer; +} |