From 60b38f632e4d6e9416630de6120dafcac613a698 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 3 Aug 2022 15:25:29 -0300 Subject: feat Create a log system --- src/core.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 23 deletions(-) (limited to 'src/core.cpp') 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 +#ifdef DEBUG +#include +#endif #include @@ -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} }; -- cgit v1.2.3