Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
generalize previous change to other MPI predefined globals.
[simgrid.git] / include / smpi / smpi.h
index da78005..d9dfe7d 100644 (file)
@@ -402,27 +402,45 @@ typedef void MPI_User_function(void *invec, void *inoutvec, int *len, MPI_Dataty
 typedef SMPI_Op *MPI_Op;
 
 #define MPI_OP_NULL ((MPI_Op)NULL)
-XBT_PUBLIC_DATA MPI_Op MPI_MAX;
-XBT_PUBLIC_DATA MPI_Op MPI_MIN;
-XBT_PUBLIC_DATA MPI_Op MPI_MAXLOC;
-XBT_PUBLIC_DATA MPI_Op MPI_MINLOC;
-XBT_PUBLIC_DATA MPI_Op MPI_SUM;
-XBT_PUBLIC_DATA MPI_Op MPI_PROD;
-XBT_PUBLIC_DATA MPI_Op MPI_LAND;
-XBT_PUBLIC_DATA MPI_Op MPI_LOR;
-XBT_PUBLIC_DATA MPI_Op MPI_LXOR;
-XBT_PUBLIC_DATA MPI_Op MPI_BAND;
-XBT_PUBLIC_DATA MPI_Op MPI_BOR;
-XBT_PUBLIC_DATA MPI_Op MPI_BXOR;
+extern SMPI_Op smpi_MPI_MAX;
+extern SMPI_Op smpi_MPI_MIN;
+extern SMPI_Op smpi_MPI_MAXLOC;
+extern SMPI_Op smpi_MPI_MINLOC;
+extern SMPI_Op smpi_MPI_SUM;
+extern SMPI_Op smpi_MPI_PROD;
+extern SMPI_Op smpi_MPI_LAND;
+extern SMPI_Op smpi_MPI_LOR;
+extern SMPI_Op smpi_MPI_LXOR;
+extern SMPI_Op smpi_MPI_BAND;
+extern SMPI_Op smpi_MPI_BOR;
+extern SMPI_Op smpi_MPI_BXOR;
+extern SMPI_Op smpi_MPI_REPLACE;
+extern SMPI_Op smpi_MPI_NO_OP;
+
+#define MPI_MAX SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MAX)
+#define MPI_MIN SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MIN)
+#define MPI_MAXLOC SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MAXLOC)
+#define MPI_MINLOC SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MINLOC)
+#define MPI_SUM SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_SUM)
+#define MPI_PROD SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_PROD)
+#define MPI_LAND SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LAND)
+#define MPI_LOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LOR)
+#define MPI_LXOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LXOR)
+#define MPI_BAND SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BAND)
+#define MPI_BOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BOR)
+#define MPI_BXOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BXOR)
+
 //For accumulate
-XBT_PUBLIC_DATA MPI_Op MPI_REPLACE;
-XBT_PUBLIC_DATA MPI_Op MPI_NO_OP;
+#define MPI_REPLACE SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_REPLACE)
+#define MPI_NO_OP SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_NO_OP)
+
 
 typedef SMPI_Group* MPI_Group;
 
-#define MPI_GROUP_NULL ((MPI_Group)NULL)
+extern SMPI_Group smpi_MPI_GROUP_EMPTY;
+#define MPI_GROUP_EMPTY SMPI_PREDEFINED_POINTER(MPI_Group, smpi_MPI_GROUP_EMPTY)
 
-XBT_PUBLIC_DATA MPI_Group MPI_GROUP_EMPTY;
+#define MPI_GROUP_NULL ((MPI_Group)NULL)
 
 typedef SMPI_Comm* MPI_Comm;
 
@@ -438,8 +456,10 @@ typedef SMPI_Request* MPI_Request;
 
 typedef SMPI_Errhandler* MPI_Errhandler;
 #define MPI_ERRHANDLER_NULL ((MPI_Errhandler)NULL)
-XBT_PUBLIC_DATA MPI_Errhandler MPI_ERRORS_RETURN;
-XBT_PUBLIC_DATA MPI_Errhandler MPI_ERRORS_ARE_FATAL;
+extern SMPI_Errhandler smpi_MPI_ERRORS_RETURN;
+#define MPI_ERRORS_RETURN SMPI_PREDEFINED_POINTER(MPI_Errhandler, smpi_MPI_ERRORS_RETURN)
+extern SMPI_Errhandler smpi_MPI_ERRORS_ARE_FATAL;
+#define MPI_ERRORS_ARE_FATAL SMPI_PREDEFINED_POINTER(MPI_Errhandler, smpi_MPI_ERRORS_ARE_FATAL)
 
 typedef enum SMPI_Combiner_enum{
   MPI_COMBINER_NAMED,