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