summaryrefslogtreecommitdiff
path: root/src/core.cpp
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2022-08-03 15:25:29 -0300
committerFrederico Linhares <fred@linhares.blue>2022-08-03 15:25:29 -0300
commit60b38f632e4d6e9416630de6120dafcac613a698 (patch)
tree458c35df273166b68a3fd26095226b88bba9371e /src/core.cpp
parentf88712a929ee3543f8e1d45c6071f676df339cdb (diff)
feat Create a log system
Diffstat (limited to 'src/core.cpp')
-rw-r--r--src/core.cpp77
1 files changed, 54 insertions, 23 deletions
diff --git a/src/core.cpp b/src/core.cpp
index 7e13f75..30acbf9 100644
--- a/src/core.cpp
+++ b/src/core.cpp
@@ -16,7 +16,9 @@
#include "core.hpp"
-#include <iostream>
+#ifdef DEBUG
+#include <sstream>
+#endif
#include <yaml-cpp/yaml.h>
@@ -31,21 +33,19 @@ vk_debug_callback(
const VkDebugUtilsMessengerCallbackDataEXT* callback_data,
void* _obj)
{
- // Print message severy code.
- std::cout << "[\e[1;0mVK\e[0;0m ";
+ // Set level.
+ Log::Level log_level;
if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT)
- std::cout << "\e[1;32mV\e[0;0m";
+ log_level = Log::Level::Trace;
else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT)
- std::cout << "\e[1;34mI\e[0;0m";
+ log_level = Log::Level::Information;
else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)
- std::cout << "\e[1;33mW\e[0;0m";
+ log_level = Log::Level::Warning;
else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
- std::cout << "\e[1;31mE\e[0;0m";
-
- std::cout << "]";
+ log_level = Log::Level::Error;
// Log message.
- std::cout << callback_data->pMessage << std::endl;
+ cg_core.log.message(log_level, callback_data->pMessage);
return VK_FALSE;
}
@@ -226,9 +226,13 @@ load_vk_instance(void *obj)
}
#ifdef DEBUG
- std::cout << "Enabled VK extensions." << std::endl;
+ cg_core.log.message(Log::Level::Trace, "Enabled VK extensions.");
for(auto vk_extension: vk_extensions)
- std::cout << "Extension name: " << vk_extension << std::endl;
+ {
+ std::string message{"Extension name: "};
+ message += vk_extension;
+ cg_core.log.message(Log::Level::Trace, message);
+ }
#endif
}
@@ -244,19 +248,20 @@ load_vk_instance(void *obj)
vk_available_layers.data());
vk_available_layers_names.resize(vk_available_layers_count);
#ifdef DEBUG
- std::cout << "Available VK instance layers." << std::endl;
+ cg_core.log.message(Log::Level::Trace, "Available VK instance layers.");
#endif
for(uint32_t i = 0; i < vk_available_layers_count; i++)
{
#ifdef DEBUG
- std::cout << "\nname: " << vk_available_layers[i].layerName <<
- std::endl;
- std::cout << "Description: " << vk_available_layers[i].description <<
- std::endl;
- std::cout << "Spec version: " << vk_available_layers[i].specVersion <<
- std::endl;
- std::cout << "Implementation version: " <<
- vk_available_layers[i].implementationVersion << std::endl;
+ std::stringstream message{};
+ message << "\nname: " << vk_available_layers[i].layerName << std::endl;
+ message << "Description: " << vk_available_layers[i].description <<
+ std::endl;
+ message << "Spec version: " << vk_available_layers[i].specVersion <<
+ std::endl;
+ message << "Implementation version: " <<
+ vk_available_layers[i].implementationVersion << std::endl;
+ cg_core.log.message(Log::Level::Trace, message.str());
#endif
vk_available_layers_names[i] = vk_available_layers[i].layerName;
@@ -402,7 +407,7 @@ load_vk_devices(void *obj)
}
#ifdef DEBUG
- std::cout << "Physical devices properties" << std::endl;
+ cg_core.log.message(Log::Level::Trace, "Physical devices properties");
#endif
cg_core.vk_devices.reserve(devices_count);
@@ -462,6 +467,30 @@ unload_vk_graphics_pipeline(void *obj)
delete cg_core.vk_graphics_pipeline;
}
+static void
+load_mruby(void *obj)
+{
+ cg_core.mrb = mrb_open();
+ if (!cg_core.mrb) throw CommandError{"Failed to initialize mruby."};
+}
+
+static void
+unload_mruby(void *obj)
+{
+ mrb_close(cg_core.mrb);
+}
+
+static void
+load_mruby_symbols(void *obj)
+{
+ cg_core.sym_fatal = mrb_intern_cstr(cg_core.mrb, "fatal");
+ cg_core.sym_error = mrb_intern_cstr(cg_core.mrb, "error");
+ cg_core.sym_warning = mrb_intern_cstr(cg_core.mrb, "warning");
+ cg_core.sym_information = mrb_intern_cstr(cg_core.mrb, "information");
+ cg_core.sym_debug = mrb_intern_cstr(cg_core.mrb, "debug");
+ cg_core.sym_trace = mrb_intern_cstr(cg_core.mrb, "trace");
+}
+
const CommandChain cg_sCore::loader{
{&load_variables, &unload_variables},
{&load_sdl, &unload_sdl},
@@ -476,5 +505,7 @@ const CommandChain cg_sCore::loader{
#endif
{&load_vk_devices, &unload_vk_devices},
{&load_vk_swapchain, &unload_vk_swapchain},
- {&load_vk_graphics_pipeline, &unload_vk_graphics_pipeline}
+ {&load_vk_graphics_pipeline, &unload_vk_graphics_pipeline},
+ {&load_mruby, &unload_mruby},
+ {&load_mruby_symbols, nullptr}
};