CG  Version 25
fia.h
Go to the documentation of this file.
1 /*
2  * fia.h - fortran interface
3  */
4 
5 
6 #ifndef __FIA_H__
7 #define __FIA_H__
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /* From scstd.h - an attempt to expand the interface to support f90 modules.
14  * Failed - sun mangles module procdure names as procedure.in.module_
15  * The .'s cause the C compiler grief.
16  *
17  * also simplified by using cpp token cating.
18  * (i.e the trailing underscore is not explicit in the macro)
19  */
20 /*--------------------------------------------------------------------------*/
21 
22 /* F90_ID - attempt a uniform naming of FORTRAN 90 functions which
23  * - gets around loader naming conventions
24  * -
25  * - F90_ID(foo_, foo, FOO)(x, y, z)
26  */
27 
28 #if 0
29 /* this is from F77_ID in score */
30 #ifdef ANSI_F90
31 # define F90_ID(x, X) X
32 #endif
33 
34 #ifndef __GNUC__
35 
36 # ifdef AIX
37 # define F90_ID(x, X) x
38 # endif
39 
40 # ifdef HPUX
41 # define F90_ID(x, X) x
42 # endif
43 
44 #endif
45 
46 #ifndef F90_ID
47 # define F90_ID(x, X) x ## _
48 #endif
49 #endif
50 
51 /*--------------------------------------------------------------------------*/
52 
53 #ifdef AIX
54 # define F90_ID(x, X) x
55 # define FCDTOCP(x) ((char *) x)
56 # define CPTOFCD(x, len) (x)
57 # define FCDLENARG(var) ,FIXNUM var
58 # define FCDLENDEF(var, x)
59 # define CPLENARG(var) ,(var)
60 
61 typedef float F90_REAL4;
62 #define F90_REAL4_S "float"
63 
64 typedef double F90_REAL8;
65 #define F90_REAL8_S "double"
66 
67 #define F90_REAL16_S "unknown"
68 
69 typedef float F90_REAL;
70 #define F90_REAL_S "float"
71 
72 typedef signed char F90_INT1;
73 #define F90_INT1_S "signed char"
74 
75 typedef short F90_INT2;
76 #define F90_INT2_S "short"
77 
78 typedef int F90_INT4;
79 #define F90_INT4_S "int"
80 
81 #define F90_INT8_S "unknown"
82 
83 typedef int F90_INTEGER;
84 #define F90_INTEGER_S "int"
85 
86 typedef unsigned int F90_LOGICAL;
87 #define F90_LOGICAL_S "int"
88 
89 typedef struct _s_f90_complex4 {
90  float real;
91  float imag;
92 } F90_COMPLEX4;
93 
94 typedef struct _s_f90_complex4 F90_COMPLEX;
95 /*
96 typedef struct _s_f90_complex4 F90_COMPLEX4;
97 */
98 
99 typedef struct _s_f90_complex8 {
100  double real;
101  double imag;
102 } F90_COMPLEX8;
103 
104 /*
105 typedef struct _s_f90_complex8 F90_COMPLEX8;
106 */
107 #endif
108 
109 /*--------------------------------------------------------------------------*/
110 
111 #ifdef __alpha
112 # define F90_ID(x, X) x ## _
113 # define FCDTOCP(x) ((char *) x)
114 # define CPTOFCD(x, len) (x)
115 # define FCDLENARG(var) ,FIXNUM var
116 # define FCDLENDEF(var, x)
117 # define CPLENARG(var) ,(var)
118 
119 typedef float F90_REAL4;
120 #define F90_REAL4_S "float"
121 
122 typedef double F90_REAL8;
123 #define F90_REAL8_S "double"
124 
125 #define F90_REAL16_S "unknown"
126 
127 typedef float F90_REAL;
128 #define F90_REAL_S "float"
129 
130 typedef signed char F90_INT1;
131 #define F90_INT1_S "signed char"
132 
133 typedef short F90_INT2;
134 #define F90_INT2_S "short"
135 
136 typedef int F90_INT4;
137 #define F90_INT4_S "int"
138 
139 typedef long F90_INT8;
140 #define F90_INT8_S "long"
141 
142 typedef int F90_INTEGER;
143 #define F90_INTEGER_S "int"
144 
145 typedef unsigned F90_LOGICAL;
146 #define F90_LOGICAL_S "int"
147 
148 typedef struct _s_f90_complex4 {
149  float real;
150  float imag;
151 } F90_COMPLEX4;
152 
153 typedef struct _s_f90_complex4 F90_COMPLEX;
154 /*
155 typedef struct _s_f90_complex4 F90_COMPLEX4;
156 */
157 
158 typedef struct _s_f90_complex8 {
159  double real;
160  double imag;
161 } F90_COMPLEX8;
162 
163 /*
164 typedef struct _s_f90_complex8 F90_COMPLEX8;
165 */
166 
167 #endif
168 
169 
170 /*--------------------------------------------------------------------------*/
171 
172 #if defined(__linux) || defined(__APPLE__)
173 # define F90_ID(x, X) x ## _
174 # define FCDTOCP(x) ((char *) x)
175 # define CPTOFCD(x, len) (x)
176 # define FCDLENARG(var) ,FIXNUM var
177 # define FCDLENDEF(var, x)
178 # define CPLENARG(var) ,(var)
179 
180 typedef float F90_REAL4;
181 #define F90_REAL4_S "float"
182 
183 typedef double F90_REAL8;
184 #define F90_REAL8_S "double"
185 
186 #define F90_REAL16_S "unknown"
187 
188 typedef float F90_REAL;
189 #define F90_REAL_S "float"
190 
191 typedef signed char F90_INT1;
192 #define F90_INT1_S "signed char"
193 
194 typedef short F90_INT2;
195 #define F90_INT2_S "short"
196 
197 typedef int F90_INT4;
198 #define F90_INT4_S "int"
199 
200 typedef long F90_INT8;
201 #define F90_INT8_S "long"
202 
203 typedef int F90_INTEGER;
204 #define F90_INTEGER_S "int"
205 
206 typedef unsigned int F90_LOGICAL;
207 #define F90_LOGICAL_S "int"
208 
209 #endif
210 
211 /*--------------------------------------------------------------------------*/
212 
213 #ifdef __sun
214 # define F90_ID(x, X) x ## _
215 # define FCDTOCP(x) ((char *) x)
216 # define CPTOFCD(x, len) (x)
217 # define FCDLENARG(var) ,FIXNUM var
218 # define FCDLENDEF(var, x)
219 # define CPLENARG(var) ,(var)
220 #endif
221 
222 /*--------------------------------------------------------------------------*/
223 
224 #ifdef UNICOS
225 # define F90_ID(x, X) X
226 # define FCDTOCP(x) (_fcdtocp(x))
227 # define CPTOFCD(x, len) (_cptofcd(x, len))
228 # define FCDLENARG(var)
229 # define FCDLENDEF(var, x) FIXNUM var = _fcdlen(x);
230 # define CPLENARG(var)
231 #endif
232 
233 /*--------------------------------------------------------------------------*/
234 #if 0
235 /*--------------------------------------------------------------------------*/
236 
237 /* F90_ID - attempt a uniform naming of FORTRAN 90 functions which
238  * - gets around loader naming conventions
239  * -
240  * - F90_ID(procedure, PROCEDURE)(x, y, z)
241  * - F90_MOD(module, MODULE, procedure, PROCEDURE)(x, y, z)
242  */
243 
244 #ifdef __sun
245 
246 #define F90_ID(x, X) x ## _
247 #define F90_MOD(m, M, x, X) x ## in ## m ## _
248 
249 #endif
250 
251 /*--------------------------------------------------------------------------*/
252 #endif
253 
254 #ifdef __cplusplus
255 }
256 #endif
257 
258 #endif /* __FIA__ */