/* $Id: debug.h 3975 2008-09-15 22:23:44Z rares $ Copyright (C) 2007 by The Regents of the University of California Redistribution of this file is permitted under the terms of the GNU Public License (GPL). Date: 02/28/2008 Author: Rares Vernica */ #ifndef _debug_h_ #define _debug_h_ #ifdef NDEBUG #undef DEBUG #undef DEBUG_L2 #undef DEBUG_TIMER #undef DEBUG_TIMER_FANCY #undef DEBUG_STAT #endif #ifdef DEBUG #define OUTPUT(name, val) std::cerr << (name) << ": " << (val) << std::endl #define OUTPUT_VEC(name, vect, size) \ std::cerr << (name) << ": "; output(std::cerr, (vect), (size)) #else #define OUTPUT(name, val) #define OUTPUT_VEC(name, vect, size) #endif #ifdef DEBUG_L2 #define OUTPUT_L2(name, val) std::cerr << (name) << ": " << (val) << std::endl #define OUTPUT_VEC_L2(name, vect, size) \ std::cerr << (name) << ": "; output(std::cerr, (vect), (size)) #else #define OUTPUT_L2(name, val) #define OUTPUT_VEC_L2(name, vect, size) #endif #ifdef DEBUG_TIMER #ifdef DEBUG_TIMER_FANCY #include #define TIMER_START(str, cnt) boost::progress_display loopTimer(cnt) #define TIMER_STEP() ++loopTimer #define TIMER_STOP() #else #include "looptimer.h" #define TIMER_START(str, cnt) LoopTimer loopTimer; loopTimer.begin(str, cnt) #define TIMER_STEP() loopTimer.next() #define TIMER_STOP() loopTimer.end(); #endif // DEBUG_TIMER_FANCY #else #define TIMER_START(str, cnt) #define TIMER_STEP() #define TIMER_STOP() #endif #ifdef DEBUG_STAT #define STAT_RESET(var) var = 0 #define STAT_INC(var) var++ #define STAT_ADD(var, val) var += val #define STAT_OUTPUT(val1, val2) cout << val1 << ' ' << val2 << std::endl #else #define STAT_RESET(var) #define STAT_INC(var) #define STAT_ADD(var, val) #define STAT_OUTPUT(val1, val2) #endif #endif