1//============================================================================= 2// File : utilities.h 3// Created : mar jun 19 13:18:14 CEST 2001 4// Author : Antoine YESSAYAN, Paul RASCLE, EDF 5// Project : SALOME 6// Copyright : EDF 2001 7// $Header$ 8//============================================================================= 9 10/* --- Definition macros file to print information if _DEBUG_ is defined --- */ 11 12# ifndef UTILITIES_H 13# define UTILITIES_H 14 15# include <stdlib.h> 16//# include <iostream> ok for gcc3.01 17# include <iostream> 18 19/* --- INFOS is always defined (without _DEBUG_): to be used for warnings, with release version --- */ 20 21# define HEREWEARE cout<<flush ; cerr << __FILE__ << " [" << __LINE__ << "] : " << flush ; 22# define INFOS(chain) {HEREWEARE ; cerr << chain << endl ;} 23# define PYSCRIPT(chain) {cout<<flush ; cerr << "---PYSCRIPT--- " << chain << endl ;} 24 25/* --- To print date and time of compilation of current source on stdout --- */ 26 27# if defined ( __GNUC__ ) 28# define COMPILER "g++" ; 29# elif defined ( __sun ) 30# define COMPILER "CC" ; 31# elif defined ( __KCC ) 32# define COMPILER "KCC" ; 33# elif defined ( __PGI ) 34# define COMPILER "pgCC" ; 35# else 36# define COMPILER "undefined" ; 37# endif 38 39# ifdef INFOS_COMPILATION 40# error INFOS_COMPILATION already defined 41# endif 42# define INFOS_COMPILATION {\ 43 cerr << flush;\ 44 cout << __FILE__ ;\ 45 cout << " [" << __LINE__ << "] : " ;\ 46 cout << "COMPILED with " << COMPILER ;\ 47 cout << ", " << __DATE__ ; \ 48 cout << " at " << __TIME__ << endl ;\ 49 cout << "\n\n" ;\ 50 cout << flush ;\ 51 } 52 53# ifdef _DEBUG_ 54 55/* --- the following MACROS are useful at debug time --- */ 56 57# define HERE cout<<flush ; cerr << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " << flush ; 58# define SCRUTE(var) HERE ; cerr << #var << "=" << var << endl ; 59# define MESSAGE(chain) {HERE ; cerr << chain << endl ;} 60# define INTERRUPTION(code) HERE ; cerr << "INTERRUPTION return code= " << code << endl ; exit(code) ; 61 62# ifndef ASSERT 63# define ASSERT(condition) if (!(condition)){ HERE ; cerr << "CONDITION " << #condition << " NOT VERIFIED"<< endl ; INTERRUPTION(1) ;} 64# endif /* ASSERT */ 65 66#define REPERE cout<<flush ; cerr << " --------------" << endl << flush ; 67#define BEGIN_OF(chain) {REPERE ; HERE ; cerr << "Begin of: " << chain << endl ; REPERE ; } 68#define END_OF(chain) {REPERE ; HERE ; cerr << "Normal end of: " << chain << endl ; REPERE ; } 69 70 71 72# else /* ifdef _DEBUG_*/ 73 74# define HERE 75# define SCRUTE(var) 76# define MESSAGE(chain) 77# define INTERRUPTION(code) 78 79# ifndef ASSERT 80# define ASSERT(condition) 81# endif /* ASSERT */ 82 83#define REPERE 84#define BEGIN_OF(chain) 85#define END_OF(chain) 86 87 88# endif /* ifdef _DEBUG_*/ 89 90# endif /* ifndef UTILITIES_H */ 91