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