Use libc instead of Win32
This commit is contained in:
@ -16,7 +16,7 @@ cc_library(
|
||||
],
|
||||
srcs = [
|
||||
"format.cpp",
|
||||
"print_win32.cpp",
|
||||
"print.cpp",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
31
asl/print.cpp
Normal file
31
asl/print.cpp
Normal 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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user