Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 12, 2008, 4:48:35 AM (16 years ago)
Author:
landauf
Message:

changed COUT(x) macros to use trinary ?: operator instead of if (…) to avoid problems with nested calls like this:

if (true)

COUT(4) << "DEBUG!" << std::endl;

else

COUT(1) << "ERROR!" << std::endl;

This used to return "ERROR!" if the configured debuglevel was < 4 because of the internal structure of the macro, that turned the above code into something like this:

if (true)

if (configured-debuglevel ≥ 4)

std::cout << "DEBUG!" << std::endl;

else

if (configured-debuglevel ≥ 1)

std::cout << "ERROR!" << std::endl;

But with the changed macro it's like this:

if (true)

(configured-debuglevel ≥ 4) ? std::cout : std::cout << "DEBUG!" << std::endl;

else

(configured-debuglevel ≥ 1) ? std::cout : std::cout << "ERROR!" << std::endl;

…and therefore everything works perfectly fine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core3/src/util/Debug.h

    r1586 r1593  
    8787  #if ORX_HARD_DEBUG_LEVEL >= ORX_NONE
    8888   #define COUT0  \
    89     if (getSoftDebugLevel() >= ORX_NONE)  \
    90      COUT_EXEC(0)
     89    (getSoftDebugLevel() < ORX_NONE) ? COUT_EXEC(0) : COUT_EXEC(0)
    9190  #else
    9291   #define COUT0 \
     
    9695  #if ORX_HARD_DEBUG_LEVEL >= ORX_ERROR
    9796   #define COUT1  \
    98     if (getSoftDebugLevel() >= ORX_ERROR)  \
    99      COUT_EXEC(1)
     97    (getSoftDebugLevel() < ORX_ERROR) ? COUT_EXEC(1) : COUT_EXEC(1)
    10098  #else
    10199   #define COUT1 \
     
    105103  #if ORX_HARD_DEBUG_LEVEL >= ORX_WARNING
    106104   #define COUT2 \
    107     if (getSoftDebugLevel() >= ORX_WARNING) \
    108      COUT_EXEC(2)
     105    (getSoftDebugLevel() < ORX_WARNING) ? COUT_EXEC(2) : COUT_EXEC(2)
    109106  #else
    110107   #define COUT2 \
     
    114111  #if ORX_HARD_DEBUG_LEVEL >= ORX_INFO
    115112   #define COUT3 \
    116     if (getSoftDebugLevel() >= ORX_INFO) \
    117      COUT_EXEC(3)
     113    (getSoftDebugLevel() < ORX_INFO) ? COUT_EXEC(3) : COUT_EXEC(3)
    118114  #else
    119115   #define COUT3 \
     
    123119  #if ORX_HARD_DEBUG_LEVEL >= ORX_DEBUG
    124120   #define COUT4 \
    125     if (getSoftDebugLevel() >= ORX_DEBUG) \
    126      COUT_EXEC(4)
     121    (getSoftDebugLevel() < ORX_DEBUG) ? COUT_EXEC(4) : COUT_EXEC(4)
    127122  #else
    128123   #define COUT4 \
     
    132127  #if ORX_HARD_DEBUG_LEVEL >= ORX_VERBOSE
    133128   #define COUT5 \
    134     if (getSoftDebugLevel() >= ORX_VERBOSE) \
    135      COUT_EXEC(5)
     129    (getSoftDebugLevel() < ORX_VERBOSE) ? COUT_EXEC(5) : COUT_EXEC(5)
    136130  #else
    137131   #define COUT5 \
     
    141135  #if ORX_HARD_DEBUG_LEVEL >= ORX_ULTRA
    142136   #define COUT6 \
    143     if (getSoftDebugLevel() >= ORX_ULTRA) \
    144      COUT_EXEC(6)
     137    (getSoftDebugLevel() < ORX_ULTRA) ? COUT_EXEC(6) : COUT_EXEC(6)
    145138  #else
    146139   #define COUT6 \
     
    178171  #if ORX_HARD_DEBUG_LEVEL >= ORX_NONE
    179172   #define CCOUT0  \
    180     if (getSoftDebugLevel() >= ORX_NONE)  \
    181      CCOUT_EXEC(0)
     173    (getSoftDebugLevel() < ORX_NONE) ? COUT_EXEC(0) : CCOUT_EXEC(0)
    182174  #else
    183175   #define CCOUT0 \
    184     false ? CCOUT_EXEC(0) : CCOUT_EXEC(0)
     176    false ? COUT_EXEC(0) : CCOUT_EXEC(0)
    185177  #endif
    186178
    187179  #if ORX_HARD_DEBUG_LEVEL >= ORX_ERROR
    188180   #define CCOUT1  \
    189     if (getSoftDebugLevel() >= ORX_ERROR)  \
    190      CCOUT_EXEC(1)
     181    (getSoftDebugLevel() < ORX_ERROR) ? COUT_EXEC(1) : CCOUT_EXEC(1)
    191182  #else
    192183   #define CCOUT1 \
    193     false ? CCOUT_EXEC(1) : CCOUT_EXEC(1)
     184    false ? COUT_EXEC(1) : CCOUT_EXEC(1)
    194185  #endif
    195186
    196187  #if ORX_HARD_DEBUG_LEVEL >= ORX_WARNING
    197188   #define CCOUT2 \
    198     if (getSoftDebugLevel() >= ORX_WARNING) \
    199      CCOUT_EXEC(2)
     189    (getSoftDebugLevel() < ORX_WARNING) ? COUT_EXEC(2) : CCOUT_EXEC(2)
    200190  #else
    201191   #define CCOUT2 \
    202     false ? CCOUT_EXEC(2) : CCOUT_EXEC(2)
     192    false ? COUT_EXEC(2) : CCOUT_EXEC(2)
    203193  #endif
    204194
    205195  #if ORX_HARD_DEBUG_LEVEL >= ORX_INFO
    206196   #define CCOUT3 \
    207     if (getSoftDebugLevel() >= ORX_INFO) \
    208      CCOUT_EXEC(3)
     197    (getSoftDebugLevel() < ORX_INFO) ? COUT_EXEC(3) : CCOUT_EXEC(3)
    209198  #else
    210199   #define CCOUT3 \
    211     false ? CCOUT_EXEC(3) : CCOUT_EXEC(3)
     200    false ? COUT_EXEC(3) : CCOUT_EXEC(3)
    212201  #endif
    213202
    214203  #if ORX_HARD_DEBUG_LEVEL >= ORX_DEBUG
    215204   #define CCOUT4 \
    216     if (getSoftDebugLevel() >= ORX_DEBUG) \
    217      CCOUT_EXEC(4)
     205    (getSoftDebugLevel() < ORX_DEBUG) ? COUT_EXEC(4) : CCOUT_EXEC(4)
    218206  #else
    219207   #define CCOUT4 \
    220     false ? CCOUT_EXEC(4) : CCOUT_EXEC(4)
     208    false ? COUT_EXEC(4) : CCOUT_EXEC(4)
    221209  #endif
    222210
    223211  #if ORX_HARD_DEBUG_LEVEL >= ORX_VERBOSE
    224212   #define CCOUT5 \
    225     if (getSoftDebugLevel() >= ORX_VERBOSE) \
    226      CCOUT_EXEC(5)
     213    (getSoftDebugLevel() < ORX_VERBOSE) ? COUT_EXEC(5) : CCOUT_EXEC(5)
    227214  #else
    228215   #define CCOUT5 \
    229     false ? CCOUT_EXEC(5) : CCOUT_EXEC(5)
     216    false ? COUT_EXEC(5) : CCOUT_EXEC(5)
    230217  #endif
    231218
    232219  #if ORX_HARD_DEBUG_LEVEL >= ORX_ULTRA
    233220   #define CCOUT6 \
    234     if (getSoftDebugLevel() >= ORX_ULTRA) \
    235      CCOUT_EXEC(6)
     221    (getSoftDebugLevel() < ORX_ULTRA) ? COUT_EXEC(6) : CCOUT_EXEC(6)
    236222  #else
    237223   #define CCOUT6 \
    238     false ? CCOUT_EXEC(6) : CCOUT_EXEC(6)
     224    false ? COUT_EXEC(6) : CCOUT_EXEC(6)
    239225  #endif
    240226
Note: See TracChangeset for help on using the changeset viewer.