00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00020 #ifndef __logEvent_H
00021 #define __logEvent_H
00022
00023 #ifdef __GNUC__
00024 #pragma interface
00025 #endif
00026
00027 #if defined(USING_MPI) && defined(DEBUGGING) && defined(MPE)
00028
00029 #include "paramTable.h"
00030
00031 #include <values.h>
00032 #include "mpi.h"
00033 #include "mpe.h"
00034
00035
00036 class logEvent
00037 {
00038 public:
00039
00041 CLASS_PARAMETER(eventLog);
00042
00044 enum { undefinedState = -MAXINT };
00045
00047 static void init() { MPE_Init_log(); };
00048
00054 static void open();
00055
00060 static void close();
00061
00067 static int defineState(const char* description,const char* color);
00068
00070 static void log_start(int stateNumber) { event(stateNumber*2); };
00072 static void log_end(int stateNumber) { event(stateNumber*2 + 1); };
00073
00075 static void log_point(int stateNumber)
00076 {
00077 log_start(stateNumber);
00078 log_end(stateNumber);
00079 };
00080
00081 private:
00082
00084 static void event(int eventNumber)
00085 {
00086 MPE_Log_event(eventNumber,0,(char *) "");
00087 };
00088
00090 static int numberOfStates;
00091
00092 };
00093
00094
00096 #define IF_LOGGING_COMPILED(arbitraryCode) arbitraryCode
00097
00099 #define IF_LOGGING_EVENTS(level,action) \
00100 if (logEvent::eventLog() >= level) action
00101
00103 #define LOG_EVENT(level,how,state) \
00104 IF_LOGGING_EVENTS(level,logEvent::log_##how(state);)
00105
00107 #define LOG_EVENT_CONDITIONAL(level,cond,how,state) \
00108 IF_LOGGING_EVENTS(level,if (cond) logEvent::log_##how(state);)
00109
00111 #define EVENT_LOGGING_PRESENT 1
00112
00113
00114 #else
00115
00116
00117 #define IF_LOGGING_COMPILED(arbitraryCode)
00118 #define IF_LOGGING_EVENTS(level,action)
00119 #define LOG_EVENT(level,how,state)
00120 #define LOG_EVENT_CONDITIONAL(level,cond,how,state)
00121 #undef EVENT_LOGGING_PRESENT
00122
00123
00124 #endif
00125
00126
00127 #endif