home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / gnu / f2c-1993.04.28-bin.lha / include / f2c.h
C/C++ Source or Header  |  1994-07-11  |  4KB  |  212 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. typedef long int integer;
  11. typedef char *address;
  12. typedef short int shortint;
  13. typedef float real;
  14. typedef double doublereal;
  15. typedef struct { real r, i; } complex;
  16. typedef struct { doublereal r, i; } doublecomplex;
  17. typedef long int logical;
  18. typedef short int shortlogical;
  19. typedef char logical1;
  20. typedef char integer1;
  21.  
  22. #define TRUE_ (1)
  23. #define FALSE_ (0)
  24.  
  25. /* Extern is for use with -E */
  26. #ifndef Extern
  27. #define Extern extern
  28. #endif
  29.  
  30. /* I/O stuff */
  31.  
  32. #ifdef f2c_i2
  33. /* for -i2 */
  34. typedef short flag;
  35. typedef short ftnlen;
  36. typedef short ftnint;
  37. #else
  38. typedef long flag;
  39. typedef long ftnlen;
  40. typedef long ftnint;
  41. #endif
  42.  
  43. /*external read, write*/
  44. typedef struct
  45. {    flag cierr;
  46.     ftnint ciunit;
  47.     flag ciend;
  48.     char *cifmt;
  49.     ftnint cirec;
  50. } cilist;
  51.  
  52. /*internal read, write*/
  53. typedef struct
  54. {    flag icierr;
  55.     char *iciunit;
  56.     flag iciend;
  57.     char *icifmt;
  58.     ftnint icirlen;
  59.     ftnint icirnum;
  60. } icilist;
  61.  
  62. /*open*/
  63. typedef struct
  64. {    flag oerr;
  65.     ftnint ounit;
  66.     char *ofnm;
  67.     ftnlen ofnmlen;
  68.     char *osta;
  69.     char *oacc;
  70.     char *ofm;
  71.     ftnint orl;
  72.     char *oblnk;
  73. } olist;
  74.  
  75. /*close*/
  76. typedef struct
  77. {    flag cerr;
  78.     ftnint cunit;
  79.     char *csta;
  80. } cllist;
  81.  
  82. /*rewind, backspace, endfile*/
  83. typedef struct
  84. {    flag aerr;
  85.     ftnint aunit;
  86. } alist;
  87.  
  88. /* inquire */
  89. typedef struct
  90. {    flag inerr;
  91.     ftnint inunit;
  92.     char *infile;
  93.     ftnlen infilen;
  94.     ftnint    *inex;    /*parameters in standard's order*/
  95.     ftnint    *inopen;
  96.     ftnint    *innum;
  97.     ftnint    *innamed;
  98.     char    *inname;
  99.     ftnlen    innamlen;
  100.     char    *inacc;
  101.     ftnlen    inacclen;
  102.     char    *inseq;
  103.     ftnlen    inseqlen;
  104.     char     *indir;
  105.     ftnlen    indirlen;
  106.     char    *infmt;
  107.     ftnlen    infmtlen;
  108.     char    *inform;
  109.     ftnint    informlen;
  110.     char    *inunf;
  111.     ftnlen    inunflen;
  112.     ftnint    *inrecl;
  113.     ftnint    *innrec;
  114.     char    *inblank;
  115.     ftnlen    inblanklen;
  116. } inlist;
  117.  
  118. #define VOID void
  119.  
  120. union Multitype {    /* for multiple entry points */
  121.     shortint h;
  122.     integer i;
  123.     real r;
  124.     doublereal d;
  125.     complex c;
  126.     doublecomplex z;
  127.     };
  128.  
  129. typedef union Multitype Multitype;
  130.  
  131. typedef long Long;    /* No longer used; formerly in Namelist */
  132.  
  133. struct Vardesc {    /* for Namelist */
  134.     char *name;
  135.     char *addr;
  136.     ftnlen *dims;
  137.     int  type;
  138.     };
  139. typedef struct Vardesc Vardesc;
  140.  
  141. struct Namelist {
  142.     char *name;
  143.     Vardesc **vars;
  144.     int nvars;
  145.     };
  146. typedef struct Namelist Namelist;
  147.  
  148. #define abs(x) ((x) >= 0 ? (x) : -(x))
  149. #define dabs(x) (doublereal)abs(x)
  150. #define min(a,b) ((a) <= (b) ? (a) : (b))
  151. #define max(a,b) ((a) >= (b) ? (a) : (b))
  152. #define dmin(a,b) (doublereal)min(a,b)
  153. #define dmax(a,b) (doublereal)max(a,b)
  154.  
  155. /* procedure parameter types for -A and -C++ */
  156.  
  157. #define F2C_proc_par_types 1
  158. #ifdef __cplusplus
  159. typedef int /* Unknown procedure type */ (*U_fp)(...);
  160. typedef shortint (*J_fp)(...);
  161. typedef integer (*I_fp)(...);
  162. typedef real (*R_fp)(...);
  163. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  164. typedef /* Complex */ VOID (*C_fp)(...);
  165. typedef /* Double Complex */ VOID (*Z_fp)(...);
  166. typedef logical (*L_fp)(...);
  167. typedef shortlogical (*K_fp)(...);
  168. typedef /* Character */ VOID (*H_fp)(...);
  169. typedef /* Subroutine */ int (*S_fp)(...);
  170. #else
  171. typedef int /* Unknown procedure type */ (*U_fp)();
  172. typedef shortint (*J_fp)();
  173. typedef integer (*I_fp)();
  174. typedef real (*R_fp)();
  175. typedef doublereal (*D_fp)(), (*E_fp)();
  176. typedef /* Complex */ VOID (*C_fp)();
  177. typedef /* Double Complex */ VOID (*Z_fp)();
  178. typedef logical (*L_fp)();
  179. typedef shortlogical (*K_fp)();
  180. typedef /* Character */ VOID (*H_fp)();
  181. typedef /* Subroutine */ int (*S_fp)();
  182. #endif
  183. /* E_fp is for real functions when -R is not specified */
  184. typedef VOID C_f;    /* complex function */
  185. typedef VOID H_f;    /* character function */
  186. typedef VOID Z_f;    /* double complex function */
  187. typedef doublereal E_f;    /* real function with -R not specified */
  188.  
  189. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  190.  
  191. #ifndef Skip_f2c_Undefs
  192. #undef cray
  193. #undef gcos
  194. #undef mc68010
  195. #undef mc68020
  196. #undef mips
  197. #undef pdp11
  198. #undef sgi
  199. #undef sparc
  200. #undef sun
  201. #undef sun2
  202. #undef sun3
  203. #undef sun4
  204. #undef u370
  205. #undef u3b
  206. #undef u3b2
  207. #undef u3b5
  208. #undef unix
  209. #undef vax
  210. #endif
  211. #endif
  212.