mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
Added error macros and a simple logger.
This commit is contained in:
parent
3c1a60c898
commit
7ef1c76e4a
76
core/error_macros.h
Normal file
76
core/error_macros.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#ifndef ERROR_MACROS_H
|
||||||
|
#define ERROR_MACROS_H
|
||||||
|
|
||||||
|
#include "core/log/logger.h"
|
||||||
|
|
||||||
|
// Based on Godot Engine's error_macros.h
|
||||||
|
// MIT License
|
||||||
|
// Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.
|
||||||
|
// Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define GENERATE_TRAP \
|
||||||
|
__debugbreak(); \
|
||||||
|
/* Avoid warning about control paths */ \
|
||||||
|
for (;;) { \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define GENERATE_TRAP __builtin_trap();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LOG_TRACE(str) \
|
||||||
|
Logger::log_trace(str);
|
||||||
|
|
||||||
|
#define LOG_MSG(str) \
|
||||||
|
Logger::log_message(str);
|
||||||
|
|
||||||
|
#define LOG_WARN(str) \
|
||||||
|
Logger::log_warning(str);
|
||||||
|
|
||||||
|
#define LOG_ERR(str) \
|
||||||
|
Logger::log_error(str);
|
||||||
|
|
||||||
|
#define ERR_FAIL_INDEX(index, size) \
|
||||||
|
if ((index < 0) || (index >= size)) {\
|
||||||
|
Logger::_log_index_error(__FUNCTION__, __FILE__, __LINE__, index, size, ""); \
|
||||||
|
return;\
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#define ERR_FAIL_INDEX_V(index, size, val) \
|
||||||
|
if ((index < 0) || (index >= size)) {\
|
||||||
|
Logger::_log_index_error(__FUNCTION__, __FILE__, __LINE__, index, size, ""); \
|
||||||
|
return val;\
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#define ERR_FAIL_COND(cond) \
|
||||||
|
if (cond) {\
|
||||||
|
Logger::_log_error(__FUNCTION__, __FILE__, __LINE__, "ERR_FAIL_COND: \"" #cond "\" is true!"); \
|
||||||
|
return;\
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#define ERR_FAIL_COND_V(cond, val) \
|
||||||
|
if (cond) {\
|
||||||
|
Logger::_log_error(__FUNCTION__, __FILE__, __LINE__, "ERR_FAIL_COND: \"" #cond "\" is true!"); \
|
||||||
|
return val;\
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#define CRASH_INDEX(index, size) \
|
||||||
|
if ((index < 0) || (index >= size)) {\
|
||||||
|
Logger::_log_index_error(__FUNCTION__, __FILE__, __LINE__, index, size, "CRASH!"); \
|
||||||
|
GENERATE_TRAP \
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#define CRASH_COND(cond) \
|
||||||
|
if (cond) {\
|
||||||
|
Logger::_log_error(__FUNCTION__, __FILE__, __LINE__, "CRASH_COND: \"" #cond "\" is true!"); \
|
||||||
|
GENERATE_TRAP \
|
||||||
|
} else\
|
||||||
|
((void)0)\
|
||||||
|
|
||||||
|
#endif
|
52
core/log/logger.cpp
Normal file
52
core/log/logger.cpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#include "logger.h"
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
void Logger::log_trace(const String &str)
|
||||||
|
{
|
||||||
|
log_trace(str.data());
|
||||||
|
}
|
||||||
|
void Logger::log_trace(const char *str)
|
||||||
|
{
|
||||||
|
printf("TRACE: %s\n", str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger::log_message(const String &str)
|
||||||
|
{
|
||||||
|
log_message(str.data());
|
||||||
|
}
|
||||||
|
void Logger::log_message(const char *str)
|
||||||
|
{
|
||||||
|
printf("MESSAGE: %s\n", str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger::log_warning(const String &str)
|
||||||
|
{
|
||||||
|
log_warning(str.data());
|
||||||
|
}
|
||||||
|
void Logger::log_warning(const char *str)
|
||||||
|
{
|
||||||
|
printf("WARNING: %s\n", str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger::log_error(const String &str)
|
||||||
|
{
|
||||||
|
log_error(str.data());
|
||||||
|
}
|
||||||
|
void Logger::log_error(const char *str)
|
||||||
|
{
|
||||||
|
printf("ERROR: %s\n", str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger::_log_error(const char *p_function, const char *p_file, int p_line, const char *str)
|
||||||
|
{
|
||||||
|
printf("!ERROR: (%s) %s:%d. %s\n", p_file, p_function, p_line, str);
|
||||||
|
}
|
||||||
|
void Logger::_log_msg_error(const char *p_function, const char *p_file, int p_line, const char *p_msg, const char *str)
|
||||||
|
{
|
||||||
|
printf("!ERROR: (%s) %s:%d :: %s. %s\n", p_file, p_function, p_line, str, p_msg);
|
||||||
|
}
|
||||||
|
void Logger::_log_index_error(const char *p_function, const char *p_file, int p_line, const int index, const int size, const char *str)
|
||||||
|
{
|
||||||
|
printf("!INDEX ERROR: (%s) %s:%d :: index: %d/%d. %s\n", p_file, p_function, p_line, index, size, str);
|
||||||
|
}
|
26
core/log/logger.h
Normal file
26
core/log/logger.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#ifndef LOGGER_H
|
||||||
|
#define LOGGER_H
|
||||||
|
|
||||||
|
#include "core/string.h"
|
||||||
|
|
||||||
|
class Logger {
|
||||||
|
public:
|
||||||
|
static void log_trace(const String &str);
|
||||||
|
static void log_trace(const char *str);
|
||||||
|
|
||||||
|
static void log_message(const String &str);
|
||||||
|
static void log_message(const char *str);
|
||||||
|
|
||||||
|
static void log_warning(const String &str);
|
||||||
|
static void log_warning(const char *str);
|
||||||
|
|
||||||
|
static void log_error(const String &str);
|
||||||
|
static void log_error(const char *str);
|
||||||
|
|
||||||
|
static void _log_error(const char *p_function, const char *p_file, int p_line, const char *str);
|
||||||
|
static void _log_msg_error(const char *p_function, const char *p_file, int p_line, const char *p_msg, const char *str);
|
||||||
|
static void _log_index_error(const char *p_function, const char *p_file, int p_line, const int index, const int size, const char *str);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user