ftp.nice.ch/pub/next/unix/audio/Cmix.N.s.tar.gz#/cmix/Minc/defs.h

This is defs.h in view mode; [Download] [Up]


#include <math.h>
#include <stdio.h>

/*
 *  these are important Minc tuning parameters
 */
#define  YYLMAX	1000	  	/* maximum yacc line length          */
#define  MAXDISPARGS  500	/* max arguments passed to dispatcher*/
#define  EPS          0.0000005 /* epsilon used in float comparisons */
#define  MAXSTACK     15        /* depth of function calls as args   */
#define  HASHSIZE 107		/* number of buckets in string table */


typedef union{
	int ival;
	struct tree *trees;
	char *str;
	} YYSTYPE;

extern  flerror;        /* don't execute if set = 1 */


#define S_LOCAL	 3	/* scopes */
#define S_PARAM  4
#define S_GLOBAL 5
#define S_RESERVED  10  /* the smallest number the newscope returns */
#define T_INT	'i'     /* types */
#define T_FLOAT	'f'
#define T_COND	'?'
#define T_SCALAR 0	/* shapes */
#define T_ARRAY	 1
#define T_FUNC	 2

/* type manipulation macros;  saves bytes in symbol tables */
#define mktype(type, shape) ((type)|(shape)<<8)
#define xtype(type) (type&0177)
#define xshape(type) ((type>>8)&03)

typedef 
struct symbol {			/* symbol table entries */
	struct symbol  *next;	/* next entry on hash chain */
	char *name;	 	/* string name */
	short scope; 		/* scope */
	short type;		/* type */
	union {
		double	fval;	/* floating point value */
		int	ival;	/* integer representation */
		double  (*fnct) ();  /* built in functions */
	} v;

#ifdef never
/* the following are not use at this moment */
	short defined;		/* set when function defined */
	short offset; 		/* offset in activation frame */
	SYMBOL *list; 	/* next parameter in parameter list */
#endif
}SYMBOL;


extern char *emalloc();
extern SYMBOL *lookup();
extern SYMBOL *install();
extern SYMBOL *new();
extern char *strsave();

/*
*   intermediate representation
*/


#define	PROC	20
#define	SEQ	21			
#define LABEL	22
#define JUMP	23
#define CJUMP	24
#define OP 	25
#define UNOP	26
#define CONVERT 27
#define FETCH	28
#define STORE	29
#define MOVE	30
#define ESEG	31
#define BOOL	32
#define NAME	33
#define CONST   34
#define CONSTF	35
#define ALLOC	36	
#define TEMP	37
#define CALL	38	
#define CAND	39
#define NOT	40
#define REL	41
#define ARG	42
#define NOARGS 	43	
#define PLUS	44	
#define MINUS	45
#define MUL	46
#define DIV	47
#define MOD	48
#define AND	49	  
#define OR	50
#define LSHIFT	51
#define RSHIFT	52
#define XOR	53
#define EQ	54
#define NEQ	55
#define LT	56
#define GT	57
#define GEQ	58
#define NEG	59
#define COMP	60
#define FREE	66
#define POW	67
#define COR     68
#define TIF	69
#define TWHILE  70
#define TFOR	71
#define TIFELSE 72
#define LEQ     73
#define CVTCO   74
#define CVTCL	75
#define CVTOL	76
#define CVTOC	77
#define CVTLC	78
#define CVTLO	79
#define TNOOP   80




typedef struct tree {
	char	op;	/* the operator */
	char 	kind;   /* what kind of node is this */
	char	type;	/* at execution time: type of value*/
	union {
		char   *fctname;    /* name to  dispatcher function */
		
		} x;
	union {
		double  fval;
		int 	ival;
		
	}v;
	 union {
		struct tree  *child[4];
		SYMBOL *sym;
		int  	ival;
		float 	fval;
	}u;
}*Tree;


extern Tree  	program;        /* return value of yyparse           */ 	



These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.