//============================================================================= // File : utilities.h // Created : mar jun 19 13:18:14 CEST 2001 // Author : Antoine YESSAYAN, Paul RASCLE, EDF // Project : SALOME // Copyright : EDF 2001 // $Header$ //============================================================================= /* --- Definition macros file to print information if _DEBUG_ is defined --- */ #ifndef UTILITIES_H #define UTILITIES_H #include // # include ok for gcc3.01 #include /* --- INFOS is always defined (without _DEBUG_): to be used for warnings, with release version --- */ #define HEREWEARE \ cout << flush; \ cerr << __FILE__ << " [" << __LINE__ << "] : " << flush; #define INFOS(chain) \ { \ HEREWEARE; \ cerr << chain << endl; \ } #define PYSCRIPT(chain) \ { \ cout << flush; \ cerr << "---PYSCRIPT--- " << chain << endl; \ } /* --- To print date and time of compilation of current source on stdout --- */ #if defined(__GNUC__) #define COMPILER "g++"; #elif defined(__sun) #define COMPILER "CC"; #elif defined(__KCC) #define COMPILER "KCC"; #elif defined(__PGI) #define COMPILER "pgCC"; #else #define COMPILER "undefined"; #endif #ifdef INFOS_COMPILATION #error INFOS_COMPILATION already defined #endif #define INFOS_COMPILATION \ { \ cerr << flush; \ cout << __FILE__; \ cout << " [" << __LINE__ << "] : "; \ cout << "COMPILED with " << COMPILER; \ cout << ", " << __DATE__; \ cout << " at " << __TIME__ << endl; \ cout << "\n\n"; \ cout << flush; \ } #ifdef _DEBUG_ /* --- the following MACROS are useful at debug time --- */ #define HERE \ cout << flush; \ cerr << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " << flush; #define SCRUTE(var) \ HERE; \ cerr << #var << "=" << var << endl; #define MESSAGE(chain) \ { \ HERE; \ cerr << chain << endl; \ } #define INTERRUPTION(code) \ HERE; \ cerr << "INTERRUPTION return code= " << code << endl; \ exit(code); #ifndef ASSERT #define ASSERT(condition) \ if (!(condition)) { \ HERE; \ cerr << "CONDITION " << #condition << " NOT VERIFIED" << endl; \ INTERRUPTION(1); \ } #endif /* ASSERT */ #define REPERE \ cout << flush; \ cerr << " --------------" << endl << flush; #define BEGIN_OF(chain) \ { \ REPERE; \ HERE; \ cerr << "Begin of: " << chain << endl; \ REPERE; \ } #define END_OF(chain) \ { \ REPERE; \ HERE; \ cerr << "Normal end of: " << chain << endl; \ REPERE; \ } #else /* ifdef _DEBUG_*/ #define HERE #define SCRUTE(var) #define MESSAGE(chain) #define INTERRUPTION(code) #ifndef ASSERT #define ASSERT(condition) #endif /* ASSERT */ #define REPERE #define BEGIN_OF(chain) #define END_OF(chain) #endif /* ifdef _DEBUG_*/ #endif /* ifndef UTILITIES_H */