3 # include <utilities.h>
\r
7 #ifndef __MEDMEM_UTILITIES
\r
8 #define __MEDMEM_UTILITIES
\r
11 # include <iostream>
\r
12 using namespace std;
\r
14 /* --- INFOS is always defined (without _DEBUG_): to be used for warnings, with release version --- */
\r
16 # define HEREWEARE {cout<<flush ; cerr << __FILE__ << " [" << __LINE__ << "] : " << flush ;}
\r
17 # define INFOS(chain) {HEREWEARE ; cerr << chain << endl ;}
\r
18 # define PYSCRIPT(chain) {cout<<flush ; cerr << "---PYSCRIPT--- " << chain << endl ;}
\r
21 /* --- To print date and time of compilation of current source on stdout --- */
\r
23 # if defined ( __GNUC__ )
\r
24 # define COMPILER "g++" ;
\r
25 # elif defined ( __sun )
\r
26 # define COMPILER "CC" ;
\r
27 # elif defined ( __KCC )
\r
28 # define COMPILER "KCC" ;
\r
29 # elif defined ( __PGI )
\r
30 # define COMPILER "pgCC" ;
\r
32 # define COMPILER "undefined" ;
\r
35 # ifdef INFOS_COMPILATION
\r
36 # undef INFOS_COMPILATION
\r
38 # define INFOS_COMPILATION {\
\r
41 cout << " [" << __LINE__ << "] : " ;\
\r
42 cout << "COMPILED with " << COMPILER ;\
\r
43 cout << ", " << __DATE__ ; \
\r
44 cout << " at " << __TIME__ << endl ;\
\r
51 /* --- the following MACROS are useful at debug time --- */
\r
53 # define HERE {cout<<flush ; cerr << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " << flush ;}
\r
54 # define SCRUTE(var) {HERE ; cerr << #var << "=" << var << endl ;}
\r
55 # define MESSAGE(chain) {HERE ; cerr << chain << endl ;}
\r
56 # define INTERRUPTION(code) {HERE ; cerr << "INTERRUPTION return code= " << code << endl ; exit(code) ;}
\r
59 # define ASSERT(condition) if (!(condition)){ HERE ; cerr << "CONDITION " << #condition << " NOT VERIFIED"<< endl ; INTERRUPTION(1) ;}
\r
60 # endif /* ASSERT */
\r
62 #define REPERE {cout<<flush ; cerr << " --------------" << endl << flush ;}
\r
63 #define BEGIN_OF(chain) {REPERE ; HERE ; cerr << "Begin of: " << chain << endl ; REPERE ; }
\r
64 #define END_OF(chain) {REPERE ; HERE ; cerr << "Normal end of: " << chain << endl ; REPERE ; }
\r
68 # else /* ifdef _DEBUG_*/
\r
71 # define SCRUTE(var) {}
\r
72 # define MESSAGE(chain) {}
\r
73 # define INTERRUPTION(code) {}
\r
76 # define ASSERT(condition) {}
\r
77 # endif /* ASSERT */
\r
80 #define BEGIN_OF(chain) {}
\r
81 #define END_OF(chain) {}
\r