1 //============================================================================= 2 // File : utilities.h 3 // Created : mar jun 19 13:18:14 CEST 2001 4 // Author : Antoine YESSAYAN, Paul RASCLE, EDF 5 // Project : SALOME 6 // Copyright : EDF 2001 7 // $Header$ 8 //============================================================================= 9 10 /* --- Definition macros file to print information if _DEBUG_ is defined --- */ 11 12 # ifndef UTILITIES_H 13 # define UTILITIES_H 14 15 # include <stdlib.h> 16 //# include <iostream> ok for gcc3.01 17 # include <iostream> 18 19 /* --- INFOS is always defined (without _DEBUG_): to be used for warnings, with release version --- */ 20 21 # define HEREWEARE cout<<flush ; cerr << __FILE__ << " [" << __LINE__ << "] : " << flush ; 22 # define INFOS(chain) {HEREWEARE ; cerr << chain << endl ;} 23 # define PYSCRIPT(chain) {cout<<flush ; cerr << "---PYSCRIPT--- " << chain << endl ;} 24 25 /* --- To print date and time of compilation of current source on stdout --- */ 26 27 # if defined ( __GNUC__ ) 28 # define COMPILER "g++" ; 29 # elif defined ( __sun ) 30 # define COMPILER "CC" ; 31 # elif defined ( __KCC ) 32 # define COMPILER "KCC" ; 33 # elif defined ( __PGI ) 34 # define COMPILER "pgCC" ; 35 # else 36 # define COMPILER "undefined" ; 37 # endif 38 39 # ifdef INFOS_COMPILATION 40 # error INFOS_COMPILATION already defined 41 # endif 42 # define INFOS_COMPILATION {\ 43 cerr << flush;\ 44 cout << __FILE__ ;\ 45 cout << " [" << __LINE__ << "] : " ;\ 46 cout << "COMPILED with " << COMPILER ;\ 47 cout << ", " << __DATE__ ; \ 48 cout << " at " << __TIME__ << endl ;\ 49 cout << "\n\n" ;\ 50 cout << flush ;\ 51 } 52 53 # ifdef _DEBUG_ 54 55 /* --- the following MACROS are useful at debug time --- */ 56 57 # define HERE cout<<flush ; cerr << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " << flush ; 58 # define SCRUTE(var) HERE ; cerr << #var << "=" << var << endl ; 59 # define MESSAGE(chain) {HERE ; cerr << chain << endl ;} 60 # define INTERRUPTION(code) HERE ; cerr << "INTERRUPTION return code= " << code << endl ; exit(code) ; 61 62 # ifndef ASSERT 63 # define ASSERT(condition) if (!(condition)){ HERE ; cerr << "CONDITION " << #condition << " NOT VERIFIED"<< endl ; INTERRUPTION(1) ;} 64 # endif /* ASSERT */ 65 66 #define REPERE cout<<flush ; cerr << " --------------" << endl << flush ; 67 #define BEGIN_OF(chain) {REPERE ; HERE ; cerr << "Begin of: " << chain << endl ; REPERE ; } 68 #define END_OF(chain) {REPERE ; HERE ; cerr << "Normal end of: " << chain << endl ; REPERE ; } 69 70 71 72 # else /* ifdef _DEBUG_*/ 73 74 # define HERE 75 # define SCRUTE(var) 76 # define MESSAGE(chain) 77 # define INTERRUPTION(code) 78 79 # ifndef ASSERT 80 # define ASSERT(condition) 81 # endif /* ASSERT */ 82 83 #define REPERE 84 #define BEGIN_OF(chain) 85 #define END_OF(chain) 86 87 88 # endif /* ifdef _DEBUG_*/ 89 90 # endif /* ifndef UTILITIES_H */ 91