gpp4
1.3.1
src
ccp4_fortran.h
Go to the documentation of this file.
1
/*
2
ccp4_fortran.h: header file for Fortran APIs
3
Copyright (C) 2001 Eugene Krissinel
4
Copyright (C) 2007 Morten Kjeldgaard
5
6
This library is free software: you can redistribute it and/or
7
modify it under the terms of the GNU Lesser General Public
8
License as published by the Free Software Foundation, either
9
version 3 of the License, or (at your option) any later version.
10
11
This library is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
Lesser General Public License for more details.
15
16
You should have received a copy of the GNU Lesser General Public
17
License along with This library. If not, see
18
<http://www.gnu.org/licenses/>.
19
20
*/
21
30
#ifndef __CCP4_FORTRAN
31
#define __CCP4_FORTRAN
32
33
#include "
ccp4_types.h
"
34
35
/* stardent is now obsolete, but we retain this category in case it is useful later */
36
#ifdef CALL_LIKE_STARDENT
37
/* SStrParam is used in Ardent-like machines' fortran calls */
38
/* for passing a string parameter */
39
DefineStructure(SStrPar)
40
struct
SStrPar {
41
pstr S;
42
int
len;
43
int
id;
44
};
45
#endif
46
47
#define _LVTOB(l) ((long) ((l) == 0 ? 0 : 1))
48
#define _BTOLV(l) ((int) ((l) == 0 ? 0 : 1))
49
#if defined (__OSF1__) || defined (__osf__)
50
#undef _BTOLV
51
#define _BTOLV(l) ((int) ((l) == 0 ? 0 : -1))
52
#endif
53
174
#if defined(CALL_LIKE_SUN)
175
176
typedef
pstr
fpstr
;
177
178
#define FTN_STR(s) s
179
#define FTN_LEN(s) s##_len
180
181
#define char_struct(s) \
182
pstr s; \
183
int s##_len;
184
#define fill_char_struct(s,str) \
185
s = str; \
186
s##_len = strlen(str);
187
#define init_char_struct(s,str,size) \
188
s = str; \
189
s##_len = size;
190
191
#define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
192
void name##_ p_sun
193
#define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
194
name##_ p_sun
195
#define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
196
val name##_ p_sun
197
#elif defined(CALL_LIKE_HPUX)
198
199
typedef
pstr
fpstr
;
200
201
# define FTN_STR(s) s
202
# define FTN_LEN(s) s##_len
203
204
# define char_struct(s) \
205
pstr s; \
206
int s##_len;
207
# define fill_char_struct(s,str) \
208
s = str; \
209
s##_len = strlen(str);
210
# define init_char_struct(s,str,size) \
211
s = str; \
212
s##_len = size;
213
214
# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
215
void name p_sun
216
# define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
217
name p_sun
218
# define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
219
val name p_sun
220
#elif defined(CALL_LIKE_STARDENT)
221
222
typedef
PStrPar
fpstr
;
223
224
# define FTN_STR(s) s->Str_pointer
225
# define FTN_LEN(s) s->Str_length
226
227
# define char_struct(s) \
228
SStrPar s;
229
# define fill_char_struct(s,str) \
230
s.S = str; \
231
s.len = strlen(FName); \
232
s.id = 0;
233
# define init_char_struct(s,str,size) \
234
s.S = str; \
235
s.len = size; \
236
s.id = 0;
237
238
# define FORTRAN_SUBR(NAME,name,p_send,p_sstruct,p_sflw) \
239
void NAME p_stardent
240
# define FORTRAN_CALL(NAME,name,p_send,p_sstruct,p_sflw) \
241
NAME p_stardent
242
# define FORTRAN_FUN(val,NAME,name,p_send,p_sstruct,p_sflw) \
243
val NAME p_stardent
244
245
#elif defined(CALL_LIKE_VMS)
246
247
typedef
dsc$descriptor_s *
fpstr
;
248
249
# define FTN_STR(s) s->dsc$a_pointer;
250
# define FTN_LEN(s) s->dsc$w_length;
251
252
# define char_struct(s) \
253
dsc$descriptor_s s;
254
# define fill_char_struct(s,str) \
255
s.dsc$a_pointer = str; \
256
s.dsc$w_length = strlen(str); \
257
s.dsc$b_dtype = DSC$K_DTYPE_T; \
258
s.dsc$b_class = DSC$K_CLASS_S;
259
# define init_char_struct(s,str,size) \
260
s.dsc$a_pointer = str; \
261
s.dsc$w_length = size; \
262
s.dsc$b_dtype = DSC$K_DTYPE_T; \
263
s.dsc$b_class = DSC$K_CLASS_S;
264
265
# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
266
void NAME p_stardent
267
# define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
268
NAME p_stardent
269
# define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
270
val NAME p_stardent
271
272
#elif defined(CALL_LIKE_MVS)
273
274
#if (CALL_LIKE_MVS == 2)
275
276
typedef
pstr
fpstr
;
277
278
#define FTN_STR(s) s
279
#define FTN_LEN(s) s##_len
280
281
#define char_struct(s) \
282
pstr s; \
283
int s##_len;
284
#define fill_char_struct(s,str) \
285
s = str; \
286
s##_len = strlen(str);
287
#define init_char_struct(s,str,size) \
288
s = str; \
289
s##_len = size;
290
291
#define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
292
void NAME p_sun
293
#define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
294
NAME p_sun
295
#define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
296
val NAME p_sun
297
298
#else
299
300
typedef
pstr
fpstr
;
301
302
# define FTN_STR(s) s
303
# define FTN_LEN(s) s##_len
304
305
# define char_struct(s) \
306
pstr s; \
307
int s##_len;
308
# define fill_char_struct(s,str) \
309
s = str; \
310
s##_len = strlen(str);
311
# define init_char_struct(s,str,size) \
312
s = str; \
313
s##_len = size;
314
315
# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
316
void __stdcall NAME p_mvs
317
# define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
318
NAME p_mvs
319
# define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
320
val __stdcall NAME p_mvs
321
322
# endif
323
324
#else
325
326
# error Unknown machine!!!
327
328
typedef
pstr
fpstr
;
329
330
# define FTN_STR(s) s
331
# define FTN_LEN(s) s##_len
332
333
# define char_struct(s) \
334
pstr s; \
335
int s##_len;
336
# define fill_char_struct(s,str) \
337
s = str; \
338
s##_len = strlen(str);
339
# define init_char_struct(s,str,size) \
340
s = str; \
341
s##_len = size;
342
351
# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
352
void name##_ p_sun
353
361
# define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
362
name##_ p_sun
363
373
# define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
374
val name##_ p_sun
375
376
#endif
377
378
/* Define Fortran logical */
379
typedef
unsigned
int
ftn_logical;
380
#if defined (KNOWN_MACHINE)
381
# define FORTRAN_LOGICAL_TRUE 1
382
# define FORTRAN_LOGICAL_FALSE 0
383
#endif
384
#if defined (__OSF1__) || defined (__osf__)
385
# undef FORTRAN_LOGICAL_TRUE
386
# define FORTRAN_LOGICAL_TRUE -1
387
#endif
388
389
char
*
ccp4_FtoCString
(
fpstr
str1,
int
str1_len);
390
void
ccp4_CtoFString
(
fpstr
str1,
int
str1_len,
const
char
*cstring);
391
392
#endif
/* __CCP4_FORTRAN */
393
394
/*
395
Local variables:
396
mode: font-lock
397
End:
398
*/
ccp4_FtoCString
char * ccp4_FtoCString(fpstr str1, int str1_len)
Definition:
library_f.c:50
fpstr
pstr fpstr
Definition:
ccp4_fortran.h:328
ccp4_CtoFString
void ccp4_CtoFString(fpstr str1, int str1_len, const char *cstring)
Definition:
library_f.c:71
ccp4_types.h
Header file containing various commonly used type definitions and some useful macros.
Generated by
1.8.17