1 #ifndef MOAB_MPE_H
2 #define MOAB_MPE_H
3 
4 #include "moab/MOABConfig.h"
5 #ifdef MOAB_HAVE_LIBMPE
6 # include "moab_mpi.h"
7 # include "mpe.h"
8 #else
9 
10 /* Define dummy logging functions */
11 
12 /* mpe_misc.h */
13 
14 #define MPE_Seq_begin( A, B ) {if (A || B) {}}
15 
16 #define MPE_Seq_end( A, B ) {if (A || B) {}}
17 
18 #define MPE_DelTag( A, B, C, D ) ( {if (A || B || C || D) {}}, MPI_SUCCESS)
19 #define MPE_GetTags( A, B, C, D ) (A = *C, *D = 0, if (B) {}, MPI_SUCCESS)
20 #define MPE_ReturnTags( A, B, C ) ( {if (A || B || C) {}}, 0)
21 #define MPE_TagsEnd() (MPI_SUCCESS)
22 
23 #define MPE_IO_Stdout_to_file( A, B ) {if (A || B) {}}
24 
25 #define MPE_GetHostName( A, B ) {if (A || B) {}}
26 
27 #define MPI_Start_debugger()
28 
29 /*
30 #if (defined(__STDC__) || defined(__cplusplus))
31 #define  MPE_Errors_to_dbx ( MPI_Comm *, int *, ... );
32 #else
33 void MPE_Errors_to_dbx ( MPI_Comm *, int *, char *, char *, int * );
34 #endif
35 void MPE_Errors_call_debugger ( char *, char *, char ** );
36 void MPE_Errors_call_xdbx     ( char *, char * );
37 void MPE_Errors_call_dbx_in_xterm ( char *, char * );
38 void MPE_Signals_call_debugger ( void );
39 
40 int  MPE_Decomp1d ( int, int, int, int *, int * );
41 
42 void MPE_Comm_global_rank ( MPI_Comm, int, int * );
43 */
44 
45 /* mpe_log.h */
46 
47 #define MPE_LOG_OK                0
48 #define MPE_Log_OK                MPE_LOG_OK
49   /* no problems */
50 #define MPE_LOG_LOCKED_OUT        1
51 #define MPE_Log_LOCKED_OUT        MPE_LOG_LOCKED_OUT
52   /* logs are being worked on, cannot insert any new entries */
53 #define MPE_LOG_NO_MEMORY         2
54 #define MPE_Log_NO_MEMORY         MPE_LOG_NO_MEMORY
55   /* could not allocate memory for logging data */
56 #define MPE_LOG_FILE_PROB         3
57 #define MPE_Log_FILE_PROB         MPE_LOG_FILE_PROB
58   /* cound not open file for writing out the logged info */
59 #define MPE_LOG_NOT_INITIALIZED   4
60 #define MPE_Log_NOT_INITIALIZED   MPE_LOG_NOT_INITIALIZED
61   /* logging not initialized */
62 #define MPE_LOG_PACK_FAIL         5
63 #define MPE_Log_PACK_FAIL         MPE_LOG_PACK_FAIL
64 
65 #define MPE_Init_log() (MPI_SUCCESS)
66 #define MPE_Initialized_logging() 1
67 
68 #define MPE_Describe_state( A, B, C, D ) {if (A || B || C || D) {}}
69 #define MPE_Describe_event( A, B, C ) {if (A || B || C) {}}
70 #define MPE_Log_get_event_number()
71 #define MPE_Log_send( A, B, C ) {if (A || B || C) {}}
72 #define MPE_Log_receive( A, B, C ) {if (A || B || C) {}}
73 #define MPE_Log_event( A, B, C ) {if (A || B || C) {}}
74 #define MPE_Start_log()
75 #define MPE_Stop_log()
76 #define MPE_Finish_log( A ) {if (A) {}}
77 
78 #endif
79 
80 #ifdef __cplusplus
81 
82 namespace moab {
83 
84 class MPEState {
85 private:
86   int sid,eid;
87   bool ok;
88 public:
89   MPEState( const char* name, const char* color = 0 )
sid(MPE_Log_get_event_number ())90     : sid(MPE_Log_get_event_number()),
91       eid(MPE_Log_get_event_number()),
92       ok(true)
93   {
94     MPE_Describe_state( sid, eid, name, color ? color : "yellow" );
95   }
96 
MPEState()97   MPEState( ) : ok(false) {}
valid()98   bool valid() const { return ok; }
99 
100   void start( int data = 0, const char* str = 0 ) {
101     MPE_Log_event( sid, data, str );
102   }
103   void start( const char* str, int data = 0 ) {
104     MPE_Log_event( sid, data, str );
105   }
start(const char * str,const char * str2)106   void start( const char* str, const char* str2 ) {
107     MPE_Log_event( sid, 0, (std::string(str).append(str2)).c_str() );
108   }
109   void end( int data = 0, const char* str = 0 ) {
110     MPE_Log_event( eid, data, str );
111   }
112   void end( const char* str, int data = 0 ) {
113     MPE_Log_event( eid, data, str );
114   }
115 };
116 
117 class MPEEvent {
118 private:
119   int id;
120 public:
121   MPEEvent( const char* name, const char* color = 0 )
id(MPE_Log_get_event_number ())122     : id(MPE_Log_get_event_number())
123   {
124     MPE_Describe_event( id, name, color ? color : "red" );
125   }
126   void log( int data = 0, const char* str = 0 ) {
127     MPE_Log_event( id, data, str );
128   }
129   void log( const char* str, int data = 0 ) {
130     MPE_Log_event( id, data, str );
131   }
132 };
133 
134 } /* namespace moab */
135 
136 #endif /* __cplusplus */
137 
138 #endif /* MOAB_MPE_H */
139