Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

VFNDebug.h

00001 /*
00002 * Part of LibCryst++ : a Crystallographic computing library in C++
00003 *
00004 *  (c) 2000 Vincent FAVRE-NICOLIN
00005 *           Laboratoire de Cristallographie
00006 *           24, quai Ernest-Ansermet, CH-1211 Geneva 4, Switzerland
00007 *  Contact: Vincent.Favre-Nicolin@cryst.unige.ch
00008 *           Radovan.Cerny@cryst.unige.ch
00009 *
00010 */
00011 /*   VFNDebug.h
00012 *  header file for debugging objects & functions
00013 *
00014 */
00015 #ifndef __VFN_DEBUG__H__
00016 #define __VFN_DEBUG__H__
00017 
00018 #ifdef __DEBUG__
00019 
00021 void LibCrystDebugGlobalLevel(const int level);
00022 
00026 void LibCrystDebugLocalLevel(const int level);
00027 
00028 extern int gVFNDebugMessageGlobalLevel;
00029 extern int gVFNDebugMessageLevel;
00030 extern unsigned int gVFNDebugMessageIndent;
00031 
00032 //Debug messages are printed only if __DEBUG__ is on, and if their level
00033 //is greater or equal to debugMessageGlobalLevel
00034 //  0 : messages from low-level routines, 
00035 //  5
00036 // 10 : messages from top LibCryst++ routines 
00037 
00038 #define VFN_DEBUG_MESSAGE(message,level) \
00039    if(level >= gVFNDebugMessageLevel) \
00040    {\
00041       for(unsigned int iii=0;iii<gVFNDebugMessageIndent;iii++) cout <<"  ";\
00042       cout << "%DEBUG:"<< level << "  "\
00043       << message << " (at " << __FILE__ << "," << __LINE__ << ")" <<endl;\
00044    }
00045       
00046 #define VFN_DEBUG_MESSAGE_SHORT(message,level) \
00047    if(level >= gVFNDebugMessageLevel) cout << message;
00048    
00049 #define VFN_DEBUG_ENTRY(message,level) \
00050    if(level >= gVFNDebugMessageLevel) \
00051    {\
00052       for(unsigned int iii=0;iii<gVFNDebugMessageIndent;iii++) cout <<"  ";\
00053       cout << "%DEBUG:"<< level << " <"\
00054       << message << " (at " << __FILE__ << "," << __LINE__ << ")" <<endl;\
00055       gVFNDebugMessageIndent++;\
00056    }
00057 
00058 #define VFN_DEBUG_EXIT(message,level) \
00059     if(level >= gVFNDebugMessageLevel) \
00060    {\
00061       if(gVFNDebugMessageIndent>0) gVFNDebugMessageIndent--;\
00062       for(unsigned int iii=0;iii<gVFNDebugMessageIndent;iii++) cout <<"  ";\
00063       cout << "%DEBUG:"<< level << " \\"\
00064       << message << "> (at " << __FILE__ << "," << __LINE__ << ")" <<endl;\
00065    }
00066 
00067     
00068 #define VFN_DEBUG_GLOBAL_LEVEL(level) gVFNDebugMessageGlobalLevel=level;\
00069    gVFNDebugMessageLevel=gVFNDebugMessageGlobalLevel;
00070    
00071 #define VFN_DEBUG_LOCAL_LEVEL(level) if(level != -1) gVFNDebugMessageLevel=level; else gVFNDebugMessageLevel=gVFNDebugMessageGlobalLevel;
00072 
00073 #else //__DEBUG__
00074 
00075 #define VFN_DEBUG_MESSAGE(level,message)
00076 #define VFN_DEBUG_MESSAGE_SHORT(message,level)
00077 #define VFN_DEBUG_ENTRY(level,message)
00078 #define VFN_DEBUG_EXIT(level,message)
00079 #define VFN_DEBUG_GLOBAL_LEVEL(level)
00080 #define VFN_DEBUG_LOCAL_LEVEL(level)
00081 
00082 
00083 #endif //__DEBUG__
00084 
00085 #endif // __VFN_DEBUG__H__

Generated on Wed Nov 14 19:48:36 2001 for ObjCryst++ by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001