mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-31 09:33:06 +00:00
f169def36f
Most of the code dealing with the LogTypes namespace was C which lead to a lot of nonsensical casting, so I have dumbed LOG_TYPE and LOG_LEVEL down to plain C even though the move of wiiuse into Source means we don't currently call GenericLog from C. Set logging threshold to MAX_LOGLEVEL at startup so debug builds will also p rint debugging messages before the GUI is running. For some reason the way we use SetDefaultStyle doesn't play nice with wx 2.9 so we just get the default black text on a black background. Using a gray background works around that problem, but I found it to also be much easier on the eyes so I have switched the background color on all versions. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6528 8ced0084-cf51-0410-be5f-012b33b47a6e
153 lines
3.7 KiB
C
153 lines
3.7 KiB
C
// Copyright (C) 2003 Dolphin Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official SVN repository and contact information can be found at
|
|
// http://code.google.com/p/dolphin-emu/
|
|
|
|
#ifndef _LOG_H_
|
|
#define _LOG_H_
|
|
|
|
enum LOG_TYPE {
|
|
ACTIONREPLAY,
|
|
AUDIO,
|
|
AUDIO_INTERFACE,
|
|
BOOT,
|
|
COMMANDPROCESSOR,
|
|
COMMON,
|
|
CONSOLE,
|
|
DISCIO,
|
|
FILEMON,
|
|
DSPHLE,
|
|
DSPLLE,
|
|
DSP_MAIL,
|
|
DSPINTERFACE,
|
|
DVDINTERFACE,
|
|
DYNA_REC,
|
|
EXPANSIONINTERFACE,
|
|
POWERPC,
|
|
GPFIFO,
|
|
OSHLE,
|
|
MASTER_LOG,
|
|
MEMMAP,
|
|
MEMCARD_MANAGER,
|
|
OSREPORT,
|
|
PAD,
|
|
PROCESSORINTERFACE,
|
|
PIXELENGINE,
|
|
SERIALINTERFACE,
|
|
SP1,
|
|
STREAMINGINTERFACE,
|
|
VIDEO,
|
|
VIDEOINTERFACE,
|
|
WII_IOB,
|
|
WII_IPC,
|
|
WII_IPC_DVD,
|
|
WII_IPC_ES,
|
|
WII_IPC_FILEIO,
|
|
WII_IPC_HLE,
|
|
WII_IPC_NET,
|
|
WII_IPC_SD,
|
|
WII_IPC_STM,
|
|
WII_IPC_WIIMOTE,
|
|
WIIMOTE,
|
|
NETPLAY,
|
|
|
|
NUMBER_OF_LOGS // Must be last
|
|
};
|
|
|
|
enum LOG_LEVEL {
|
|
NOTICE_LEVEL = 1, // VERY important information that is NOT errors. Like startup and OSReports
|
|
ERROR_LEVEL = 2, // Critical errors
|
|
WARNING_LEVEL = 3, // Something is suspicious
|
|
INFO_LEVEL = 4, // General information
|
|
DEBUG_LEVEL = 5, // Detailed debugging - might make things slow
|
|
};
|
|
|
|
extern "C"
|
|
void GenericLog(enum LOG_LEVEL level, enum LOG_TYPE type,
|
|
const char *file, int line, const char *fmt, ...)
|
|
#ifdef __GNUC__
|
|
__attribute__((format(printf, 5, 6)))
|
|
#endif
|
|
;
|
|
|
|
#if defined LOGGING || defined _DEBUG || defined DEBUGFAST
|
|
#define MAX_LOGLEVEL DEBUG_LEVEL
|
|
#else
|
|
#ifndef MAX_LOGLEVEL
|
|
#define MAX_LOGLEVEL WARNING_LEVEL
|
|
#endif // loglevel
|
|
#endif // logging
|
|
|
|
#ifdef GEKKO
|
|
#define GENERIC_LOG(t, v, ...)
|
|
#else
|
|
// Let the compiler optimize this out
|
|
#define GENERIC_LOG(t, v, ...) { \
|
|
if (v <= MAX_LOGLEVEL) \
|
|
GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \
|
|
}
|
|
//#define GENERIC_LOG(t, v, ...) { if (v <= MAX_LOGLEVEL)
|
|
// GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); }
|
|
#endif
|
|
|
|
#define ERROR_LOG(t,...) { GENERIC_LOG(t, ERROR_LEVEL, __VA_ARGS__) }
|
|
#define WARN_LOG(t,...) { GENERIC_LOG(t, WARNING_LEVEL, __VA_ARGS__) }
|
|
#define NOTICE_LOG(t,...) { GENERIC_LOG(t, NOTICE_LEVEL, __VA_ARGS__) }
|
|
#define INFO_LOG(t,...) { GENERIC_LOG(t, INFO_LEVEL, __VA_ARGS__) }
|
|
#define DEBUG_LOG(t,...) { GENERIC_LOG(t, DEBUG_LEVEL, __VA_ARGS__) }
|
|
|
|
#if MAX_LOGLEVEL >= DEBUG_LEVEL
|
|
#define _dbg_assert_(_t_, _a_) \
|
|
if (!(_a_)) {\
|
|
ERROR_LOG(_t_, "Error...\n\n Line: %d\n File: %s\n Time: %s\n\nIgnore and continue?", \
|
|
__LINE__, __FILE__, __TIME__); \
|
|
if (!PanicYesNo("*** Assertion (see log)***\n")) {Crash();} \
|
|
}
|
|
#define _dbg_assert_msg_(_t_, _a_, ...)\
|
|
if (!(_a_)) {\
|
|
ERROR_LOG(_t_, __VA_ARGS__); \
|
|
if (!PanicYesNo(__VA_ARGS__)) {Crash();} \
|
|
}
|
|
#define _dbg_update_() Host_UpdateLogDisplay();
|
|
|
|
#else // not debug
|
|
#define _dbg_update_() ;
|
|
|
|
#ifndef _dbg_assert_
|
|
#define _dbg_assert_(_t_, _a_) {}
|
|
#define _dbg_assert_msg_(_t_, _a_, _desc_, ...) {}
|
|
#endif // dbg_assert
|
|
#endif // MAX_LOGLEVEL DEBUG
|
|
|
|
#define _assert_(_a_) _dbg_assert_(MASTER_LOG, _a_)
|
|
|
|
#ifndef GEKKO
|
|
#ifdef _WIN32
|
|
#define _assert_msg_(_t_, _a_, _fmt_, ...) \
|
|
if (!(_a_)) {\
|
|
if (!PanicYesNo(_fmt_, __VA_ARGS__)) {Crash();} \
|
|
}
|
|
#else // not win32
|
|
#define _assert_msg_(_t_, _a_, _fmt_, ...) \
|
|
if (!(_a_)) {\
|
|
if (!PanicYesNo(_fmt_, ##__VA_ARGS__)) {Crash();} \
|
|
}
|
|
#endif // WIN32
|
|
#else // GEKKO
|
|
#define _assert_msg_(_t_, _a_, _fmt_, ...)
|
|
#endif
|
|
|
|
#endif // _LOG_H_
|