Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/util/debug.h @ 9861

Last change on this file since 9861 was 9861, checked in by bensch, 18 years ago

Changed the ShellBuffer to DebugBuffer, as the dependency is only one way, and it makes no sense for the rest of Orxonox Modules to know the Shell

File size: 7.3 KB
RevLine 
[4608]1/*
[3395]2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
[4608]16/*!
[5039]17 * @file debug.h
[7374]18 * @briefHandles output to console for different Verbose-Modes.
19 *
20 * There are two main modes HARD and SOFT. HARD is precessed during compileTime where SOFT is for runtime.
21 * @li HARD: One can choose between different modes. see: // DEFINE_MODULES
22 * @li SOFT: If you want each module can have its own variable for processing. just pass it to DEBUG_MODULE_SOFT
23 */
[3601]24
[3204]25#ifndef _DEBUG_H
26#define _DEBUG_H
27
[9860]28#include "defs/confincl.h"
[9861]29#ifndef NO_BUFFER
30#include "debug_buffer.h"
31#endif /* NO_BUFFER */
[3590]32
33#include <stdio.h>
34
35// DEFINE ERROR MODES
[7729]36#define ORX_NONE            0
37#define ORX_ERR             1
38#define ORX_WARN            2
39#define ORX_INFO            3
40#define ORX_DEBUG           4
41#define ORX_vDEBUG          5
[3293]42
[3592]43extern int verbose;
44
[3601]45//definitions
[3592]46#ifndef MODULAR_DEBUG
[7729]47 #define HARD_DEBUG_LEVEL ORX_DEBUG
[5440]48 #define SOFT_DEBUG_LEVEL verbose
[3592]49#else /* MODULAR_DEBUG */
[5440]50 #ifndef DEBUG_MODULE_SOFT
51  #define SOFT_DEBUG_LEVEL verbose
52 #else /* DEBUG_MODULE_SOFT */
53  #define SOFT_DEBUG_LEVEL DEBUG_MODULE_SOFT
54 #endif /* DEBUG_MODULE_SOFT */
[3601]55
[5440]56 #ifndef DEBUG_SPECIAL_MODULE
57  #define HARD_DEBUG_LEVEL DEBUG
58 #else /* DEBUG_SPECIAL_MODULE */
59  ////////////////////
60  // DEFINE MODULES //
61  ////////////////////
62  // FRAMEWORK
63  #define DEBUG_MODULE_BASE                  2
64  #define DEBUG_MODULE_ORXONOX               2
65  #define DEBUG_MODULE_WORLD                 2
66  #define DEBUG_MODULE_NETWORK               2
[5300]67
[5440]68  // LOADING
69  #define DEBUG_MODULE_LOAD                  2
70  #define DEBUG_MODULE_IMPORTER              2
[3591]71
[5440]72  // ENGINES
73  #define DEBUG_MODULE_GRAPHICS              2
[5476]74  #define DEBUG_MODULE_EVENT                 2
[5440]75  #define DEBUG_MODULE_PHYSICS               2
76  #define DEBUG_MODULE_GARBAGE_COLLECTOR     2
77  #define DEBUG_MODULE_OBJECT_MANAGER        2
78  #define DEBUG_MODULE_ANIM                  2
[7711]79  #define DEBUG_MODULE_COLLISION_DETECTION   2
[7819]80  #define DEBUG_MODULE_COLLISION_REACTION    2
[5440]81  #define DEBUG_MODULE_SPATIAL_SEPARATION    2
82  #define DEBUG_MODULE_GUI                   2
[5930]83  #define DEBUG_MODULE_SOUND                 2
[5300]84
[5440]85  // MISC
86  #define DEBUG_MODULE_TRACK_MANAGER         2
87  #define DEBUG_MODULE_MATH                  2
[5300]88
[5440]89  #define DEBUG_MODULE_PNODE                 2
90  #define DEBUG_MODULE_WORLD_ENTITY          2
[5300]91
[6834]92  #define DEBUG_MODULE_STORY_ENTITY          2
[7020]93  #define DEBUG_MODULE_GAME_RULES            2
[6834]94
[5440]95  #define DEBUG_MODULE_WEAPON                2
[3439]96
[5440]97  #define HARD_DEBUG_LEVEL DEBUG_SPECIAL_MODULE
98
99 #endif /* DEBUG_SPECIAL_MODULE */
[3592]100#endif /* MODULAR_DEBUG */
[4373]101
[3293]102///////////////////////////////////////////////////
103/// PRINTF: prints with filename and linenumber ///
104///////////////////////////////////////////////////
[7729]105#define PRINTFORX_NONE    PRINTF0
106#define PRINTFORX_ERR     PRINTF1
107#define PRINTFORX_WARN    PRINTF2
108#define PRINTFORX_INFO    PRINTF3
109#define PRINTFORX_DEBUG   PRINTF4
110#define PRINTFORX_VDEBUG  PRINTF5
[3293]111
[7729]112#if DEBUG_LEVEL <= 3
[5076]113#define PRINTF(x)        PRINT(x)
[5183]114#endif
[5822]115#ifndef NO_SHELL
[9861]116#define PRINT_EXEC       DebugBuffer::addBufferLineStatic
[7161]117#define COUT_EXEC        std::cout
[5822]118#else /* NO_SHELL */
119#define PRINT_EXEC       printf
[7161]120#define COUT_EXEC        std::cout
[5822]121#endif
[5075]122
[5076]123#ifndef PRINTF
[7729]124#ifdef ORX_DEBUG
[3590]125
[3205]126#define PRINTF(x) \
127           PRINTF ## x
128
[7729]129#if HARD_DEBUG_LEVEL >= ORX_ERR
[3205]130#define PRINTF1 \
[7729]131    if (SOFT_DEBUG_LEVEL >= ORX_ERR) \
[8145]132      printf("(EE)::%s:%d:", __FILE__, __LINE__), PRINT_EXEC
[4608]133#else
[8145]134#define PRINTF1 if (ORX_NONE) PRINT_EXEC
[3205]135#endif
[4608]136
[7729]137#if HARD_DEBUG_LEVEL >= ORX_WARN
[3205]138#define PRINTF2 \
[7729]139     if (SOFT_DEBUG_LEVEL >= ORX_WARN) \
[8145]140       printf("(WW)::%s:%d:", __FILE__, __LINE__), PRINT_EXEC
[4608]141
142#else
[8145]143#define PRINTF2 if (ORX_NONE) PRINT_EXEC
[3205]144#endif
[4608]145
[7729]146#if HARD_DEBUG_LEVEL >= ORX_INFO
[3205]147#define PRINTF3 \
[7729]148     if (SOFT_DEBUG_LEVEL >= ORX_INFO) \
[8145]149       printf("(II)::%s:%d:", __FILE__, __LINE__), PRINT_EXEC
[4608]150#else
[8145]151#define PRINTF3 if (ORX_NONE) PRINT_EXEC
[3205]152#endif
[4608]153
[7729]154#if HARD_DEBUG_LEVEL >= ORX_DEBUG
[3205]155#define PRINTF4 \
[7729]156     if (SOFT_DEBUG_LEVEL >= ORX_DEBUG) \
[8145]157       printf("(DD)::%s:%d:", __FILE__, __LINE__), PRINT_EXEC
[4608]158#else
[8145]159#define PRINTF4 if (ORX_NONE) PRINT_EXEC
[3205]160#endif
[4608]161
[7729]162#if HARD_DEBUG_LEVEL >= ORX_vDEBUG
[3548]163#define PRINTF5 \
[7729]164     if (SOFT_DEBUG_LEVEL >= ORX_vDEBUG) \
[8145]165       printf("(VD)::%s:%d:", __FILE__, __LINE__), PRINT_EXEC
[4608]166#else
[8145]167#define PRINTF5 if (ORX_NONE) PRINT_EXEC
[3548]168#endif
[4608]169
170#else
[8282]171#define PRINTF(x) if (ORX_NONE) PRINT_EXEC
[3204]172#endif
173
[3206]174#define PRINTF0 \
[8145]175    printf("%s:%d::", __FILE__, __LINE__), PRINT_EXEC
[5076]176#endif
[3204]177
[3293]178///////////////////////////////////////////////////
179///  PRINT: just prints output as is            ///
180///////////////////////////////////////////////////
[7729]181#define PRINTORX_NONE    PRINT0
182#define PRINTORX_ERR     PRINT1
183#define PRINTORX_WARN    PRINT2
184#define PRINTORX_INFO    PRINT3
185#define PRINTORX_DEBUG   PRINT4
186#define PRINTORX_vDEBUG  PRINT5
[4373]187
[7729]188#ifdef  DEBUG_LEVEL
[3293]189#define PRINT(x) \
[3395]190  PRINT ## x
[3293]191
[7729]192#if HARD_DEBUG_LEVEL >= ORX_ERR
[4608]193#define PRINT1  \
[7729]194  if (SOFT_DEBUG_LEVEL >= ORX_ERR)  \
[5075]195    PRINT_EXEC
[4608]196#else
[8145]197#define PRINT1 if (ORX_NONE) PRINT_EXEC
[3293]198#endif
[3395]199
[7729]200#if HARD_DEBUG_LEVEL >= ORX_WARN
[3293]201#define PRINT2 \
[7729]202  if (SOFT_DEBUG_LEVEL >= ORX_WARN) \
[5075]203    PRINT_EXEC
[3293]204
[4608]205#else
[8145]206#define PRINT2 if (ORX_NONE) PRINT_EXEC
[3293]207#endif
[3395]208
[7729]209#if HARD_DEBUG_LEVEL >= ORX_INFO
[3293]210#define PRINT3 \
[7729]211  if (SOFT_DEBUG_LEVEL >= ORX_INFO) \
[5075]212    PRINT_EXEC
[4608]213#else
[8145]214#define PRINT3 if (ORX_NONE) PRINT_EXEC
[3293]215#endif
[3395]216
[7729]217#if HARD_DEBUG_LEVEL >= ORX_DEBUG
[3293]218#define PRINT4 \
[7729]219  if (SOFT_DEBUG_LEVEL >= ORX_DEBUG) \
[5075]220    PRINT_EXEC
[4608]221#else
[8145]222#define PRINT4 if (ORX_NONE) PRINT_EXEC
[3293]223#endif
[3395]224
[7729]225#if HARD_DEBUG_LEVEL >= ORX_vDEBUG
[3548]226#define PRINT5 \
[7729]227     if (SOFT_DEBUG_LEVEL >= ORX_vDEBUG) \
[5299]228       PRINT_EXEC
[4608]229#else
[8145]230#define PRINT5 if (ORX_NONE) PRINT_EXEC
[3548]231#endif
[3395]232
[3548]233
[4608]234#else
[8282]235#define PRINT(x) if (ORX_NONE) PRINT_EXEC
[3293]236#endif
237
238#define PRINT0 \
[5075]239  PRINT_EXEC
[3293]240
[7161]241
242
243////////////////////////////////////////////////////////
244///  COUT: just prints output as is with std::cout   ///
245////////////////////////////////////////////////////////
[7729]246#define COUTORX_NONE    COUT0
247#define COUTORX_ERR     COUT1
248#define COUTORX_WARN    COUT2
249#define COUTORX_INFO    COUT3
250#define COUTORX_DEBUG   COUT4
251#define COUTORX_vDEBUG  COUT5
[7161]252
[7729]253#ifdef  DEBUG_LEVEL
[7161]254#define COUT(x) \
255  COUT ## x
256
[7729]257#if HARD_DEBUG_LEVEL >= ORX_ERR
[7161]258#define COUT1  \
[7729]259  if (SOFT_DEBUG_LEVEL >= ORX_ERR)  \
[7161]260    COUT_EXEC
261#else
[7729]262#define COUT1 if (ORX_NONE)\
[7161]263    COUT_EXEC
264#endif
265
[7729]266#if HARD_DEBUG_LEVEL >= ORX_WARN
[7161]267#define COUT2 \
[7729]268  if (SOFT_DEBUG_LEVEL >= ORX_WARN) \
[7161]269    COUT_EXEC
270
271#else
[7729]272#define COUT2 if (ORX_NONE) \
[7161]273    COUT_EXEC
274#endif
275
[7729]276#if HARD_DEBUG_LEVEL >= ORX_INFO
[7161]277#define COUT3 \
[7729]278  if (SOFT_DEBUG_LEVEL >= ORX_INFO) \
[7161]279    COUT_EXEC
280#else
[7729]281#define COUT3 if (ORX_NONE) \
[7161]282    COUT_EXEC
283#endif
284
[7729]285#if HARD_DEBUG_LEVEL >= ORX_DEBUG
[7161]286#define COUT4 \
[7729]287  if (SOFT_DEBUG_LEVEL >= ORX_DEBUG) \
[7161]288    COUT_EXEC
289#else
[7729]290#define COUT4 if (ORX_NONE) \
[7161]291    COUT_EXEC
292#endif
293
[7729]294#if HARD_DEBUG_LEVEL >= ORX_vDEBUG
[7161]295#define COUT5 \
[7729]296     if (SOFT_DEBUG_LEVEL >= ORX_vDEBUG) \
[7161]297       COUT_EXEC
298#else
[7729]299#define COUT5 if (ORX_NONE) \
[7161]300    COUT_EXEC
301#endif
302
303
304#else
[7729]305#define COUT(x) if (ORX_NONE) \
[7161]306    COUT_EXEC
307#endif
308
309#define COUT0 \
310  COUT_EXEC
311
312
[3204]313#endif /* _DEBUG_H */
Note: See TracBrowser for help on using the repository browser.