25#if defined(HAVE_MPI_H) && (defined(HAVE_LIBMPI) || defined(HAVE_LIBMPICH))
32#if defined(HAVE_MPI_H) && HAVE_LIBMPE && HAVE_MPI
53static Int p_init(
void);
54static Int p_start(
void);
55static Int p_close(
void);
56static Int p_create_event(
void);
57static Int p_create_state(
void);
58static Int p_log(
void);
75 return (MPE_Init_log() == 0);
82 return (MPE_Start_log() == 0);
89 Term t_str = Deref(ARG1);
93 if (IsVarTerm(t_str)) {
94 Yap_Error(INSTANTIATION_ERROR, t_str,
"mpe_close");
96 }
else if( !IsAtomTerm(t_str) ) {
97 Yap_Error(TYPE_ERROR_ATOM, t_str,
"mpe_close");
100 str = RepAtom(AtomOfTerm(t_str))->StrOfAE;
103 return (MPE_Finish_log(str) == 0);
112 event_id = MPE_Log_get_event_number();
113 return Yap_unify(ARG1, MkIntegerTerm(event_id));
119 Term t_start = Deref(ARG1), t_end = Deref(ARG2),
120 t_descr = Deref(ARG3), t_colour = Deref(ARG4);
121 Int start_id, end_id;
122 char *descr, *colour;
126 if (IsVarTerm(t_start)) {
127 Yap_Error(INSTANTIATION_ERROR, t_start,
"mpe_create_state");
129 }
else if( !IsIntegerTerm(t_start) ) {
130 Yap_Error(TYPE_ERROR_INTEGER, t_start,
"mpe_create_state");
133 start_id = IntOfTerm(t_start);
135 if (IsVarTerm(t_end)) {
136 Yap_Error(INSTANTIATION_ERROR, t_end,
"mpe_create_state");
138 }
else if( !IsIntegerTerm(t_end) ) {
139 Yap_Error(TYPE_ERROR_INTEGER, t_end,
"mpe_create_state");
142 end_id = IntOfTerm(t_end);
146 if (IsVarTerm(t_descr)) {
147 Yap_Error(INSTANTIATION_ERROR, t_descr,
"mpe_create_state");
149 }
else if( !IsAtomTerm(t_descr) ) {
150 Yap_Error(TYPE_ERROR_ATOM, t_descr,
"mpe_create_state");
153 descr = RepAtom(AtomOfTerm(t_descr))->StrOfAE;
155 if (IsVarTerm(t_colour)) {
156 Yap_Error(INSTANTIATION_ERROR, t_colour,
"mpe_create_state");
158 }
else if( !IsAtomTerm(t_colour) ) {
159 Yap_Error(TYPE_ERROR_ATOM, t_colour,
"mpe_create_state");
162 colour = RepAtom(AtomOfTerm(t_colour))->StrOfAE;
165 retv = MPE_Describe_state( (
int)start_id, (
int)end_id, descr, colour );
174 Term t_type = Deref(ARG1), t_num = Deref(ARG2), t_str = Deref(ARG3);
179 if (IsVarTerm(t_type)) {
180 Yap_Error(INSTANTIATION_ERROR, t_type,
"mpe_log");
182 }
else if( !IsIntegerTerm(t_type) ) {
183 Yap_Error(TYPE_ERROR_INTEGER, t_type,
"mpe_log");
186 event_id = IntOfTerm(t_type);
190 if (IsVarTerm(t_num)) {
191 Yap_Error(INSTANTIATION_ERROR, t_num,
"mpe_log");
193 }
else if( !IsIntegerTerm(t_num) ) {
194 Yap_Error(TYPE_ERROR_INTEGER, t_num,
"mpe_log");
197 event = IntOfTerm(t_num);
201 if (IsVarTerm(t_str)) {
202 Yap_Error(INSTANTIATION_ERROR, t_str,
"mpe_log");
204 }
else if( !IsAtomTerm(t_str) ) {
205 Yap_Error(TYPE_ERROR_ATOM, t_str,
"mpe_log");
208 descr = RepAtom(AtomOfTerm(t_str))->StrOfAE;
211 return ( MPE_Log_event((
int)event_id, (
int)event, descr) == 0 );
223 Yap_InitCPred(
"mpe_open", 0, p_init, SafePredFlag );
224 Yap_InitCPred(
"mpe_start", 0, p_start, SafePredFlag );
225 Yap_InitCPred(
"mpe_close", 1, p_close, SafePredFlag );
226 Yap_InitCPred(
"mpe_create_event", 1, p_create_event, SafePredFlag );
227 Yap_InitCPred(
"mpe_create_state", 4, p_create_state, SafePredFlag );
228 Yap_InitCPred(
"mpe_log", 3, p_log, SafePredFlag );