20 #ifndef OMPI_F77_CONSTANTS_H
21 #define OMPI_F77_CONSTANTS_H
23 #include "ompi_config.h"
86 #define DECL(type, upper_case, lower_case, single_u, double_u) \
87 OMPI_DECLSPEC extern type upper_case; \
88 OMPI_DECLSPEC extern type lower_case; \
89 OMPI_DECLSPEC extern type single_u; \
90 OMPI_DECLSPEC extern type double_u
97 DECL(
int, MPI_FORTRAN_BOTTOM, mpi_fortran_bottom,
98 mpi_fortran_bottom_, mpi_fortran_bottom__);
99 DECL(
int, MPI_FORTRAN_IN_PLACE, mpi_fortran_in_place,
100 mpi_fortran_in_place_, mpi_fortran_in_place__);
101 DECL(
char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null,
102 mpi_fortran_argv_null_, mpi_fortran_argv_null__);
103 DECL(
double, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null,
104 mpi_fortran_argvs_null_, mpi_fortran_argvs_null__);
105 DECL(
int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore,
106 mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__);
107 DECL(
int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore,
108 mpi_fortran_status_ignore_, mpi_fortran_status_ignore__);
109 DECL(
double, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
110 mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__);
116 #if OPAL_HAVE_WEAK_SYMBOLS
117 #define OMPI_IS_FORTRAN_BOTTOM(addr) \
118 (addr == (void*) &MPI_FORTRAN_BOTTOM || \
119 addr == (void*) &mpi_fortran_bottom || \
120 addr == (void*) &mpi_fortran_bottom_ || \
121 addr == (void*) &mpi_fortran_bottom__)
122 #define OMPI_IS_FORTRAN_IN_PLACE(addr) \
123 (addr == (void*) &MPI_FORTRAN_IN_PLACE || \
124 addr == (void*) &mpi_fortran_in_place || \
125 addr == (void*) &mpi_fortran_in_place_ || \
126 addr == (void*) &mpi_fortran_in_place__)
127 #define OMPI_IS_FORTRAN_ARGV_NULL(addr) \
128 (addr == (void*) &MPI_FORTRAN_ARGV_NULL || \
129 addr == (void*) &mpi_fortran_argv_null || \
130 addr == (void*) &mpi_fortran_argv_null_ || \
131 addr == (void*) &mpi_fortran_argv_null__)
132 #define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \
133 (addr == (void*) &MPI_FORTRAN_ARGVS_NULL || \
134 addr == (void*) &mpi_fortran_argvs_null || \
135 addr == (void*) &mpi_fortran_argvs_null_ || \
136 addr == (void*) &mpi_fortran_argvs_null__)
137 #define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \
138 (addr == (void*) &MPI_FORTRAN_ERRCODES_IGNORE || \
139 addr == (void*) &mpi_fortran_errcodes_ignore || \
140 addr == (void*) &mpi_fortran_errcodes_ignore_ || \
141 addr == (void*) &mpi_fortran_errcodes_ignore__)
142 #define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \
143 (addr == (void*) &MPI_FORTRAN_STATUS_IGNORE || \
144 addr == (void*) &mpi_fortran_status_ignore || \
145 addr == (void*) &mpi_fortran_status_ignore_ || \
146 addr == (void*) &mpi_fortran_status_ignore__)
147 #define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \
148 (addr == (void*) &MPI_FORTRAN_STATUSES_IGNORE || \
149 addr == (void*) &mpi_fortran_statuses_ignore || \
150 addr == (void*) &mpi_fortran_statuses_ignore_ || \
151 addr == (void*) &mpi_fortran_statuses_ignore__)
154 #define OMPI_IS_FORTRAN_BOTTOM(addr) \
155 (addr == (void*) &MPI_FORTRAN_BOTTOM)
156 #define OMPI_IS_FORTRAN_IN_PLACE(addr) \
157 (addr == (void*) &MPI_FORTRAN_IN_PLACE)
158 #define OMPI_IS_FORTRAN_ARGV_NULL(addr) \
159 (addr == (void*) &MPI_FORTRAN_ARGV_NULL)
160 #define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \
161 (addr == (void*) &MPI_FORTRAN_ARGVS_NULL)
162 #define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \
163 (addr == (void*) &MPI_FORTRAN_ERRCODES_IGNORE)
164 #define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \
165 (addr == (void*) &MPI_FORTRAN_STATUS_IGNORE)
166 #define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \
167 (addr == (void*) &MPI_FORTRAN_STATUSES_IGNORE)
170 #define OMPI_IS_FORTRAN_BOTTOM(addr) \
171 (addr == (void*) &mpi_fortran_bottom)
172 #define OMPI_IS_FORTRAN_IN_PLACE(addr) \
173 (addr == (void*) &mpi_fortran_in_place)
174 #define OMPI_IS_FORTRAN_ARGV_NULL(addr) \
175 (addr == (void*) &mpi_fortran_argv_null)
176 #define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \
177 (addr == (void*) &mpi_fortran_argvs_null)
178 #define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \
179 (addr == (void*) &mpi_fortran_errcodes_ignore)
180 #define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \
181 (addr == (void*) &mpi_fortran_status_ignore)
182 #define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \
183 (addr == (void*) &mpi_fortran_statuses_ignore)
185 #elif OMPI_F77_SINGLE_UNDERSCORE
186 #define OMPI_IS_FORTRAN_BOTTOM(addr) \
187 (addr == (void*) &mpi_fortran_bottom_)
188 #define OMPI_IS_FORTRAN_IN_PLACE(addr) \
189 (addr == (void*) &mpi_fortran_in_place_)
190 #define OMPI_IS_FORTRAN_ARGV_NULL(addr) \
191 (addr == (void*) &mpi_fortran_argv_null_)
192 #define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \
193 (addr == (void*) &mpi_fortran_argvs_null_)
194 #define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \
195 (addr == (void*) &mpi_fortran_errcodes_ignore_)
196 #define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \
197 (addr == (void*) &mpi_fortran_status_ignore_)
198 #define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \
199 (addr == (void*) &mpi_fortran_statuses_ignore_)
202 #define OMPI_IS_FORTRAN_BOTTOM(addr) \
203 (addr == (void*) &mpi_fortran_bottom__)
204 #define OMPI_IS_FORTRAN_IN_PLACE(addr) \
205 (addr == (void*) &mpi_fortran_in_place__)
206 #define OMPI_IS_FORTRAN_ARGV_NULL(addr) \
207 (addr == (void*) &mpi_fortran_argv_null__)
208 #define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \
209 (addr == (void*) &mpi_fortran_argvs_null__)
210 #define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \
211 (addr == (void*) &mpi_fortran_errcodes_ignore__)
212 #define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \
213 (addr == (void*) &mpi_fortran_status_ignore__)
214 #define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \
215 (addr == (void*) &mpi_fortran_statuses_ignore__)
220 #define OMPI_F2C_BOTTOM(addr) (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr))
221 #define OMPI_F2C_IN_PLACE(addr) (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr))