#ifndef SMPIF_H
#define SMPIF_H
-#cmakedefine HAVE_SMPI_F2C_H @HAVE_SMPI_F2C_H@
+#cmakedefine HAVE_F2C_H @HAVE_SMPI_F2C_H@
-#ifdef HAVE_SMPI_F2C_H
- #undef min //Need because first def in xbt.h
- #undef max //Need because first def in xbt.h
- #include <f2c.h>
+#ifndef HAVE_F2C_H
+#error F2C is mandatory
#endif
#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(int* index, char* dst, size_t len);
-XBT_PUBLIC(int) smpi_global_rank(void);
+XBT_PUBLIC(int) smpi_process_getarg(integer* index, char* dst, ftnlen len);
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