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