| //============================================================================= |
| // 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 <stdlib.h> |
| //# include <iostream> ok for gcc3.01 |
| # include <iostream> |
| |
| /* --- 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 */ |