From f011d871ef3af26c8f4e19de2c8d781c601ceffb Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Fri, 11 Oct 2024 00:32:49 +0200 Subject: Add console printing --- asl/print_win32.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 asl/print_win32.cpp (limited to 'asl/print_win32.cpp') diff --git a/asl/print_win32.cpp b/asl/print_win32.cpp new file mode 100644 index 0000000..45939b2 --- /dev/null +++ b/asl/print_win32.cpp @@ -0,0 +1,33 @@ +#include "asl/print.hpp" + +#define WIN32_LEAN_AND_MEAN +#include + +// @Todo Optimize this, maybe make buffered +class Win32ConsoleWriter : public asl::writer +{ + HANDLE m_handle; + +public: + explicit Win32ConsoleWriter(HANDLE handle) + : m_handle{handle} + {} + + void write(const char* str, int64_t len) override + { + ::WriteConsoleA(m_handle, str, static_cast(len), nullptr, nullptr); + } +}; + +asl::writer* asl::print_internals::get_stdout_writer() +{ + static Win32ConsoleWriter writer{::GetStdHandle(STD_OUTPUT_HANDLE)}; + return &writer; +} + +asl::writer* asl::print_internals::get_stderr_writer() +{ + static Win32ConsoleWriter writer{::GetStdHandle(STD_ERROR_HANDLE)}; + return &writer; +} + -- cgit