f2c.h
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:5k
源码类别:

Linux/Unix编程

开发平台:

Visual C++

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