Skip to content
Snippets Groups Projects
f2c.h 9.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • Mark Spencer's avatar
    Mark Spencer committed
    /*
    
    $Log$
    
    Revision 1.15  2004/06/26 03:50:14  markster
    Merge source cleanups (bug #1911)
    
    
    Revision 1.14  2003/02/12 13:59:15  matteo
    mer feb 12 14:56:57 CET 2003
    
    Revision 1.1.1.1  2003/02/12 13:59:15  matteo
    mer feb 12 14:56:57 CET 2003
    
    Mark Spencer's avatar
    Mark Spencer committed
    
    Revision 1.2  2000/01/05 08:20:39  markster
    Some OSS fixes and a few lpc changes to make it actually work
    
     * Revision 1.2  1996/08/20  20:26:28  jaf
     * Any typedef defining a type that was used in lpc10_encoder_state or
     * lpc10_decoder_state struct's was commented out here and added to
     * lpc10.h.
     *
     * Revision 1.1  1996/08/19  22:32:13  jaf
     * Initial revision
     *
    
    */
    
    /*
     * f2c.h
     *
     * SCCS ID:  @(#)f2c.h 1.2 96/05/19
     */
    
    /* f2c.h  --  Standard Fortran to C header file */
    
    /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
    
    	- From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
    
    #ifndef F2C_INCLUDE
    #define F2C_INCLUDE
    
    #include "lpc10.h"
    
    /*typedef long int integer;*/
    /*typedef INT32 integer;*/
    /*typedef short int shortint;*/
    /*typedef INT16 shortint;*/
    /*typedef float real;*/
    /* doublereal only used for function arguments to sqrt, exp, etc. */
    typedef double doublereal;
    /* 32 bits seems wasteful, but there really aren't that many logical
     * variables around, and making them 32 bits could avoid word
     * alignment problems, perhaps.  */
    /*typedef long int logical;*/
    /*typedef INT32 logical;*/
    /* The following types are not used in the translated C code for the
     * LPC-10 coder, but they might be needed by the definitions down
     * below, so they don't cause compilation errors.  */
    typedef char *address;
    typedef struct { real r, i; } complex;
    typedef struct { doublereal r, i; } doublecomplex;
    typedef short int shortlogical;
    typedef char logical1;
    typedef char integer1;
    /* typedef long long longint; */ /* system-dependent */
    
    #define TRUE_ (1)
    #define FALSE_ (0)
    
    /* Extern is for use with -E */
    #ifndef Extern
    #define Extern extern
    #endif
    
    /* I/O stuff */
    
    #ifdef f2c_i2
    /* for -i2 */
    typedef short flag;
    typedef short ftnlen;
    typedef short ftnint;
    #else
    typedef long int flag;
    typedef long int ftnlen;
    typedef long int ftnint;
    #endif
    
    /*external read, write*/
    typedef struct
    {	flag cierr;
    	ftnint ciunit;
    	flag ciend;
    	char *cifmt;
    	ftnint cirec;
    } cilist;
    
    /*internal read, write*/
    typedef struct
    {	flag icierr;
    	char *iciunit;
    	flag iciend;
    	char *icifmt;
    	ftnint icirlen;
    	ftnint icirnum;
    } icilist;
    
    /*open*/
    typedef struct
    {	flag oerr;
    	ftnint ounit;
    	char *ofnm;
    	ftnlen ofnmlen;
    	char *osta;
    	char *oacc;
    	char *ofm;
    	ftnint orl;
    	char *oblnk;
    } olist;
    
    /*close*/
    typedef struct
    {	flag cerr;
    	ftnint cunit;
    	char *csta;
    } cllist;
    
    /*rewind, backspace, endfile*/
    typedef struct
    {	flag aerr;
    	ftnint aunit;
    } alist;
    
    /* inquire */
    typedef struct
    {	flag inerr;
    	ftnint inunit;
    	char *infile;
    	ftnlen infilen;
    	ftnint	*inex;	/*parameters in standard's order*/
    	ftnint	*inopen;
    	ftnint	*innum;
    	ftnint	*innamed;
    	char	*inname;
    	ftnlen	innamlen;
    	char	*inacc;
    	ftnlen	inacclen;
    	char	*inseq;
    	ftnlen	inseqlen;
    	char 	*indir;
    	ftnlen	indirlen;
    	char	*infmt;
    	ftnlen	infmtlen;
    	char	*inform;
    	ftnint	informlen;
    	char	*inunf;
    	ftnlen	inunflen;
    	ftnint	*inrecl;
    	ftnint	*innrec;
    	char	*inblank;
    	ftnlen	inblanklen;
    } inlist;
    
    #define VOID void
    
    union Multitype {	/* for multiple entry points */
    	integer1 g;
    	shortint h;
    	integer i;
    	/* longint j; */
    	real r;
    	doublereal d;
    	complex c;
    	doublecomplex z;
    	};
    
    typedef union Multitype Multitype;
    
    /*typedef long int Long;*/	/* No longer used; formerly in Namelist */
    
    struct Vardesc {	/* for Namelist */
    	char *name;
    	char *addr;
    	ftnlen *dims;
    	int  type;
    	};
    typedef struct Vardesc Vardesc;
    
    struct Namelist {
    	char *name;
    	Vardesc **vars;
    	int nvars;
    	};
    typedef struct Namelist Namelist;
    
    #define abs(x) ((x) >= 0 ? (x) : -(x))
    #define dabs(x) (doublereal)abs(x)
    #define min(a,b) ((a) <= (b) ? (a) : (b))
    #define max(a,b) ((a) >= (b) ? (a) : (b))
    #define dmin(a,b) (doublereal)min(a,b)
    #define dmax(a,b) (doublereal)max(a,b)
    
    /* procedure parameter types for -A and -C++ */
    
    #define F2C_proc_par_types 1
    #ifdef __cplusplus
    typedef int /* Unknown procedure type */ (*U_fp)(...);
    typedef shortint (*J_fp)(...);
    typedef integer (*I_fp)(...);
    typedef real (*R_fp)(...);
    typedef doublereal (*D_fp)(...), (*E_fp)(...);
    typedef /* Complex */ VOID (*C_fp)(...);
    typedef /* Double Complex */ VOID (*Z_fp)(...);
    typedef logical (*L_fp)(...);
    typedef shortlogical (*K_fp)(...);
    typedef /* Character */ VOID (*H_fp)(...);
    typedef /* Subroutine */ int (*S_fp)(...);
    #else
    
    typedef int /* Unknown procedure type */ (*U_fp)(VOID);
    typedef shortint (*J_fp)(VOID);
    typedef integer (*I_fp)(VOID);
    typedef real (*R_fp)(VOID);
    typedef doublereal (*D_fp)(VOID), (*E_fp)(VOID);
    typedef /* Complex */ VOID (*C_fp)(VOID);
    typedef /* Double Complex */ VOID (*Z_fp)(VOID);
    typedef logical (*L_fp)(VOID);
    typedef shortlogical (*K_fp)(VOID);
    typedef /* Character */ VOID (*H_fp)(VOID);
    typedef /* Subroutine */ int (*S_fp)(VOID);
    
    Mark Spencer's avatar
    Mark Spencer committed
    #endif
    /* E_fp is for real functions when -R is not specified */
    typedef VOID C_f;	/* complex function */
    typedef VOID H_f;	/* character function */
    typedef VOID Z_f;	/* double complex function */
    typedef doublereal E_f;	/* real function with -R not specified */
    
    /* undef any lower-case symbols that your C compiler predefines, e.g.: */
    
    #ifndef Skip_f2c_Undefs
    #undef cray
    #undef gcos
    #undef mc68010
    #undef mc68020
    #undef mips
    #undef pdp11
    #undef sgi
    #undef sparc
    #undef sun
    #undef sun2
    #undef sun3
    #undef sun4
    #undef u370
    #undef u3b
    #undef u3b2
    #undef u3b5
    #undef unix
    #undef vax
    #endif
    
    
    #ifdef KR_headers
    extern integer pow_ii(ap, bp);
    extern double r_sign(a,b);
    extern integer i_nint(x);
    #else
    extern integer pow_ii(integer *ap, integer *bp);
    extern double r_sign(real *a, real *b);
    extern integer i_nint(real *x);
    
    #endif
    #ifdef P_R_O_T_O_T_Y_P_E_S
    extern int bsynz_(real *coef, integer *ip, integer *iv, 
                      real *sout, real *rms, real *ratio, real *g2pass,
                      struct lpc10_decoder_state *st);
    extern int chanwr_(integer *order, integer *ipitv, integer *irms,
                       integer *irc, integer *ibits, struct lpc10_encoder_state *st);
    extern int chanrd_(integer *order, integer *ipitv, integer *irms,
                       integer *irc, integer *ibits);
    extern int chanwr_0_(int n__, integer *order, integer *ipitv, 
                         integer *irms, integer *irc, integer *ibits,
                         struct lpc10_encoder_state *st);
    extern int dcbias_(integer *len, real *speech, real *sigout);
    extern int decode_(integer *ipitv, integer *irms, integer *irc, 
                       integer *voice, integer *pitch, real *rms,
                       real *rc, struct lpc10_decoder_state *st);
    extern int deemp_(real *x, integer *n, struct lpc10_decoder_state *st);
    extern int difmag_(real *speech, integer *lpita, integer *tau, integer *ltau,
                       integer *maxlag, real *amdf, integer *minptr, integer *maxptr);
    extern int dyptrk_(real *amdf, integer *ltau, integer *
                       minptr, integer *voice, integer *pitch, integer *midx,
                       struct lpc10_encoder_state *st);
    extern int encode_(integer *voice, integer *pitch, real *rms, real *rc,
                       integer *ipitch, integer *irms, integer *irc);
    extern int energy_(integer *len, real *speech, real *rms);
    extern int ham84_(integer *input, integer *output, integer *errcnt);
    extern int hp100_(real *speech, integer *start, integer *end,
    		  struct lpc10_encoder_state *st);
    extern int inithp100_(void);
    extern int invert_(integer *order, real *phi, real *psi, real *rc);
    extern int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass);
    extern int ivfilt_(real *lpbuf, real *ivbuf, integer *len, integer *nsamp, real *ivrc);
    extern int lpcdec_(integer *bits, real *speech);
    extern int initlpcdec_(void);
    extern int lpcenc_(real *speech, integer *bits);
    extern int initlpcenc_(void);
    extern int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *nsamp);
    extern integer median_(integer *d1, integer *d2, integer *d3);
    extern int mload_(integer *order, integer *awins, integer *awinf, real *speech, real *phi, real *psi);
    extern int onset_(real *pebuf, integer *osbuf, integer *osptr, integer *oslen, integer *sbufl, integer *sbufh, integer *lframe, struct lpc10_encoder_state *st);
    extern int pitsyn_(integer *order, integer *voice, integer *pitch, real *rms, real *rc, integer *lframe, integer *ivuv, integer *ipiti, real *rmsi, real *rci, integer *nout, real *ratio, struct lpc10_decoder_state *st);
    extern int placea_(integer *ipitch, integer *voibuf, integer *obound, integer *af, integer *vwin, integer *awin, integer *ewin, integer *lframe, integer *maxwin);
    extern int placev_(integer *osbuf, integer *osptr, integer *oslen, integer *obound, integer *vwin, integer *af, integer *lframe, integer *minwin, integer *maxwin, integer *dvwinl, integer *dvwinh);
    extern int preemp_(real *inbuf, real *pebuf, integer *nsamp, real *coef, real *z__);
    extern int prepro_(real *speech, integer *length,
    		   struct lpc10_encoder_state *st);
    extern int decode_(integer *ipitv, integer *irms, integer *irc, integer *voice, integer *pitch, real *rms, real *rc, struct lpc10_decoder_state *st);
    extern integer random_(struct lpc10_decoder_state *st);
    extern int rcchk_(integer *order, real *rc1f, real *rc2f);
    extern int synths_(integer *voice, integer *pitch, real *rms, real *rc, real *speech, integer *k, struct lpc10_decoder_state *st);
    extern int tbdm_(real *speech, integer *lpita, integer *tau, integer *ltau, real *amdf, integer *minptr, integer *maxptr, integer *mintau);
    extern int voicin_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd, integer *mintau, real *ivrc, integer *obound, integer *voibuf, integer *af, struct lpc10_encoder_state *st);
    extern int vparms_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *dither, integer *mintau, integer *zc, integer *lbe, integer *fbe, real *qs, real *rc1, real *ar_b__, real *ar_f__);
    
    
    Mark Spencer's avatar
    Mark Spencer committed
    #endif
    
    
    
    #endif /* ! defined F2C_INCLUDE */