home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / runtime / f2c.h.in < prev    next >
Text File  |  1996-09-28  |  5KB  |  221 lines

  1. /* f2c.h  --  Standard Fortran to C header file */
  2.  
  3. /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  4.  
  5.     - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  6.  
  7. #ifndef F2C_INCLUDE
  8. #define F2C_INCLUDE
  9.  
  10. /* F2C_INTEGER will normally be `int' but would be `long' on 16-bit systems */
  11. /* we assume short, float are OK */
  12. typedef @F2C_INTEGER@ /* long int */ integer;
  13. typedef char *address;
  14. typedef short int shortint;
  15. typedef float real;
  16. typedef double doublereal;
  17. typedef struct { real r, i; } complex;
  18. typedef struct { doublereal r, i; } doublecomplex;
  19. typedef @F2C_INTEGER@ /* long int */ logical;
  20. typedef short int shortlogical;
  21. typedef char logical1;
  22. typedef char integer1;
  23. /* typedef long long longint; */ /* system-dependent */
  24.  
  25. #define TRUE_ (1)
  26. #define FALSE_ (0)
  27.  
  28. /* Extern is for use with -E */
  29. #ifndef Extern
  30. #define Extern extern
  31. #endif
  32.  
  33. /* I/O stuff */
  34.  
  35. #ifdef f2c_i2
  36. WARNING: will not work with g77!!!!  (This line is intended to kill compiles.)
  37. /* for -i2 */
  38. typedef short flag;
  39. typedef short ftnlen;
  40. typedef short ftnint;
  41. #else
  42. typedef @F2C_INTEGER@ /* int or long int */ flag;
  43. typedef @F2C_INTEGER@ /* int or long int */ ftnlen;
  44. typedef @F2C_INTEGER@ /* int or long int */ ftnint;
  45. #endif
  46.  
  47. /*external read, write*/
  48. typedef struct
  49. {    flag cierr;
  50.     ftnint ciunit;
  51.     flag ciend;
  52.     char *cifmt;
  53.     ftnint cirec;
  54. } cilist;
  55.  
  56. /*internal read, write*/
  57. typedef struct
  58. {    flag icierr;
  59.     char *iciunit;
  60.     flag iciend;
  61.     char *icifmt;
  62.     ftnint icirlen;
  63.     ftnint icirnum;
  64. } icilist;
  65.  
  66. /*open*/
  67. typedef struct
  68. {    flag oerr;
  69.     ftnint ounit;
  70.     char *ofnm;
  71.     ftnlen ofnmlen;
  72.     char *osta;
  73.     char *oacc;
  74.     char *ofm;
  75.     ftnint orl;
  76.     char *oblnk;
  77. } olist;
  78.  
  79. /*close*/
  80. typedef struct
  81. {    flag cerr;
  82.     ftnint cunit;
  83.     char *csta;
  84. } cllist;
  85.  
  86. /*rewind, backspace, endfile*/
  87. typedef struct
  88. {    flag aerr;
  89.     ftnint aunit;
  90. } alist;
  91.  
  92. /* inquire */
  93. typedef struct
  94. {    flag inerr;
  95.     ftnint inunit;
  96.     char *infile;
  97.     ftnlen infilen;
  98.     ftnint    *inex;    /*parameters in standard's order*/
  99.     ftnint    *inopen;
  100.     ftnint    *innum;
  101.     ftnint    *innamed;
  102.     char    *inname;
  103.     ftnlen    innamlen;
  104.     char    *inacc;
  105.     ftnlen    inacclen;
  106.     char    *inseq;
  107.     ftnlen    inseqlen;
  108.     char     *indir;
  109.     ftnlen    indirlen;
  110.     char    *infmt;
  111.     ftnlen    infmtlen;
  112.     char    *inform;
  113.     ftnint    informlen;
  114.     char    *inunf;
  115.     ftnlen    inunflen;
  116.     ftnint    *inrecl;
  117.     ftnint    *innrec;
  118.     char    *inblank;
  119.     ftnlen    inblanklen;
  120. } inlist;
  121.  
  122. #define VOID void
  123.  
  124. union Multitype {    /* for multiple entry points */
  125.     integer1 g;
  126.     shortint h;
  127.     integer i;
  128.     /* longint j; */
  129.     real r;
  130.     doublereal d;
  131.     complex c;
  132.     doublecomplex z;
  133.     };
  134.  
  135. typedef union Multitype Multitype;
  136.  
  137. typedef long Long;    /* No longer used; formerly in Namelist */
  138.  
  139. struct Vardesc {    /* for Namelist */
  140.     char *name;
  141.     char *addr;
  142.     ftnlen *dims;
  143.     int  type;
  144.     };
  145. typedef struct Vardesc Vardesc;
  146.  
  147. struct Namelist {
  148.     char *name;
  149.     Vardesc **vars;
  150.     int nvars;
  151.     };
  152. typedef struct Namelist Namelist;
  153.  
  154. #define abs(x) ((x) >= 0 ? (x) : -(x))
  155. #define dabs(x) (doublereal)abs(x)
  156. #define min(a,b) ((a) <= (b) ? (a) : (b))
  157. #define max(a,b) ((a) >= (b) ? (a) : (b))
  158. #define dmin(a,b) (doublereal)min(a,b)
  159. #define dmax(a,b) (doublereal)max(a,b)
  160.  
  161. /* procedure parameter types for -A and -C++ */
  162.  
  163. #define F2C_proc_par_types 1
  164. #ifdef __cplusplus
  165. typedef int /* Unknown procedure type */ (*U_fp)(...);
  166. typedef shortint (*J_fp)(...);
  167. typedef integer (*I_fp)(...);
  168. typedef real (*R_fp)(...);
  169. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  170. typedef /* Complex */ VOID (*C_fp)(...);
  171. typedef /* Double Complex */ VOID (*Z_fp)(...);
  172. typedef logical (*L_fp)(...);
  173. typedef shortlogical (*K_fp)(...);
  174. typedef /* Character */ VOID (*H_fp)(...);
  175. typedef /* Subroutine */ int (*S_fp)(...);
  176. #else
  177. typedef int /* Unknown procedure type */ (*U_fp)();
  178. typedef shortint (*J_fp)();
  179. typedef integer (*I_fp)();
  180. typedef real (*R_fp)();
  181. typedef doublereal (*D_fp)(), (*E_fp)();
  182. typedef /* Complex */ VOID (*C_fp)();
  183. typedef /* Double Complex */ VOID (*Z_fp)();
  184. typedef logical (*L_fp)();
  185. typedef shortlogical (*K_fp)();
  186. typedef /* Character */ VOID (*H_fp)();
  187. typedef /* Subroutine */ int (*S_fp)();
  188. #endif
  189. /* E_fp is for real functions when -R is not specified */
  190. typedef VOID C_f;    /* complex function */
  191. typedef VOID H_f;    /* character function */
  192. typedef VOID Z_f;    /* double complex function */
  193. typedef doublereal E_f;    /* real function with -R not specified */
  194.  
  195. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  196.  
  197. #ifndef Skip_f2c_Undefs
  198. /* (No such symbols should be defined in a strict ANSI C compiler.
  199.    We can avoid trouble with f2c-translated code by using
  200.    gcc -ansi [-traditional].) */
  201. #undef cray
  202. #undef gcos
  203. #undef mc68010
  204. #undef mc68020
  205. #undef mips
  206. #undef pdp11
  207. #undef sgi
  208. #undef sparc
  209. #undef sun
  210. #undef sun2
  211. #undef sun3
  212. #undef sun4
  213. #undef u370
  214. #undef u3b
  215. #undef u3b2
  216. #undef u3b5
  217. #undef unix
  218. #undef vax
  219. #endif
  220. #endif
  221.