@@ -90,3 +90,83 @@ MPI_ABI_static_inline int PMPI_Type_ub(MPI_Datatype MPI_datatype, MPI_Aint *MPI_
9090 if (MPI_ierr == MPI_SUCCESS && MPI_ub ) * MPI_ub += MPI_lb ;
9191 return MPI_ierr ;
9292}
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