Cleanup
This commit is contained in:
@@ -16,13 +16,8 @@ include(cmake/CPM.cmake)
|
||||
|
||||
file(GLOB_RECURSE jlog_HEADERS "include/jlog/*.h" "include/jlog/*.hpp")
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
file(GLOB_RECURSE jlog_SRC "src/jlog/linux/*.c" "src/jlog/linux/*.cpp" "src/jlog/shared/*.c" "src/jlog/shared/*.cpp")
|
||||
endif()
|
||||
file(GLOB_RECURSE jlog_SRC "src/jlog/*.cpp")
|
||||
|
||||
if(WIN32)
|
||||
file(GLOB_RECURSE jlog_SRC "src/jlog/windows/*.c" "src/jlog/windows/*.cpp" "src/jlog/shared/*.c" "src/jlog/shared/*.cpp")
|
||||
endif()
|
||||
|
||||
include_directories("include")
|
||||
|
||||
@@ -39,6 +34,7 @@ endif()
|
||||
|
||||
if (WIN32)
|
||||
add_library(jlog STATIC ${jlog_SRC})
|
||||
target_compile_options(jlog PRIVATE /wd4005)
|
||||
endif()
|
||||
|
||||
set_target_properties(jlog PROPERTIES LINKER_LANGUAGE CXX)
|
||||
|
@@ -1,52 +1,51 @@
|
||||
#pragma once
|
||||
|
||||
#include <jlog/ansi_escape_codes.hpp>
|
||||
#include <jlog/nt_color_codes.hpp>
|
||||
|
||||
// Platform independent color code mapping
|
||||
|
||||
struct colorcode
|
||||
{
|
||||
std::string ansi_code;
|
||||
WORD nt_code;
|
||||
};
|
||||
|
||||
namespace jlog::color_codes
|
||||
{
|
||||
static const colorcode FG_BLACK {ansi_escape_codes::FG_BLACK, nt_color_codes::FG_BLACK };
|
||||
static const colorcode FG_RED {ansi_escape_codes::FG_RED, nt_color_codes::FG_RED };
|
||||
static const colorcode FG_GREEN {ansi_escape_codes::FG_GREEN, nt_color_codes::FG_GREEN };
|
||||
static const colorcode FG_YELLOW {ansi_escape_codes::FG_YELLOW, nt_color_codes::FG_YELLOW };
|
||||
static const colorcode FG_BLUE {ansi_escape_codes::FG_BLUE, nt_color_codes::FG_BLUE };
|
||||
static const colorcode FG_MAGENTA {ansi_escape_codes::FG_MAGENTA, nt_color_codes::FG_MAGENTA };
|
||||
static const colorcode FG_CYAN {ansi_escape_codes::FG_CYAN, nt_color_codes::FG_CYAN };
|
||||
static const colorcode FG_WHITE {ansi_escape_codes::FG_WHITE, nt_color_codes::FG_WHITE };
|
||||
static const colorcode FG_DEFAULT {ansi_escape_codes::FG_DEFAULT, nt_color_codes::FG_DEFAULT };
|
||||
static const colorcode FG_BLACK {ansi_escape_codes::FG_BLACK};
|
||||
static const colorcode FG_RED {ansi_escape_codes::FG_RED};
|
||||
static const colorcode FG_GREEN {ansi_escape_codes::FG_GREEN };
|
||||
static const colorcode FG_YELLOW {ansi_escape_codes::FG_YELLOW};
|
||||
static const colorcode FG_BLUE {ansi_escape_codes::FG_BLUE};
|
||||
static const colorcode FG_MAGENTA {ansi_escape_codes::FG_MAGENTA};
|
||||
static const colorcode FG_CYAN {ansi_escape_codes::FG_CYAN};
|
||||
static const colorcode FG_WHITE {ansi_escape_codes::FG_WHITE};
|
||||
static const colorcode FG_DEFAULT {ansi_escape_codes::FG_DEFAULT};
|
||||
|
||||
static const colorcode FG_BRIGHT_BLACK {ansi_escape_codes::FG_BRIGHT_BLACK, nt_color_codes::FG_BRIGHT_BLACK};
|
||||
static const colorcode FG_BRIGHT_RED {ansi_escape_codes::FG_BRIGHT_RED, nt_color_codes::FG_BRIGHT_RED};
|
||||
static const colorcode FG_BRIGHT_GREEN {ansi_escape_codes::FG_BRIGHT_GREEN, nt_color_codes::FG_BRIGHT_GREEN};
|
||||
static const colorcode FG_BRIGHT_YELLOW {ansi_escape_codes::FG_BRIGHT_YELLOW, nt_color_codes::FG_BRIGHT_YELLOW};
|
||||
static const colorcode FG_BRIGHT_BLUE {ansi_escape_codes::FG_BRIGHT_MAGENTA, nt_color_codes::FG_BRIGHT_MAGENTA};
|
||||
static const colorcode FG_BRIGHT_MAGENTA {ansi_escape_codes::FG_BRIGHT_MAGENTA, nt_color_codes::FG_BRIGHT_MAGENTA};
|
||||
static const colorcode FG_BRIGHT_CYAN {ansi_escape_codes::FG_BRIGHT_CYAN, nt_color_codes::FG_BRIGHT_CYAN};
|
||||
static const colorcode FG_BRIGHT_WHITE {ansi_escape_codes::FG_BRIGHT_WHITE, nt_color_codes::FG_BRIGHT_WHITE};
|
||||
static const colorcode FG_BRIGHT_BLACK {ansi_escape_codes::FG_BRIGHT_BLACK};
|
||||
static const colorcode FG_BRIGHT_RED {ansi_escape_codes::FG_BRIGHT_RED};
|
||||
static const colorcode FG_BRIGHT_GREEN {ansi_escape_codes::FG_BRIGHT_GREEN};
|
||||
static const colorcode FG_BRIGHT_YELLOW {ansi_escape_codes::FG_BRIGHT_YELLOW};
|
||||
static const colorcode FG_BRIGHT_BLUE {ansi_escape_codes::FG_BRIGHT_MAGENTA};
|
||||
static const colorcode FG_BRIGHT_MAGENTA {ansi_escape_codes::FG_BRIGHT_MAGENTA};
|
||||
static const colorcode FG_BRIGHT_CYAN {ansi_escape_codes::FG_BRIGHT_CYAN};
|
||||
static const colorcode FG_BRIGHT_WHITE {ansi_escape_codes::FG_BRIGHT_WHITE};
|
||||
|
||||
static const colorcode BG_BLACK {ansi_escape_codes::BG_BLACK, nt_color_codes::BG_BLACK};
|
||||
static const colorcode BG_RED {ansi_escape_codes::BG_RED, nt_color_codes::BG_RED};
|
||||
static const colorcode BG_GREEN {ansi_escape_codes::BG_GREEN, nt_color_codes::BG_GREEN};
|
||||
static const colorcode BG_YELLOW {ansi_escape_codes::BG_YELLOW, nt_color_codes::BG_YELLOW};
|
||||
static const colorcode BG_BLUE {ansi_escape_codes::BG_BLUE, nt_color_codes::BG_BLUE};
|
||||
static const colorcode BG_MAGENTA {ansi_escape_codes::BG_MAGENTA, nt_color_codes::BG_MAGENTA};
|
||||
static const colorcode BG_CYAN {ansi_escape_codes::BG_CYAN, nt_color_codes::BG_CYAN};
|
||||
static const colorcode BG_WHITE {ansi_escape_codes::BG_WHITE, nt_color_codes::BG_WHITE};
|
||||
static const colorcode BG_DEFAULT {ansi_escape_codes::BG_DEFAULT, nt_color_codes::BG_DEFAULT};
|
||||
static const colorcode BG_BLACK {ansi_escape_codes::BG_BLACK};
|
||||
static const colorcode BG_RED {ansi_escape_codes::BG_RED};
|
||||
static const colorcode BG_GREEN {ansi_escape_codes::BG_GREEN};
|
||||
static const colorcode BG_YELLOW {ansi_escape_codes::BG_YELLOW};
|
||||
static const colorcode BG_BLUE {ansi_escape_codes::BG_BLUE};
|
||||
static const colorcode BG_MAGENTA {ansi_escape_codes::BG_MAGENTA};
|
||||
static const colorcode BG_CYAN {ansi_escape_codes::BG_CYAN};
|
||||
static const colorcode BG_WHITE {ansi_escape_codes::BG_WHITE};
|
||||
static const colorcode BG_DEFAULT {ansi_escape_codes::BG_DEFAULT};
|
||||
|
||||
static const colorcode BG_BRIGHT_BLACK {ansi_escape_codes::BG_BRIGHT_BLACK, nt_color_codes::BG_BRIGHT_BLACK};
|
||||
static const colorcode BG_BRIGHT_RED {ansi_escape_codes::BG_BRIGHT_RED, nt_color_codes::BG_BRIGHT_RED};
|
||||
static const colorcode BG_BRIGHT_GREEN {ansi_escape_codes::BG_BRIGHT_GREEN, nt_color_codes::BG_BRIGHT_GREEN};
|
||||
static const colorcode BG_BRIGHT_YELLOW {ansi_escape_codes::BG_BRIGHT_YELLOW, nt_color_codes::BG_BRIGHT_YELLOW};
|
||||
static const colorcode BG_BRIGHT_BLUE {ansi_escape_codes::BG_BRIGHT_BLUE, nt_color_codes::BG_BRIGHT_BLUE};
|
||||
static const colorcode BG_BRIGHT_MAGENTA {ansi_escape_codes::BG_BRIGHT_MAGENTA, nt_color_codes::BG_BRIGHT_MAGENTA};
|
||||
static const colorcode BG_BRIGHT_CYAN {ansi_escape_codes::BG_BRIGHT_CYAN, nt_color_codes::BG_BRIGHT_CYAN};
|
||||
static const colorcode BG_BRIGHT_WHITE {ansi_escape_codes::BG_BRIGHT_WHITE, nt_color_codes::BG_BRIGHT_WHITE};
|
||||
static const colorcode BG_BRIGHT_BLACK {ansi_escape_codes::BG_BRIGHT_BLACK};
|
||||
static const colorcode BG_BRIGHT_RED {ansi_escape_codes::BG_BRIGHT_RED};
|
||||
static const colorcode BG_BRIGHT_GREEN {ansi_escape_codes::BG_BRIGHT_GREEN};
|
||||
static const colorcode BG_BRIGHT_YELLOW {ansi_escape_codes::BG_BRIGHT_YELLOW};
|
||||
static const colorcode BG_BRIGHT_BLUE {ansi_escape_codes::BG_BRIGHT_BLUE};
|
||||
static const colorcode BG_BRIGHT_MAGENTA {ansi_escape_codes::BG_BRIGHT_MAGENTA};
|
||||
static const colorcode BG_BRIGHT_CYAN {ansi_escape_codes::BG_BRIGHT_CYAN};
|
||||
static const colorcode BG_BRIGHT_WHITE {ansi_escape_codes::BG_BRIGHT_WHITE};
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
// NT color codes taken from windows.h / consoleapi2.h
|
||||
|
||||
#if WIN32
|
||||
#define NOMINMAX
|
||||
#include <Windows.h>
|
||||
#endif
|
||||
|
||||
#ifndef WORD
|
||||
#define WORD unsigned short
|
||||
#endif
|
||||
|
||||
namespace jlog::nt_color_codes
|
||||
{
|
||||
const WORD FG_BLACK = 0x0000;
|
||||
const WORD FG_BLUE = 0x0001;
|
||||
const WORD FG_GREEN = 0x0002;
|
||||
const WORD FG_RED = 0x0004;
|
||||
|
||||
const WORD FG_YELLOW = FG_RED | FG_GREEN;
|
||||
|
||||
const WORD FG_MAGENTA = FG_RED | FG_BLUE;
|
||||
const WORD FG_CYAN = FG_GREEN | FG_BLUE;
|
||||
const WORD FG_WHITE = FG_RED | FG_GREEN | FG_BLUE;
|
||||
const WORD FG_DEFAULT = FG_WHITE;
|
||||
|
||||
const WORD FG_BRIGHT_BLACK = 0 | 0x0008;
|
||||
const WORD FG_BRIGHT_RED = FG_RED | 0x0008;
|
||||
const WORD FG_BRIGHT_GREEN = FG_GREEN | 0x0008;
|
||||
const WORD FG_BRIGHT_YELLOW = FG_RED | FG_GREEN | 0x0008;
|
||||
const WORD FG_BRIGHT_BLUE = FG_BLUE | 0x0008;
|
||||
const WORD FG_BRIGHT_MAGENTA = FG_RED | FG_BLUE | 0x0008;
|
||||
const WORD FG_BRIGHT_CYAN = FG_GREEN | FG_BLUE | 0x0008;
|
||||
const WORD FG_BRIGHT_WHITE = FG_RED | FG_GREEN | FG_BLUE | 0x0008;
|
||||
|
||||
|
||||
const WORD BG_BLACK = 0x0000;
|
||||
const WORD BG_BLUE = 0x0010;
|
||||
const WORD BG_GREEN = 0x0020;
|
||||
const WORD BG_RED = 0x0040;
|
||||
const WORD BG_YELLOW = BG_RED | BG_GREEN;
|
||||
const WORD BG_MAGENTA = BG_RED | BG_BLUE;
|
||||
const WORD BG_CYAN = BG_GREEN | BG_BLUE;
|
||||
const WORD BG_WHITE = BG_RED | BG_GREEN | BG_BLUE;
|
||||
const WORD BG_BRIGHT_BLACK = 0 | 0x0080;
|
||||
const WORD BG_BRIGHT_RED = BG_RED | 0x0080;
|
||||
const WORD BG_BRIGHT_GREEN = BG_GREEN | 0x0080;
|
||||
const WORD BG_BRIGHT_YELLOW = BG_YELLOW | 0x0080;
|
||||
const WORD BG_BRIGHT_BLUE = BG_BLUE | 0x0080;
|
||||
const WORD BG_BRIGHT_MAGENTA = BG_RED | BG_BLUE | 0x0080;
|
||||
const WORD BG_BRIGHT_CYAN = BG_GREEN | BG_BLUE | 0x0080;
|
||||
const WORD BG_BRIGHT_WHITE = BG_RED | BG_GREEN | BG_BLUE | 0x0080;
|
||||
|
||||
const WORD BG_DEFAULT = BG_WHITE;
|
||||
}
|
@@ -4,12 +4,12 @@
|
||||
#include <chrono>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#define NOMINMAX
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
namespace jlog
|
||||
{
|
||||
|
||||
static std::string default_logfile = "latest.log";
|
||||
|
||||
void set_default_logfile(const std::string& filename)
|
||||
@@ -37,16 +37,18 @@ namespace jlog
|
||||
|
||||
void log_to_console(const std::string& message)
|
||||
{
|
||||
// Beat windows into submission and make it use ANSI color codes
|
||||
// This also looks fugly, but it works
|
||||
#ifdef WIN32
|
||||
HANDLE handleOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
DWORD consoleMode;
|
||||
GetConsoleMode( handleOut , &consoleMode);
|
||||
consoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||
consoleMode |= DISABLE_NEWLINE_AUTO_RETURN;
|
||||
SetConsoleMode( handleOut , consoleMode );
|
||||
#endif
|
||||
|
||||
// Beat windows into submission and make it use ANSI color codes
|
||||
// This also looks fugly, but it works
|
||||
#ifdef WIN32
|
||||
HANDLE handleOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
DWORD consoleMode;
|
||||
GetConsoleMode( handleOut, &consoleMode);
|
||||
consoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||
consoleMode |= DISABLE_NEWLINE_AUTO_RETURN;
|
||||
SetConsoleMode( handleOut , consoleMode );
|
||||
SetConsoleOutputCP(CP_UTF8);
|
||||
#endif
|
||||
|
||||
std::cout << message;
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
//#include <jlog/jlog.hpp>
|
||||
|
||||
//namespace jlog {
|
||||
|
||||
|
||||
/*
|
||||
void log(const std::vector<token>& tokens, const std::string& filename)
|
||||
{
|
||||
for (const token& t : tokens)
|
||||
{
|
||||
|
||||
if (!t.delimiter.empty()) {
|
||||
auto formatted_str = std::format("{}{}{}{}{} ", t.colorCode.ansi_code, t.delimiter[0], t.content, t.delimiter[1], ansi_escape_codes::FG_DEFAULT);
|
||||
log_to_console(formatted_str);
|
||||
log_to_file(filename, formatted_str);
|
||||
} else {
|
||||
auto formatted_str = std::format("{}{}{} ", t.colorCode.ansi_code, t.content, ansi_escape_codes::FG_DEFAULT);
|
||||
log_to_console(t.content);
|
||||
log_to_file(filename, t.content);
|
||||
}
|
||||
}
|
||||
log_to_file(filename, "\n");
|
||||
log_to_console("\n");
|
||||
}
|
||||
|
||||
std::string consoleMsgFormatter(token t)
|
||||
{
|
||||
if (!t.delimiter.empty())
|
||||
{
|
||||
return std::format("{}{}{}{}{} ", t.colorCode.ansi_code, t.delimiter[0], t.content, t.delimiter[1], ansi_escape_codes::RESET);
|
||||
}
|
||||
|
||||
return std::format("{}{}{} ", t.colorCode.ansi_code, t.content, ansi_escape_codes::RESET);
|
||||
}
|
||||
|
||||
std::string logfileMsgFormatter(token t)
|
||||
{
|
||||
if (!t.delimiter.empty())
|
||||
{
|
||||
return std::format("{}{}{} ", t.delimiter[0], t.content, t.delimiter[1]);
|
||||
}
|
||||
|
||||
return t.content + " ";
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
void log(const std::vector<token> tokens, const std::string& filename)
|
||||
{
|
||||
log_to_console(toks2consoleMsg(tokens));
|
||||
log_to_console("\n");
|
||||
log_to_file(filename, toks2logfileMsg(tokens));
|
||||
log_to_file(filename, "\n");
|
||||
}
|
||||
*/
|
||||
//}
|
@@ -1,99 +0,0 @@
|
||||
//#define NOMINMAX
|
||||
//#include <Windows.h>
|
||||
//#include <jlog/jlog.hpp>
|
||||
//#include <string>
|
||||
|
||||
/*
|
||||
inline void SetConsoleTextColor(WORD color) {
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
|
||||
}
|
||||
*/
|
||||
|
||||
//namespace jlog
|
||||
//{
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void log(const std::vector<token>& tokens, const std::string& filename)
|
||||
{
|
||||
for (const token& t : tokens)
|
||||
{
|
||||
|
||||
std::string formatted_str;
|
||||
if (!t.delimiter.empty()) {
|
||||
formatted_str = std::format("{}{}{} ", t.delimiter[0], t.content, t.delimiter[1]);
|
||||
} else {
|
||||
formatted_str = t.content + " ";
|
||||
}
|
||||
|
||||
SetConsoleTextColor(t.colorCode.nt_code);
|
||||
log_to_console(formatted_str);
|
||||
SetConsoleTextColor(nt_color_codes::FG_DEFAULT);
|
||||
|
||||
log_to_file(filename, formatted_str);
|
||||
}
|
||||
log_to_file(filename, "\n");
|
||||
log_to_console("\n");
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// No fucking clue if this will work properly. Don't have a windows machine to test on right now.
|
||||
// - Maxine
|
||||
// No for a number of reasons
|
||||
// 1. It didn't put delimiter characters down correctly
|
||||
// 2. calling SetConsoleTextColor here won't work properly because we aren't *outputting* the content here
|
||||
// 3. Additionally, we can't set the console color back to defaults after returning a value.
|
||||
|
||||
// This is a well-intentioned abstraction, but without a full grasp of the implications, and therefore won't work without considerable redesign.
|
||||
/*
|
||||
std::string consoleMsgFormatter(token t)
|
||||
{
|
||||
std::string ft;
|
||||
if (!t.delimiter.empty())
|
||||
{
|
||||
SetConsoleTextColor(t.colorCode.nt_code);
|
||||
// TODO: some ability to let user handle space-separation if they do/don't want it
|
||||
return std::format("{}{}{} ", t.delimiter[0], t.content, t.delimiter[1]);
|
||||
SetConsoleTextColor(color_codes::FG_DEFAULT.nt_code);
|
||||
}
|
||||
|
||||
SetConsoleTextColor(t.colorCode.nt_code);
|
||||
return t.content + " ";
|
||||
SetConsoleTextColor(color_codes::FG_DEFAULT.nt_code);
|
||||
|
||||
|
||||
}
|
||||
|
||||
std::string logfileMsgFormatter(token t)
|
||||
{
|
||||
if (!t.delimiter.empty())
|
||||
{
|
||||
return std::string(1, t.delimiter[0]) + t.content + std::string(1, t.delimiter[1]) + " ";
|
||||
}
|
||||
|
||||
return t.content + " ";
|
||||
}
|
||||
*/
|
||||
|
||||
// Commented out for now so we can bring it back later if need be
|
||||
/*
|
||||
void log(const std::vector<token> tokens) {
|
||||
for (const token& t : tokens) {
|
||||
if (!t.delimiter.empty()) {
|
||||
SetConsoleTextColor(t.colorCode.nt_code);
|
||||
log_to_console(std::string(1, t.delimiter[0]) + t.content + std::string(1, t.delimiter[1]) + " ");
|
||||
log_to_file(std::string(1, t.delimiter[0]) + t.content + std::string(1, t.delimiter[1]) + " ");
|
||||
} else {
|
||||
SetConsoleTextColor(t.colorCode.nt_code);
|
||||
log_to_console(t.content + " ");
|
||||
log_to_file(t.content + " ");
|
||||
}
|
||||
}
|
||||
SetConsoleTextColor(color_codes::FG_DEFAULT.nt_code);
|
||||
log_to_console("\n");
|
||||
log_to_file("\n");
|
||||
}
|
||||
*/
|
||||
//}
|
Reference in New Issue
Block a user