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