00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef __MMDB_Machine__
00042 #define __MMDB_Machine__
00043
00044 #include "mmdb_mattype.h"
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 namespace mmdb {
00058
00059 namespace machine {
00060
00061
00062
00063
00064 enum MACHINE {
00065 MACHINE_SGI = 1,
00066 MACHINE_RS6000 = 2,
00067 MACHINE_ALLIANT = 3,
00068 MACHINE_ARDENT = 4,
00069 MACHINE_TITAN = 5,
00070 MACHINE_STARDENT = 6,
00071 MACHINE_CONVEX = 7,
00072 MACHINE_ESV = 8,
00073 MACHINE_HP9000 = 9,
00074 MACHINE_SOLBOURNE = 10,
00075 MACHINE_SOLARIS = 11,
00076 MACHINE_ALPHA = 12,
00077 MACHINE_VMS = 13,
00078 MACHINE_MVS = 14,
00079 MACHINE_F2C_G77 = 15,
00080 MACHINE_LINUX = 16,
00081 MACHINE_UNKNOWN = 100
00082 };
00083
00084
00085
00086
00087 #if defined(_AIX) || defined(___AIX)
00088 # define CALL_LIKE_HPUX 1
00089
00090
00091 #elif defined(alliant)
00092 # define CALL_LIKE_SUN 1
00093
00094
00095 #elif defined(ardent)
00096 # define CALL_LIKE_STARDENT 1
00097 #elif defined(titan)
00098 # define CALL_LIKE_STARDENT 2
00099 #elif defined(stardent)
00100 # define CALL_LIKE_STARDENT 3
00101
00102
00103 #elif defined(__convex__) || defined(__convexc__)
00104 # define CALL_LIKE_SUN 2
00105
00106
00107 #elif defined(ESV)
00108 # define CALL_LIKE_SUN 3
00109
00110
00111 #elif defined(__hpux)
00112 # define CALL_LIKE_HPUX 2
00113
00114
00115 #elif defined(__sgi) || defined(sgi)
00116 # define CALL_LIKE_SUN 4
00117
00118
00119 #elif defined(solbourne)
00120 # define CALL_LIKE_SUN 5
00121
00122
00123 #elif defined(sun) || defined(__sun)
00124 # define CALL_LIKE_SUN 6
00125
00126
00127 #elif defined(ultrix) || defined(__OSF1__) || defined(__osf__)
00128 # define CALL_LIKE_SUN 7
00129
00130
00131 #elif defined(vms) || defined(__vms) || defined(__VMS)
00132 # define CALL_LIKE_VMS 1
00133
00134
00135 #elif defined(_MVS)
00136 # define CALL_LIKE_MVS 1
00137
00138 #elif defined(F2C) || defined(G77)
00139 # define CALL_LIKE_SUN 8
00140
00141 #elif defined(linux)
00142 # define CALL_LIKE_SUN 9
00143
00144 #else
00145
00146 # define CALL_LIKE_SUN 100
00147
00148 #endif
00149
00150
00151
00152
00153
00154 #ifdef CALL_LIKE_STARDENT
00155
00156
00157 DefineStructure(StrPar)
00158 struct StrPar {
00159 pstr S;
00160 int len;
00161 int id;
00162 };
00163 #endif
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287 typedef float apireal;
00288
00289
00290
00291
00292
00293 #if defined(CALL_LIKE_SUN)
00294
00295 typedef pstr fpstr;
00296
00297 # define FTN_STR(s) s
00298 # define FTN_LEN(s) s##_len
00299
00300 # define char_struct(s) \
00301 mmdb::pstr s; \
00302 int s##_len;
00303 # define fill_char_struct(s,str) \
00304 s = str; \
00305 s##_len = strlen(str);
00306
00307 # ifdef __cplusplus
00308 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00309 extern "C" void name##_ p_sun
00310 # else
00311 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00312 void name##_ p_sun
00313 # endif
00314
00315 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00316 extern "C" void name##_ p_sun
00317
00318 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00319 name##_ p_sun
00320
00321 # elif defined(CALL_LIKE_HPUX)
00322
00323 typedef pstr fpstr;
00324
00325 # define FTN_STR(s) s
00326 # define FTN_LEN(s) s##_len
00327
00328 # define char_struct(s) \
00329 pstr s; \
00330 int s##_len;
00331 # define fill_char_struct(s,str) \
00332 s = str; \
00333 s##_len = strlen(str);
00334
00335 # ifdef __cplusplus
00336 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00337 extern "C" void name p_sun
00338 # else
00339 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00340 void name p_sun
00341 # endif
00342
00343 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00344 extern "C" void name p_sun
00345
00346 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00347 name p_sun
00348
00349 #elif defined(CALL_LIKE_STARDENT)
00350
00351 typedef PStrPar fpstr;
00352
00353 # define FTN_STR(s) s->S
00354 # define FTN_LEN(s) s->len
00355
00356 # define char_struct(s) \
00357 StrPar s;
00358 # define fill_char_struct(s,str) \
00359 s.S = str; \
00360 s.len = strlen(FName); \
00361 s.id = 0;
00362
00363 # ifdef __cplusplus
00364 # define FORTRAN_SUBR(NAME,name,p_send,p_struct,p_sflw) \
00365 extern "C" void NAME p_stardent
00366 # else
00367 # define FORTRAN_SUBR(NAME,name,p_send,p_struct,p_sflw) \
00368 void NAME p_stardent
00369 # endif
00370
00371 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00372 extern "C" void NAME p_stardent
00373
00374 # define FORTRAN_CALL(NAME,name,p_send,p_struct,p_sflw) \
00375 NAME p_stardent
00376
00377 #elif defined(CALL_LIKE_VMS)
00378
00379 typedef dsc$descriptor_s * fpstr;
00380
00381 # define FTN_STR(s) s->dsc$a_pointer;
00382 # define FTN_LEN(s) s->dsc$w_length;
00383
00384 # define character(s) \
00385 dsc$descriptor_s s;
00386 # define fill_char_struct(s,str) \
00387 s.dsc$a_pointer = str; \
00388 s.dsc$w_length = strlen(str); \
00389 s.dsc$b_dtype = DSC$K_DTYPE_T; \
00390 s.dsc$b_class = DSC$K_CLASS_S;
00391
00392 # ifdef __cplusplus
00393 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00394 extern "C" void NAME p_stardent
00395 # else
00396 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00397 void NAME p_stardent
00398 # endif
00399
00400 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00401 extern "C" void NAME p_stardent
00402
00403 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00404 NAME p_stardent
00405
00406 #elif defined(CALL_LIKE_MVS)
00407
00408 typedef pstr fpstr;
00409
00410 # define FTN_STR(s) s
00411 # define FTN_LEN(s) s##_len
00412
00413 # define char_struct(s) \
00414 pstr s; \
00415 int s##_len;
00416 # define fill_char_struct(s,str) \
00417 s = str; \
00418 s##_len = strlen(str);
00419
00420 # ifdef __cplusplus
00421 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00422 extern "C" void __stdcall NAME p_mvs
00423 # else
00424 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00425 void __stdcall NAME p_mvs
00426 # endif
00427
00428 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00429 extern "C" void NAME p_mvs
00430
00431 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00432 NAME p_mvs
00433
00434 #else
00435
00436 # error Unknown machine!!!
00437
00438 typedef pstr fpstr;
00439
00440 # define FTN_STR(s) s
00441 # define FTN_LEN(s) s##_len
00442
00443 # define char_struct(s) \
00444 pstr s; \
00445 int s##_len;
00446 # define fill_char_struct(s,str) \
00447 s = str; \
00448 s##_len = strlen(str);
00449
00450 # ifdef __cplusplus
00451 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00452 extern "C" void name##_ p_sun
00453 # else
00454 # define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \
00455 void name##_ p_sun
00456 # endif
00457
00458 # define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \
00459 extern "C" void name##_ p_sun
00460
00461 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \
00462 name##_ p_sun
00463
00464 #endif
00465
00466
00467
00468
00469 extern int GetMachineID ();
00470 extern mmdb::cpstr GetMachineName ();
00471 extern mmdb::cpstr GetMachineName ( int MachineID );
00472
00473 }
00474
00475 }
00476
00477 #endif