@@ -90,3 +90,83 @@ MPI_ABI_static_inline int PMPI_Type_ub(MPI_Datatype MPI_datatype, MPI_Aint *MPI_
90
90
if (MPI_ierr == MPI_SUCCESS && MPI_ub ) * MPI_ub += MPI_lb ;
91
91
return MPI_ierr ;
92
92
}
93
+
94
+ /* C <-> Fortran Handle Conversion */
95
+
96
+ #define MPI_Fint int
97
+
98
+ MPI_ABI_static_inline int MPIX_ABI_Status_c2f (const MPI_Status * c_status , MPI_Fint * f_status )
99
+ {
100
+ int MPI_pos = 0 ;
101
+ enum { MPI_off = 3 , MPI_len = sizeof (c_status -> MPI_internal )/sizeof (MPI_Fint ) };
102
+ f_status [MPI_pos ++ ] = c_status -> MPI_SOURCE ;
103
+ f_status [MPI_pos ++ ] = c_status -> MPI_TAG ;
104
+ f_status [MPI_pos ++ ] = c_status -> MPI_ERROR ;
105
+ for (MPI_pos = 0 ; MPI_pos < MPI_len ; MPI_pos ++ )
106
+ f_status [MPI_off + MPI_pos ] = c_status -> MPI_internal [MPI_pos ];
107
+ return MPI_SUCCESS ;
108
+ }
109
+
110
+ MPI_ABI_static_inline int MPIX_ABI_Status_f2c (const MPI_Fint * f_status , MPI_Status * c_status )
111
+ {
112
+ int MPI_pos = 0 ;
113
+ enum { MPI_off = 3 , MPI_len = sizeof (c_status -> MPI_internal )/sizeof (MPI_Fint ) };
114
+ c_status -> MPI_SOURCE = f_status [MPI_pos ++ ];
115
+ c_status -> MPI_TAG = f_status [MPI_pos ++ ];
116
+ c_status -> MPI_ERROR = f_status [MPI_pos ++ ];
117
+ for (MPI_pos = 0 ; MPI_pos < MPI_len ; MPI_pos ++ )
118
+ c_status -> MPI_internal [MPI_pos ] = f_status [MPI_off + MPI_pos ];
119
+ return MPI_SUCCESS ;
120
+ }
121
+
122
+ #define MPI_Comm_c2f MPI_Comm_toint
123
+ #define MPI_Errhandler_c2f MPI_Errhandler_toint
124
+ #define MPI_File_c2f MPI_File_toint
125
+ #define MPI_Group_c2f MPI_Group_toint
126
+ #define MPI_Info_c2f MPI_Info_toint
127
+ #define MPI_Message_c2f MPI_Message_toint
128
+ #define MPI_Op_c2f MPI_Op_toint
129
+ #define MPI_Request_c2f MPI_Request_toint
130
+ #define MPI_Session_c2f MPI_Session_toint
131
+ #define MPI_Status_c2f MPIX_ABI_Status_c2f
132
+ #define MPI_Type_c2f MPI_Type_toint
133
+ #define MPI_Win_c2f MPI_Win_toint
134
+
135
+ #define MPI_Comm_f2c MPI_Comm_fromint
136
+ #define MPI_Errhandler_f2c MPI_Errhandler_fromint
137
+ #define MPI_File_f2c MPI_File_fromint
138
+ #define MPI_Group_f2c MPI_Group_fromint
139
+ #define MPI_Info_f2c MPI_Info_fromint
140
+ #define MPI_Message_f2c MPI_Message_fromint
141
+ #define MPI_Op_f2c MPI_Op_fromint
142
+ #define MPI_Request_f2c MPI_Request_fromint
143
+ #define MPI_Session_f2c MPI_Session_fromint
144
+ #define MPI_Status_f2c MPIX_ABI_Status_f2c
145
+ #define MPI_Type_f2c MPI_Type_fromint
146
+ #define MPI_Win_f2c MPI_Win_fromint
147
+
148
+ #define PMPI_Comm_c2f PMPI_Comm_toint
149
+ #define PMPI_Errhandler_c2f PMPI_Errhandler_toint
150
+ #define PMPI_File_c2f PMPI_File_toint
151
+ #define PMPI_Group_c2f PMPI_Group_toint
152
+ #define PMPI_Info_c2f PMPI_Info_toint
153
+ #define PMPI_Message_c2f PMPI_Message_toint
154
+ #define PMPI_Op_c2f PMPI_Op_toint
155
+ #define PMPI_Request_c2f PMPI_Request_toint
156
+ #define PMPI_Session_c2f PMPI_Session_toint
157
+ #define PMPI_Status_c2f MPIX_ABI_Status_c2f
158
+ #define PMPI_Type_c2f PMPI_Type_toint
159
+ #define PMPI_Win_c2f PMPI_Win_toint
160
+
161
+ #define PMPI_Comm_f2c PMPI_Comm_fromint
162
+ #define PMPI_Errhandler_f2c PMPI_Errhandler_fromint
163
+ #define PMPI_File_f2c PMPI_File_fromint
164
+ #define PMPI_Group_f2c PMPI_Group_fromint
165
+ #define PMPI_Info_f2c PMPI_Info_fromint
166
+ #define PMPI_Message_f2c PMPI_Message_fromint
167
+ #define PMPI_Op_f2c PMPI_Op_fromint
168
+ #define PMPI_Request_f2c PMPI_Request_fromint
169
+ #define PMPI_Session_f2c PMPI_Session_fromint
170
+ #define PMPI_Status_f2c MPIX_ABI_Status_f2c
171
+ #define PMPI_Type_f2c PMPI_Type_fromint
172
+ #define PMPI_Win_f2c PMPI_Win_fromint
0 commit comments