#ifndef SMPIF_H
#define SMPIF_H
-#cmakedefine HAVE_F2C_H @HAVE_SMPI_F2C_H@
+#cmakedefine SMPI_F2C @SMPI_F2C@
-#ifndef HAVE_F2C_H
-#error F2C is mandatory
-#endif
+#ifdef SMPI_F2C
#include <xbt/misc.h>
+#include <smpi/smpi.h>
#include <f2c.h>
+XBT_PUBLIC_DATA(__thread int) smpi_current_rank;
+
XBT_PUBLIC(int) smpi_process_argc(void);
XBT_PUBLIC(int) smpi_process_getarg(integer* index, char* dst, ftnlen len);
-XBT_PUBLIC(int) smpi_global_rank(void);
XBT_PUBLIC(int) smpi_global_size(void);
+#define smpi_sample_local__(pi,pt) \
+ { \
+ if(smpi_sample_1(0, __FILE__, __LINE__, *pi, *pt)) { \
+ smpi_sample_3(0, __FILE__, __LINE__); \
+ } \
+ if(!smpi_sample_2(0, __FILE__, __LINE__)) { \
+ continue; \
+ } \
+ }
+
+#define smpi_sample_global__(pi,pt) \
+ { \
+ if(smpi_sample_1(1, __FILE__, __LINE__, *pi, *pt)) { \
+ smpi_sample_3(1, __FILE__, __LINE__); \
+ } \
+ if(!smpi_sample_2(1, __FILE__, __LINE__)) { \
+ continue; \
+ } \
+ }
+
+
#endif
+
+#endif // SMPI_F2C