mirror of
https://github.com/NoelFB/blah.git
synced 2024-11-25 16:18:57 +08:00
simplifying logging, changing App events to std::function
This commit is contained in:
parent
f8741e27e2
commit
a72cd5cab6
|
@ -1,8 +1,13 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <functional>
|
||||||
|
#include <blah/core/log.h>
|
||||||
|
|
||||||
namespace Blah
|
namespace Blah
|
||||||
{
|
{
|
||||||
|
using AppEventFn = std::function<void()>;
|
||||||
|
using AppLogFn = std::function<void(const char* message, Log::Category category)>;
|
||||||
|
|
||||||
struct Config
|
struct Config
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
@ -11,15 +16,12 @@ namespace Blah
|
||||||
int max_updates;
|
int max_updates;
|
||||||
int target_framerate;
|
int target_framerate;
|
||||||
|
|
||||||
void (*on_startup)();
|
AppEventFn on_startup;
|
||||||
void (*on_shutdown)();
|
AppEventFn on_shutdown;
|
||||||
void (*on_update)();
|
AppEventFn on_update;
|
||||||
void (*on_render)();
|
AppEventFn on_render;
|
||||||
void (*on_exit_request)();
|
AppEventFn on_exit_request;
|
||||||
|
AppLogFn on_log;
|
||||||
void (*on_info)(const char* text);
|
|
||||||
void (*on_warn)(const char* text);
|
|
||||||
void (*on_error)(const char* text);
|
|
||||||
|
|
||||||
Config();
|
Config();
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
#define BLAH_ASSERT(condition, message) \
|
#define BLAH_ASSERT(condition, message) \
|
||||||
do { if (!(condition)) { BLAH_ERROR(message); } } while(0)
|
do { if (!(condition)) { BLAH_ERROR(message); } } while(0)
|
||||||
|
|
||||||
|
#define BLAH_ASSERT_FMT(condition, message, ...) \
|
||||||
|
do { if (!(condition)) { BLAH_ERROR_FMT(message, __VA_ARGS__); } } while(0)
|
||||||
|
|
||||||
// maximum length of a print/warn/error message
|
// maximum length of a print/warn/error message
|
||||||
#ifndef BLAH_MESSAGE
|
#ifndef BLAH_MESSAGE
|
||||||
#define BLAH_MESSAGE 1024
|
#define BLAH_MESSAGE 1024
|
||||||
|
@ -32,6 +35,13 @@ namespace Blah
|
||||||
{
|
{
|
||||||
namespace Log
|
namespace Log
|
||||||
{
|
{
|
||||||
|
enum class Category
|
||||||
|
{
|
||||||
|
Info,
|
||||||
|
Warning,
|
||||||
|
Error
|
||||||
|
};
|
||||||
|
|
||||||
void print(const char* info, ...);
|
void print(const char* info, ...);
|
||||||
void warn(const char* info, ...);
|
void warn(const char* info, ...);
|
||||||
void error(const char* info, ...);
|
void error(const char* info, ...);
|
||||||
|
|
|
@ -27,9 +27,7 @@ Config::Config()
|
||||||
on_update = nullptr;
|
on_update = nullptr;
|
||||||
on_render = nullptr;
|
on_render = nullptr;
|
||||||
on_exit_request = App::exit;
|
on_exit_request = App::exit;
|
||||||
on_info = nullptr;
|
on_log = nullptr;
|
||||||
on_warn = nullptr;
|
|
||||||
on_error = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|
|
@ -13,9 +13,9 @@ void Log::print(const char* format, ...)
|
||||||
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
if (App::is_running() && App::config()->on_info != nullptr)
|
if (App::is_running() && App::config()->on_log)
|
||||||
{
|
{
|
||||||
App::config()->on_info(msg);
|
App::config()->on_log(msg, Category::Info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -31,13 +31,13 @@ void Log::warn(const char* format, ...)
|
||||||
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
if (App::is_running() && App::config()->on_warn != nullptr)
|
if (App::is_running() && App::config()->on_log)
|
||||||
{
|
{
|
||||||
App::config()->on_warn(msg);
|
App::config()->on_log(msg, Category::Warning);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("\033[01;33mWARN:\033[0m\t%s\n", msg);
|
printf("WARN: %s\n", msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,12 +49,12 @@ void Log::error(const char* format, ...)
|
||||||
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
vsnprintf(msg, sizeof(char) * BLAH_MESSAGE, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
if (App::is_running() && App::config()->on_error != nullptr)
|
if (App::is_running() && App::config()->on_log)
|
||||||
{
|
{
|
||||||
App::config()->on_error(msg);
|
App::config()->on_log(msg, Category::Error);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("\033[1;31mERROR:\033[0m\t%s\n", msg);
|
printf("ERROR: %s\n", msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user