Use libc instead of Win32
This commit is contained in:
@ -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
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