00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00032 #ifndef __CCP4_FORTRAN
00033 #define __CCP4_FORTRAN
00034
00035 #include "ccp4_types.h"
00036
00037
00038 #ifdef CALL_LIKE_STARDENT
00039
00040
00041 DefineStructure(SStrPar)
00042 struct SStrPar {
00043 pstr S;
00044 int len;
00045 int id;
00046 };
00047 #endif
00048
00049 #define _LVTOB(l) ((long) ((l) == 0 ? 0 : 1))
00050 #define _BTOLV(l) ((int) ((l) == 0 ? 0 : 1))
00051 #if defined (__OSF1__) || defined (__osf__)
00052 #undef _BTOLV
00053 #define _BTOLV(l) ((int) ((l) == 0 ? 0 : -1))
00054 #endif
00055
00176 #if defined(CALL_LIKE_SUN)
00177
00178 typedef pstr fpstr;
00179
00180 #define FTN_STR(s) s
00181 #define FTN_LEN(s) s##_len
00182
00183 #define char_struct(s) \
00184 pstr s; \
00185 int s##_len;
00186 #define fill_char_struct(s,str) \
00187 s = str; \
00188 s##_len = strlen(str);
00189 #define init_char_struct(s,str,size) \
00190 s = str; \
00191 s##_len = size;
00192
00193 #define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00194 void name##_ p_sun
00195 #define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00196 name##_ p_sun
00197 #define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00198 val name##_ p_sun
00199 #elif defined(CALL_LIKE_HPUX)
00200
00201 typedef pstr fpstr;
00202
00203 # define FTN_STR(s) s
00204 # define FTN_LEN(s) s##_len
00205
00206 # define char_struct(s) \
00207 pstr s; \
00208 int s##_len;
00209 # define fill_char_struct(s,str) \
00210 s = str; \
00211 s##_len = strlen(str);
00212 # define init_char_struct(s,str,size) \
00213 s = str; \
00214 s##_len = size;
00215
00216 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00217 void name p_sun
00218 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00219 name p_sun
00220 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00221 val name p_sun
00222 #elif defined(CALL_LIKE_STARDENT)
00223
00224 typedef PStrPar fpstr;
00225
00226 # define FTN_STR(s) s->Str_pointer
00227 # define FTN_LEN(s) s->Str_length
00228
00229 # define char_struct(s) \
00230 SStrPar s;
00231 # define fill_char_struct(s,str) \
00232 s.S = str; \
00233 s.len = strlen(FName); \
00234 s.id = 0;
00235 # define init_char_struct(s,str,size) \
00236 s.S = str; \
00237 s.len = size; \
00238 s.id = 0;
00239
00240 # define FORTRAN_SUBR(NAME,name,p_send,p_sstruct,p_sflw) \
00241 void NAME p_stardent
00242 # define FORTRAN_CALL(NAME,name,p_send,p_sstruct,p_sflw) \
00243 NAME p_stardent
00244 # define FORTRAN_FUN(val,NAME,name,p_send,p_sstruct,p_sflw) \
00245 val NAME p_stardent
00246
00247 #elif defined(CALL_LIKE_VMS)
00248
00249 typedef dsc$descriptor_s * fpstr;
00250
00251 # define FTN_STR(s) s->dsc$a_pointer;
00252 # define FTN_LEN(s) s->dsc$w_length;
00253
00254 # define char_struct(s) \
00255 dsc$descriptor_s s;
00256 # define fill_char_struct(s,str) \
00257 s.dsc$a_pointer = str; \
00258 s.dsc$w_length = strlen(str); \
00259 s.dsc$b_dtype = DSC$K_DTYPE_T; \
00260 s.dsc$b_class = DSC$K_CLASS_S;
00261 # define init_char_struct(s,str,size) \
00262 s.dsc$a_pointer = str; \
00263 s.dsc$w_length = size; \
00264 s.dsc$b_dtype = DSC$K_DTYPE_T; \
00265 s.dsc$b_class = DSC$K_CLASS_S;
00266
00267 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00268 void NAME p_stardent
00269 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00270 NAME p_stardent
00271 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00272 val NAME p_stardent
00273
00274 #elif defined(CALL_LIKE_MVS)
00275
00276 #if (CALL_LIKE_MVS == 2)
00277
00278 typedef pstr fpstr;
00279
00280 #define FTN_STR(s) s
00281 #define FTN_LEN(s) s##_len
00282
00283 #define char_struct(s) \
00284 pstr s; \
00285 int s##_len;
00286 #define fill_char_struct(s,str) \
00287 s = str; \
00288 s##_len = strlen(str);
00289 #define init_char_struct(s,str,size) \
00290 s = str; \
00291 s##_len = size;
00292
00293 #define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00294 void NAME p_sun
00295 #define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00296 NAME p_sun
00297 #define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00298 val NAME p_sun
00299
00300 #else
00301
00302 typedef pstr fpstr;
00303
00304 # define FTN_STR(s) s
00305 # define FTN_LEN(s) s##_len
00306
00307 # define char_struct(s) \
00308 pstr s; \
00309 int s##_len;
00310 # define fill_char_struct(s,str) \
00311 s = str; \
00312 s##_len = strlen(str);
00313 # define init_char_struct(s,str,size) \
00314 s = str; \
00315 s##_len = size;
00316
00317 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00318 void __stdcall NAME p_mvs
00319 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00320 NAME p_mvs
00321 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00322 val __stdcall NAME p_mvs
00323
00324 # endif
00325
00326 #else
00327
00328 # error Unknown machine!!!
00329
00330 typedef pstr fpstr;
00331
00332 # define FTN_STR(s) s
00333 # define FTN_LEN(s) s##_len
00334
00335 # define char_struct(s) \
00336 pstr s; \
00337 int s##_len;
00338 # define fill_char_struct(s,str) \
00339 s = str; \
00340 s##_len = strlen(str);
00341 # define init_char_struct(s,str,size) \
00342 s = str; \
00343 s##_len = size;
00344
00353 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00354 void name##_ p_sun
00355
00363 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00364 name##_ p_sun
00365
00375 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00376 val name##_ p_sun
00377
00378 #endif
00379
00380
00381 typedef unsigned int ftn_logical;
00382 #if defined (KNOWN_MACHINE)
00383 # define FORTRAN_LOGICAL_TRUE 1
00384 # define FORTRAN_LOGICAL_FALSE 0
00385 #endif
00386 #if defined (__OSF1__) || defined (__osf__)
00387 # undef FORTRAN_LOGICAL_TRUE
00388 # define FORTRAN_LOGICAL_TRUE -1
00389 #endif
00390
00391 char *ccp4_FtoCString(fpstr str1, int str1_len);
00392 void ccp4_CtoFString(fpstr str1, int str1_len, const char *cstring);
00393
00394 #endif
00395
00396
00397
00398
00399
00400