| //============================================================================= |
| // 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 */ |