Use libc instead of Win32

This commit is contained in:
2024-10-14 22:44:52 +02:00
parent f011d871ef
commit 7193114b15
3 changed files with 32 additions and 34 deletions

View File

@ -16,7 +16,7 @@ cc_library(
], ],
srcs = [ srcs = [
"format.cpp", "format.cpp",
"print_win32.cpp", "print.cpp",
], ],
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
) )

31
asl/print.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "asl/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(const char* str, int64_t len) override
{
fwrite(str, 1, static_cast<size_t>(len), m_handle);
}
};
asl::writer* asl::print_internals::get_stdout_writer()
{
static ConsoleWriter writer{stdout};
return &writer;
}
asl::writer* asl::print_internals::get_stderr_writer()
{
static ConsoleWriter writer{stderr};
return &writer;
}

View File

@ -1,33 +0,0 @@
#include "asl/print.hpp"
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
// @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<DWORD>(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;
}