Skip to content

Commit

Permalink
Fixed issues on msvc and clang
Browse files Browse the repository at this point in the history
  • Loading branch information
Immanuel-C committed Feb 18, 2024
1 parent 3e89d44 commit de3a09e
Showing 1 changed file with 23 additions and 18 deletions.
41 changes: 23 additions & 18 deletions ILog.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,23 @@ extern "C" {
#define _I_COLOUR_RED 4
#define _I_COLOUR_FATAL_RED 5

#if defined(_MSC_VER) || defined(__clang__)
#define _I_VA_ARGS(...) , __VA_ARGS__
#else
#define _I_VA_ARGS(...) , ##__VA_ARGS__
#endif

#define __I_DEBUG_BREAK() debug_break()

#if !defined(NDEBUG)
#define I_DEBUG_LOG_TRACE(msg, ...) _i_log(stdout, "Debug Trace: ", msg, _I_COLOUR_GREEN _I_VA_ARGS( __VA_ARGS__ ))
#define I_DEBUG_LOG_INFO(msg, ...) _i_log(stdout, "Debug Info: ", msg, _I_COLOUR_WHITE _I_VA_ARGS( __VA_ARGS__ ))
#define I_DEBUG_LOG_WARNING(msg, ...) _i_log(stdout, "Debug Warning: ", msg, _I_COLOUR_YELLOW _I_VA_ARGS( __VA_ARGS__ ))
#define I_DEBUG_LOG_ERROR(msg, ...) _i_log(stderr, "Debug Error: ", msg, _I_COLOUR_RED _I_VA_ARGS( __VA_ARGS__ ))
#define I_DEBUG_LOG_FATAL_ERROR(msg, ...) _i_log(stderr, "Debug Fatal Error: ", msg, _I_COLOUR_FATAL_RED _I_VA_ARGS( __VA_ARGS__ ))

#define I_DEBUG_LOG_TRACE(msg, ...) _i_log(stdout, "Debug Trace: ", msg, _I_COLOUR_GREEN, ##__VA_ARGS__)
#define I_DEBUG_LOG_INFO(msg, ...) _i_log(stdout, "Debug Info: ", msg, _I_COLOUR_WHITE, ##__VA_ARGS__)
#define I_DEBUG_LOG_WARNING(msg, ...) _i_log(stdout, "Debug Warning: ", msg, _I_COLOUR_YELLOW, ##__VA_ARGS__)
#define I_DEBUG_LOG_ERROR(msg, ...) _i_log(stderr, "Debug Error: ", msg, _I_COLOUR_RED, ##__VA_ARGS__)
#define I_DEBUG_LOG_FATAL_ERROR(msg, ...) _i_log(stderr, "Debug Fatal Error: ", msg, _I_COLOUR_FATAL_RED, ##__VA_ARGS__)

#define I_DEBUG_FILE_LOG(fileName, msg, mode, ...) _f_i_log(fileName, msg, mode, ##__VA_ARGS__)
#define I_DEBUG_FS_LOG(stream, msg, ...) _i_log(stream, "", msg, 0, ##__VA_ARGS__)
#define I_DEBUG_FILE_LOG(fileName, msg, mode, ...) _f_i_log(fileName, msg, mode _I_VA_ARGS( __VA_ARGS__ ))
#define I_DEBUG_FS_LOG(stream, msg, ...) _i_log(stream, "", msg, 0 _I_VA_ARGS( __VA_ARGS__ ))

#define I_DEBUG_ASSERT_ERROR(condition, msg, ...) \
{ \
Expand All @@ -48,7 +53,7 @@ extern "C" {
const char* prefixMsg = "Debug Error: Assertion Failed On Line: %u\nIn File: %s\n"; \
char* buf = (char*)malloc(strlen(prefixMsg) * sizeof(char) + strlen(__FILE__) * sizeof(char) + sizeof(unsigned int)); \
sprintf(buf, prefixMsg, (unsigned int)(__LINE__), __FILE__); \
_i_log(stderr, buf, msg, _I_COLOUR_RED, ##__VA_ARGS__); \
_i_log(stderr, buf, msg, _I_COLOUR_RED _I_VA_ARGS( __VA_ARGS__ )); \
free(buf); \
__I_DEBUG_BREAK(); \
} \
Expand All @@ -62,7 +67,7 @@ extern "C" {
const char* prefixMsg = "Debug Fatal Error: Assertion Failed On Line: %u\nIn File: %s\n"; \
char* buf = (char*)malloc(strlen(prefixMsg) * sizeof(char) + strlen(__FILE__) * sizeof(char) + sizeof(unsigned int)); \
sprintf(buf, prefixMsg, (unsigned int)(__LINE__), __FILE__); \
_i_log(stderr, buf, msg, _I_COLOUR_FATAL_RED, ##__VA_ARGS__); \
_i_log(stderr, buf, msg, _I_COLOUR_FATAL_RED _I_VA_ARGS( __VA_ARGS__ )); \
free(buf); \
__I_DEBUG_BREAK(); \
} \
Expand All @@ -87,14 +92,14 @@ extern "C" {

#endif

#define I_LOG_TRACE(msg, ...) _i_log(stdout, "Trace: ", msg, _I_COLOUR_GREEN, ##__VA_ARGS__)
#define I_LOG_INFO(msg, ...) _i_log(stdout, "Info: ", msg, _I_COLOUR_WHITE, ##__VA_ARGS__)
#define I_LOG_WARNING(msg, ...) _i_log(stdout, "Warning: ", msg, _I_COLOUR_YELLOW, ##__VA_ARGS__)
#define I_LOG_ERROR(msg, ...) _i_log(stderr, "Error: ", msg, _I_COLOUR_RED, ##__VA_ARGS__)
#define I_LOG_TRACE(msg, ...) _i_log(stdout, "Trace: ", msg, _I_COLOUR_GREEN _I_VA_ARGS( __VA_ARGS__ ))
#define I_LOG_INFO(msg, ...) _i_log(stdout, "Info: ", msg, _I_COLOUR_WHITE _I_VA_ARGS( __VA_ARGS__ ))
#define I_LOG_WARNING(msg, ...) _i_log(stdout, "Warning: ", msg, _I_COLOUR_YELLOW _I_VA_ARGS( __VA_ARGS__ ))
#define I_LOG_ERROR(msg, ...) _i_log(stderr, "Error: ", msg, _I_COLOUR_RED _I_VA_ARGS( __VA_ARGS__ ))
#define I_LOG_FATAL_ERROR(msg, ...) _i_log(stderr, "Fatal Error: ", msg, _I_COLOUR_FATAL_RED, ##__VA_ARGS__)

#define I_FILE_LOG(fileName, msg, mode, ...) _f_i_log(fileName, msg, mode, ##__VA_ARGS__)
#define I_FS_LOG(stream, msg, ...) _i_log(stream, "", msg, 0, ##__VA_ARGS__)
#define I_FILE_LOG(fileName, msg, mode, ...) _f_i_log(fileName, msg, mode _I_VA_ARGS( __VA_ARGS__ ))
#define I_FS_LOG(stream, msg, ...) _i_log(stream, "", msg, 0 _I_VA_ARGS( __VA_ARGS__ ))


#define I_ASSERT_ERROR(condition, msg, ...) \
Expand All @@ -104,7 +109,7 @@ extern "C" {
const char* prefixMsg = "Error: Assertion Failed On Line: %u\nIn File: %s\n"; \
char* buf = (char*)malloc(strlen(prefixMsg) * sizeof(char) + strlen(__FILE__) * sizeof(char) + sizeof(unsigned int)); \
sprintf(buf, prefixMsg, (unsigned int)(__LINE__), __FILE__); \
_i_log(stderr, buf, msg, _I_COLOUR_RED, ##__VA_ARGS__); \
_i_log(stderr, buf, msg, _I_COLOUR_RED _I_VA_ARGS( __VA_ARGS__ )); \
free(buf); \
__I_DEBUG_BREAK(); \
} \
Expand All @@ -118,7 +123,7 @@ extern "C" {
const char* prefixMsg = "Fatal Error: Assertion Failed On Line: %u\nIn File: %s\n"; \
char* buf = (char*)malloc(strlen(prefixMsg) * sizeof(char) + strlen(__FILE__) * sizeof(char) + sizeof(unsigned int)); \
sprintf(buf, prefixMsg, (unsigned int)(__LINE__), __FILE__); \
_i_log(stderr, buf, msg, _I_COLOUR_FATAL_RED, ##__VA_ARGS__); \
_i_log(stderr, buf, msg, _I_COLOUR_FATAL_RED _I_VA_ARGS( __VA_ARGS__ )); \
free(buf); \
__I_DEBUG_BREAK(); \
} \
Expand Down

0 comments on commit de3a09e

Please sign in to comment.