1 /***************************************************************************
2                           debug  -  description
3                              -------------------
4     begin                : Sun Aug 8 2004
5     copyright            : (C) 2004, 2006, 2017 by Thomas Friedrichsmeier
6     email                : thomas.friedrichsmeier@kdemail.net
7  ***************************************************************************/
8 
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17 
18 #define RKWARD_DEBUG
19 
20 void RKDebug (int flags, int level, const char *fmt, ...);
21 
22 // Debug-levels
23 #define DL_TRACE 0
24 #define DL_DEBUG 1
25 #define DL_INFO 2
26 #define DL_WARNING 3
27 #define DL_ERROR 4
28 #define DL_FATAL 5
29 
30 // Debug components
31 #define APP 1
32 #define PLUGIN 1 << 1
33 #define OBJECTS 1 << 2
34 #define EDITOR 1 << 3
35 #define SETTINGS 1 << 4
36 #define PHP 1 << 5
37 #define RBACKEND 1 << 6
38 #define COMMANDEDITOR 1 << 7
39 #define MISC 1 << 8
40 #define DIALOGS 1 << 9
41 #define OUTPUT 1 << 10
42 #define XML 1 << 11
43 #define GRAPHICS_DEVICE 1 << 12
44 #define DEBUG_ALL (APP | PLUGIN | PHP | OBJECTS | EDITOR | RBACKEND | COMMANDEDITOR | MISC | DIALOGS | OUTPUT | XML | GRAPHICS_DEVICE)
45 
46 #ifdef RKWARD_DEBUG
47 // Debug functions
48 #	define RK_DO(expr,flags,level) if ((flags & RK_Debug::RK_Debug_Flags) && (level >= RK_Debug::RK_Debug_Level)) { expr; }
49 #	define RK_DEBUG(flags,level,...) { if ((flags & RK_Debug::RK_Debug_Flags) && (level >= RK_Debug::RK_Debug_Level)) RKDebug (flags,level,__VA_ARGS__); }
50 #	define RK_ASSERT(x) if (!(x)) RK_DEBUG (DEBUG_ALL, DL_FATAL, "Assert '%s' failed at %s - function %s line %d", #x, __FILE__, __FUNCTION__, __LINE__);
51 #	ifndef RKWARD_NO_TRACE
52 #		define RK_TRACE(flags) RK_DEBUG (flags, DL_TRACE, "Trace: %s - function %s line %d", __FILE__, __FUNCTION__, __LINE__);
53 #	else
54 #		define RK_TRACE(flags)
55 #	endif
56 #else
57 #	define RK_DO(expr,flags,level)
58 #	define RK_DEBUG(flags,level,fmt,...)
59 #	define RK_ASSERT(x)
60 #	define RK_TRACE(flags)
61 #endif
62 
63 class QFile;
64 namespace RK_Debug {
65 	extern int RK_Debug_Level;
66 	extern int RK_Debug_Flags;
67 	extern int RK_Debug_CommandStep;
68 	bool setupLogFile (const QString &basename);
69 	extern QFile* debug_file;
70 };
71