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