00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00148 #ifndef __CCP4_FORTRAN
00149 #define __CCP4_FORTRAN
00150
00151 #include "ccp4_types.h"
00152
00153
00154 #ifdef CALL_LIKE_STARDENT
00155
00156
00157 DefineStructure(SStrPar)
00158 struct SStrPar {
00159 pstr S;
00160 int len;
00161 int id;
00162 };
00163 #endif
00164
00165 #define _LVTOB(l) ((long) ((l) == 0 ? 0 : 1))
00166 #define _BTOLV(l) ((int) ((l) == 0 ? 0 : 1))
00167 #if defined (__OSF1__) || defined (__osf__)
00168 #undef _BTOLV
00169 #define _BTOLV(l) ((int) ((l) == 0 ? 0 : -1))
00170 #endif
00171
00172
00173
00174 #if defined(CALL_LIKE_SUN)
00175
00176 typedef pstr fpstr;
00177
00178 # define FTN_STR(s) s
00179 # define FTN_LEN(s) s##_len
00180
00181 # define char_struct(s) \
00182 pstr s; \
00183 int s##_len;
00184 # define fill_char_struct(s,str) \
00185 s = str; \
00186 s##_len = strlen(str);
00187 # define init_char_struct(s,str,size) \
00188 s = str; \
00189 s##_len = size;
00190
00191 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00192 void name##_ p_sun
00193 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00194 name##_ p_sun
00195 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00196 val name##_ p_sun
00197 #elif defined(CALL_LIKE_HPUX)
00198
00199 typedef pstr fpstr;
00200
00201 # define FTN_STR(s) s
00202 # define FTN_LEN(s) s##_len
00203
00204 # define char_struct(s) \
00205 pstr s; \
00206 int s##_len;
00207 # define fill_char_struct(s,str) \
00208 s = str; \
00209 s##_len = strlen(str);
00210 # define init_char_struct(s,str,size) \
00211 s = str; \
00212 s##_len = size;
00213
00214 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00215 void name p_sun
00216 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00217 name p_sun
00218 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00219 val name p_sun
00220 #elif defined(CALL_LIKE_STARDENT)
00221
00222 typedef PStrPar fpstr;
00223
00224 # define FTN_STR(s) s->Str_pointer
00225 # define FTN_LEN(s) s->Str_length
00226
00227 # define char_struct(s) \
00228 SStrPar s;
00229 # define fill_char_struct(s,str) \
00230 s.S = str; \
00231 s.len = strlen(FName); \
00232 s.id = 0;
00233 # define init_char_struct(s,str,size) \
00234 s.S = str; \
00235 s.len = size; \
00236 s.id = 0;
00237
00238 # define FORTRAN_SUBR(NAME,name,p_send,p_sstruct,p_sflw) \
00239 void NAME p_stardent
00240 # define FORTRAN_CALL(NAME,name,p_send,p_sstruct,p_sflw) \
00241 NAME p_stardent
00242 # define FORTRAN_FUN(val,NAME,name,p_send,p_sstruct,p_sflw) \
00243 val NAME p_stardent
00244
00245 #elif defined(CALL_LIKE_VMS)
00246
00247 typedef dsc$descriptor_s * fpstr;
00248
00249 # define FTN_STR(s) s->dsc$a_pointer;
00250 # define FTN_LEN(s) s->dsc$w_length;
00251
00252 # define char_struct(s) \
00253 dsc$descriptor_s s;
00254 # define fill_char_struct(s,str) \
00255 s.dsc$a_pointer = str; \
00256 s.dsc$w_length = strlen(str); \
00257 s.dsc$b_dtype = DSC$K_DTYPE_T; \
00258 s.dsc$b_class = DSC$K_CLASS_S;
00259 # define init_char_struct(s,str,size) \
00260 s.dsc$a_pointer = str; \
00261 s.dsc$w_length = size; \
00262 s.dsc$b_dtype = DSC$K_DTYPE_T; \
00263 s.dsc$b_class = DSC$K_CLASS_S;
00264
00265 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00266 void NAME p_stardent
00267 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00268 NAME p_stardent
00269 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00270 val NAME p_stardent
00271
00272 #elif defined(CALL_LIKE_MVS)
00273
00274 typedef pstr fpstr;
00275
00276 # define FTN_STR(s) s
00277 # define FTN_LEN(s) s##_len
00278
00279 # define char_struct(s) \
00280 pstr s; \
00281 int s##_len;
00282 # define fill_char_struct(s,str) \
00283 s = str; \
00284 s##_len = strlen(str);
00285 # define init_char_struct(s,str,size) \
00286 s = str; \
00287 s##_len = size;
00288
00289 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00290 void __stdcall NAME p_mvs
00291 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00292 NAME p_mvs
00293 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00294 val __stdcall NAME p_mvs
00295
00296 #else
00297
00298 # error Unknown machine!!!
00299
00300 typedef pstr fpstr;
00301
00302 # define FTN_STR(s) s
00303 # define FTN_LEN(s) s##_len
00304
00305 # define char_struct(s) \
00306 pstr s; \
00307 int s##_len;
00308 # define fill_char_struct(s,str) \
00309 s = str; \
00310 s##_len = strlen(str);
00311 # define init_char_struct(s,str,size) \
00312 s = str; \
00313 s##_len = size;
00314
00323 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00324 void name##_ p_sun
00325
00333 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00334 name##_ p_sun
00335
00345 # define FORTRAN_FUN(val,NAME,name,p_sun,p_stardent,p_mvs) \
00346 val name##_ p_sun
00347
00348 #endif
00349
00350
00351 typedef unsigned int ftn_logical;
00352 #if defined (KNOWN_MACHINE)
00353 # define FORTRAN_LOGICAL_TRUE 1
00354 # define FORTRAN_LOGICAL_FALSE 0
00355 #endif
00356 #if defined (__OSF1__) || defined (__osf__)
00357 # undef FORTRAN_LOGICAL_TRUE
00358 # define FORTRAN_LOGICAL_TRUE -1
00359 #endif
00360
00361 char *ccp4_FtoCString(fpstr str1, int str1_len);
00362 void ccp4_CtoFString(fpstr str1, int str1_len, const char *cstring);
00363
00364 #endif
00365
00366
00367
00368
00369
00370