f2c.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:16k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /*
  2. -Header_File f2c.h ( CSPICE version of the f2c standard header file )
  3. -Abstract
  4.    Perform standard f2c declarations, customized for the host 
  5.    environment.
  6.       
  7. -Disclaimer
  8.    THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE
  9.    CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S.
  10.    GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE
  11.    ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE
  12.    PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS"
  13.    TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY
  14.    WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A
  15.    PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC
  16.    SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE
  17.    SOFTWARE AND RELATED MATERIALS, HOWEVER USED.
  18.    IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA
  19.    BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT
  20.    LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.    INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS,
  22.    REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE
  23.    REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY.
  24.    RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF
  25.    THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY
  26.    CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE
  27.    ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE.
  28. -Required_Reading
  29.    None.
  30.    
  31. -Particulars
  32.    The standard f2c header file f2c.h must be included by every function 
  33.    generated by running f2c on Fortran source code.  The header f2c.h 
  34.    includes typedefs used to provide a level of indirection in mapping 
  35.    Fortran data types to native C data types.  For example, Fortran
  36.    INTEGER variables are mapped to variables of type integer, where
  37.    integer is a C typedef.  In the standard f2c.h header, the typedef
  38.    integer tranlates to the C type long.  
  39.    
  40.    Because the standard version of f2c.h does not work on all platforms,
  41.    this header file contains two platform-dependent versions of it,
  42.    meant to be selected at build time via precompiler switches.  The
  43.    precompiler switches reference macros defined in SpiceZpl.h to 
  44.    determine for which host platform the code is targeted.  The first
  45.    version of f2c.h, which works on most platforms, is copied directly
  46.    from the standard version of f2c.h.  The second version is intended
  47.    for use on the DEC Alpha running Digital Unix and the Sun/Solaris
  48.    platform using 64 bit mode and running gcc.  On those systems, longs
  49.    occupy 8 bytes, as do doubles.  Because the Fortran standard requires
  50.    that INTEGERS occupy half the storage of DOUBLE PRECISION numbers,
  51.    INTEGERS should be mapped to 4-byte ints rather than 8-byte longs
  52.    on the platforms having 8-byte longs.  In order to achieve this, the
  53.    header f2c.h was transformed using the sed command
  54.    
  55.       sed 's/long //' f2c.h
  56.            
  57.    The high-level structure of this file is then:
  58.    
  59.       # if (    defined(CSPICE_ALPHA_DIGITAL_UNIX    )   
  60.              || defined(CSPICE_SUN_SOLARIS_64BIT_GCC )  )
  61.       
  62.       
  63.          [ Alpha/Digital Unix and Sun Solaris 64 bit mode/gcc
  64.            version of f2c.h source code ]
  65.          
  66.       # else
  67.       
  68.          [ Standard version of f2c.h source code ]
  69.          
  70.       # endif  
  71.    
  72. -Literature_References
  73.    None.
  74. -Author_and_Institution
  75.    N.J. Bachman       (JPL)
  76.    
  77. -Restrictions
  78.   1) This header file must be updated whenever the f2c processor
  79.      or the f2c libraries libI77 and libF77 are updated.
  80.      
  81.   2) This header may need to be updated to support new platforms.
  82.      The supported platforms at the time of the 31-JAN-1999 release
  83.      are:
  84.      
  85.         ALPHA-DIGITAL-UNIX
  86.         HP
  87.         NEXT
  88.         PC-LINUX
  89.         PC-MS
  90.         SGI-IRIX-N32
  91.         SGI-IRIX-NO2
  92.         SUN-SOLARIS  
  93.    
  94. -Version
  95.    -CSPICE Version 1.2.0, 27-JAN-2003 (NJB)
  96.        Updated to support the Sun Solaris 64 bit mode/gcc platform.
  97.    -CSPICE Version 2.0.0, 19-DEC-2001 (NJB)
  98.       Updated to support linking CSPICE into executables that
  99.       also link in objects compiled from Fortran, in particular
  100.       ones that perform Fortran I/O.  To enable this odd mix,
  101.       one defines the  preprocessor flag
  102.          MIX_C_AND_FORTRAN
  103.  
  104.       This macro is undefined by default, since the action it invokes
  105.       is usually not desirable.  See the header 
  106.          f2cMang.h
  107.       for further information.
  108.    -CSPICE Version 1.0.0, 07-FEB-1999 (NJB)  
  109. */
  110.    /*
  111.    Optionally include name-mangling macros for f2c external symbols.
  112.    */
  113.    #ifdef MIX_C_AND_FORTRAN
  114.       #include "f2cMang.h"
  115.    #endif
  116.    /*
  117.    Include CSPICE platform macro definitions.
  118.    */
  119.    #include "SpiceZpl.h"
  120.  
  121. # if (    defined(CSPICE_ALPHA_DIGITAL_UNIX    )    
  122.        || defined(CSPICE_SUN_SOLARIS_64BIT_GCC )  )
  123.    /*
  124.    The following code is intended to be used on the Alpha/Digital Unix
  125.    platform, where a long is the size of a double and an int is half the 
  126.    size of a double.
  127.    
  128.    Note that the comment line below indicating that the header is
  129.    "Standard" has been retained from the original, but is no longer
  130.    true. 
  131.    */
  132. /* f2c.h  --  Standard Fortran to C header file */
  133. /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  134.    - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  135. #ifndef F2C_INCLUDE
  136. #define F2C_INCLUDE
  137. typedef int integer;
  138. typedef unsigned uinteger;
  139. typedef char *address;
  140. typedef short int shortint;
  141. typedef float real;
  142. typedef double doublereal;
  143. typedef struct { real r, i; } complex;
  144. typedef struct { doublereal r, i; } doublecomplex;
  145. typedef int logical;
  146. typedef short int shortlogical;
  147. typedef char logical1;
  148. typedef char integer1;
  149. #if 0 /* Adjust for integer*8. */
  150. typedef long longint;      /* system-dependent */
  151. typedef unsigned long ulongint;  /* system-dependent */
  152. #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
  153. #define qbit_set(a,b)   ((a) |  ((ulongint)1 << (b)))
  154. #endif
  155. #define TRUE_ (1)
  156. #define FALSE_ (0)
  157. /* Extern is for use with -E */
  158. #ifndef Extern
  159. #define Extern extern
  160. #endif
  161. /* I/O stuff */
  162. #ifdef f2c_i2
  163. /* for -i2 */
  164. typedef short flag;
  165. typedef short ftnlen;
  166. typedef short ftnint;
  167. #else
  168. typedef int flag;
  169. typedef int ftnlen;
  170. typedef int ftnint;
  171. #endif
  172. /*external read, write*/
  173. typedef struct
  174. {  flag cierr;
  175.    ftnint ciunit;
  176.    flag ciend;
  177.    char *cifmt;
  178.    ftnint cirec;
  179. } cilist;
  180. /*internal read, write*/
  181. typedef struct
  182. {  flag icierr;
  183.    char *iciunit;
  184.    flag iciend;
  185.    char *icifmt;
  186.    ftnint icirlen;
  187.    ftnint icirnum;
  188. } icilist;
  189. /*open*/
  190. typedef struct
  191. {  flag oerr;
  192.    ftnint ounit;
  193.    char *ofnm;
  194.    ftnlen ofnmlen;
  195.    char *osta;
  196.    char *oacc;
  197.    char *ofm;
  198.    ftnint orl;
  199.    char *oblnk;
  200. } olist;
  201. /*close*/
  202. typedef struct
  203. {  flag cerr;
  204.    ftnint cunit;
  205.    char *csta;
  206. } cllist;
  207. /*rewind, backspace, endfile*/
  208. typedef struct
  209. {  flag aerr;
  210.    ftnint aunit;
  211. } alist;
  212. /* inquire */
  213. typedef struct
  214. {  flag inerr;
  215.    ftnint inunit;
  216.    char *infile;
  217.    ftnlen infilen;
  218.    ftnint   *inex;   /*parameters in standard's order*/
  219.    ftnint   *inopen;
  220.    ftnint   *innum;
  221.    ftnint   *innamed;
  222.    char  *inname;
  223.    ftnlen   innamlen;
  224.    char  *inacc;
  225.    ftnlen   inacclen;
  226.    char  *inseq;
  227.    ftnlen   inseqlen;
  228.    char  *indir;
  229.    ftnlen   indirlen;
  230.    char  *infmt;
  231.    ftnlen   infmtlen;
  232.    char  *inform;
  233.    ftnint   informlen;
  234.    char  *inunf;
  235.    ftnlen   inunflen;
  236.    ftnint   *inrecl;
  237.    ftnint   *innrec;
  238.    char  *inblank;
  239.    ftnlen   inblanklen;
  240. } inlist;
  241. #define VOID void
  242. union Multitype { /* for multiple entry points */
  243.    integer1 g;
  244.    shortint h;
  245.    integer i;
  246.    /* longint j; */
  247.    real r;
  248.    doublereal d;
  249.    complex c;
  250.    doublecomplex z;
  251.    };
  252. typedef union Multitype Multitype;
  253. /*typedef int Long;*/   /* No longer used; formerly in Namelist */
  254. struct Vardesc {  /* for Namelist */
  255.    char *name;
  256.    char *addr;
  257.    ftnlen *dims;
  258.    int  type;
  259.    };
  260. typedef struct Vardesc Vardesc;
  261. struct Namelist {
  262.    char *name;
  263.    Vardesc **vars;
  264.    int nvars;
  265.    };
  266. typedef struct Namelist Namelist;
  267. #define abs(x) ((x) >= 0 ? (x) : -(x))
  268. #define dabs(x) (doublereal)abs(x)
  269. #define min(a,b) ((a) <= (b) ? (a) : (b))
  270. #define max(a,b) ((a) >= (b) ? (a) : (b))
  271. #define dmin(a,b) (doublereal)min(a,b)
  272. #define dmax(a,b) (doublereal)max(a,b)
  273. #define bit_test(a,b)   ((a) >> (b) & 1)
  274. #define bit_clear(a,b)  ((a) & ~((uinteger)1 << (b)))
  275. #define bit_set(a,b) ((a) |  ((uinteger)1 << (b)))
  276. /* procedure parameter types for -A and -C++ */
  277. #define F2C_proc_par_types 1
  278. #ifdef __cplusplus
  279. typedef int /* Unknown procedure type */ (*U_fp)(...);
  280. typedef shortint (*J_fp)(...);
  281. typedef integer (*I_fp)(...);
  282. typedef real (*R_fp)(...);
  283. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  284. typedef /* Complex */ VOID (*C_fp)(...);
  285. typedef /* Double Complex */ VOID (*Z_fp)(...);
  286. typedef logical (*L_fp)(...);
  287. typedef shortlogical (*K_fp)(...);
  288. typedef /* Character */ VOID (*H_fp)(...);
  289. typedef /* Subroutine */ int (*S_fp)(...);
  290. #else
  291. typedef int /* Unknown procedure type */ (*U_fp)();
  292. typedef shortint (*J_fp)();
  293. typedef integer (*I_fp)();
  294. typedef real (*R_fp)();
  295. typedef doublereal (*D_fp)(), (*E_fp)();
  296. typedef /* Complex */ VOID (*C_fp)();
  297. typedef /* Double Complex */ VOID (*Z_fp)();
  298. typedef logical (*L_fp)();
  299. typedef shortlogical (*K_fp)();
  300. typedef /* Character */ VOID (*H_fp)();
  301. typedef /* Subroutine */ int (*S_fp)();
  302. #endif
  303. /* E_fp is for real functions when -R is not specified */
  304. typedef VOID C_f; /* complex function */
  305. typedef VOID H_f; /* character function */
  306. typedef VOID Z_f; /* double complex function */
  307. typedef doublereal E_f; /* real function with -R not specified */
  308. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  309. #ifndef Skip_f2c_Undefs
  310. #undef cray
  311. #undef gcos
  312. #undef mc68010
  313. #undef mc68020
  314. #undef mips
  315. #undef pdp11
  316. #undef sgi
  317. #undef sparc
  318. #undef sun
  319. #undef sun2
  320. #undef sun3
  321. #undef sun4
  322. #undef u370
  323. #undef u3b
  324. #undef u3b2
  325. #undef u3b5
  326. #undef unix
  327. #undef vax
  328. #endif
  329. #endif
  330.    /*
  331.    This marks the end of the Alpha/Digital Unix version of f2c.h.
  332.    */
  333. #else
  334.    /*
  335.    The following code is the standard f2c.h header.  In this 
  336.    header, an "integer" is defined to be of type long.
  337.    
  338.    Because the code is copied verbatim, it does not follow the usual
  339.    CSPICE indentation pattern.
  340.    */
  341. /* f2c.h  --  Standard Fortran to C header file */
  342. /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  343.    - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  344. #ifndef F2C_INCLUDE
  345. #define F2C_INCLUDE
  346. typedef long int integer;
  347. typedef unsigned long uinteger;
  348. typedef char *address;
  349. typedef short int shortint;
  350. typedef float real;
  351. typedef double doublereal;
  352. typedef struct { real r, i; } complex;
  353. typedef struct { doublereal r, i; } doublecomplex;
  354. typedef long int logical;
  355. typedef short int shortlogical;
  356. typedef char logical1;
  357. typedef char integer1;
  358. #if 0 /* Adjust for integer*8. */
  359. typedef long long longint;    /* system-dependent */
  360. typedef unsigned long long ulongint;   /* system-dependent */
  361. #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
  362. #define qbit_set(a,b)   ((a) |  ((ulongint)1 << (b)))
  363. #endif
  364. #define TRUE_ (1)
  365. #define FALSE_ (0)
  366. /* Extern is for use with -E */
  367. #ifndef Extern
  368. #define Extern extern
  369. #endif
  370. /* I/O stuff */
  371. #ifdef f2c_i2
  372. /* for -i2 */
  373. typedef short flag;
  374. typedef short ftnlen;
  375. typedef short ftnint;
  376. #else
  377. typedef long int flag;
  378. typedef long int ftnlen;
  379. typedef long int ftnint;
  380. #endif
  381. /*external read, write*/
  382. typedef struct
  383. {  flag cierr;
  384.    ftnint ciunit;
  385.    flag ciend;
  386.    char *cifmt;
  387.    ftnint cirec;
  388. } cilist;
  389. /*internal read, write*/
  390. typedef struct
  391. {  flag icierr;
  392.    char *iciunit;
  393.    flag iciend;
  394.    char *icifmt;
  395.    ftnint icirlen;
  396.    ftnint icirnum;
  397. } icilist;
  398. /*open*/
  399. typedef struct
  400. {  flag oerr;
  401.    ftnint ounit;
  402.    char *ofnm;
  403.    ftnlen ofnmlen;
  404.    char *osta;
  405.    char *oacc;
  406.    char *ofm;
  407.    ftnint orl;
  408.    char *oblnk;
  409. } olist;
  410. /*close*/
  411. typedef struct
  412. {  flag cerr;
  413.    ftnint cunit;
  414.    char *csta;
  415. } cllist;
  416. /*rewind, backspace, endfile*/
  417. typedef struct
  418. {  flag aerr;
  419.    ftnint aunit;
  420. } alist;
  421. /* inquire */
  422. typedef struct
  423. {  flag inerr;
  424.    ftnint inunit;
  425.    char *infile;
  426.    ftnlen infilen;
  427.    ftnint   *inex;   /*parameters in standard's order*/
  428.    ftnint   *inopen;
  429.    ftnint   *innum;
  430.    ftnint   *innamed;
  431.    char  *inname;
  432.    ftnlen   innamlen;
  433.    char  *inacc;
  434.    ftnlen   inacclen;
  435.    char  *inseq;
  436.    ftnlen   inseqlen;
  437.    char  *indir;
  438.    ftnlen   indirlen;
  439.    char  *infmt;
  440.    ftnlen   infmtlen;
  441.    char  *inform;
  442.    ftnint   informlen;
  443.    char  *inunf;
  444.    ftnlen   inunflen;
  445.    ftnint   *inrecl;
  446.    ftnint   *innrec;
  447.    char  *inblank;
  448.    ftnlen   inblanklen;
  449. } inlist;
  450. #define VOID void
  451. union Multitype { /* for multiple entry points */
  452.    integer1 g;
  453.    shortint h;
  454.    integer i;
  455.    /* longint j; */
  456.    real r;
  457.    doublereal d;
  458.    complex c;
  459.    doublecomplex z;
  460.    };
  461. typedef union Multitype Multitype;
  462. /*typedef long int Long;*/ /* No longer used; formerly in Namelist */
  463. struct Vardesc {  /* for Namelist */
  464.    char *name;
  465.    char *addr;
  466.    ftnlen *dims;
  467.    int  type;
  468.    };
  469. typedef struct Vardesc Vardesc;
  470. struct Namelist {
  471.    char *name;
  472.    Vardesc **vars;
  473.    int nvars;
  474.    };
  475. typedef struct Namelist Namelist;
  476. #define abs(x) ((x) >= 0 ? (x) : -(x))
  477. #define dabs(x) (doublereal)abs(x)
  478. #define min(a,b) ((a) <= (b) ? (a) : (b))
  479. #define max(a,b) ((a) >= (b) ? (a) : (b))
  480. #define dmin(a,b) (doublereal)min(a,b)
  481. #define dmax(a,b) (doublereal)max(a,b)
  482. #define bit_test(a,b)   ((a) >> (b) & 1)
  483. #define bit_clear(a,b)  ((a) & ~((uinteger)1 << (b)))
  484. #define bit_set(a,b) ((a) |  ((uinteger)1 << (b)))
  485. /* procedure parameter types for -A and -C++ */
  486. #define F2C_proc_par_types 1
  487. #ifdef __cplusplus
  488. typedef int /* Unknown procedure type */ (*U_fp)(...);
  489. typedef shortint (*J_fp)(...);
  490. typedef integer (*I_fp)(...);
  491. typedef real (*R_fp)(...);
  492. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  493. typedef /* Complex */ VOID (*C_fp)(...);
  494. typedef /* Double Complex */ VOID (*Z_fp)(...);
  495. typedef logical (*L_fp)(...);
  496. typedef shortlogical (*K_fp)(...);
  497. typedef /* Character */ VOID (*H_fp)(...);
  498. typedef /* Subroutine */ int (*S_fp)(...);
  499. #else
  500. typedef int /* Unknown procedure type */ (*U_fp)();
  501. typedef shortint (*J_fp)();
  502. typedef integer (*I_fp)();
  503. typedef real (*R_fp)();
  504. typedef doublereal (*D_fp)(), (*E_fp)();
  505. typedef /* Complex */ VOID (*C_fp)();
  506. typedef /* Double Complex */ VOID (*Z_fp)();
  507. typedef logical (*L_fp)();
  508. typedef shortlogical (*K_fp)();
  509. typedef /* Character */ VOID (*H_fp)();
  510. typedef /* Subroutine */ int (*S_fp)();
  511. #endif
  512. /* E_fp is for real functions when -R is not specified */
  513. typedef VOID C_f; /* complex function */
  514. typedef VOID H_f; /* character function */
  515. typedef VOID Z_f; /* double complex function */
  516. typedef doublereal E_f; /* real function with -R not specified */
  517. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  518. #ifndef Skip_f2c_Undefs
  519. #undef cray
  520. #undef gcos
  521. #undef mc68010
  522. #undef mc68020
  523. #undef mips
  524. #undef pdp11
  525. #undef sgi
  526. #undef sparc
  527. #undef sun
  528. #undef sun2
  529. #undef sun3
  530. #undef sun4
  531. #undef u370
  532. #undef u3b
  533. #undef u3b2
  534. #undef u3b5
  535. #undef unix
  536. #undef vax
  537. #endif
  538. #endif
  539.    #endif