Annotation of 43BSD/lib/mip/manifest.h, revision 1.1

1.1     ! root        1: /*     manifest.h      4.1     85/03/19        */
        !             2: 
        !             3: #ifndef _MANIFEST_
        !             4: #define        _MANIFEST_
        !             5: 
        !             6: #include <stdio.h>
        !             7: #include "pcclocal.h"
        !             8: #include "config.h"
        !             9: 
        !            10: #define DSIZE  (MAXOP+1)       /* DSIZE is the size of the dope array */
        !            11: 
        !            12: #define NOLAB  (-1)            /* no label with constant */
        !            13: 
        !            14: /*
        !            15:  * Node types
        !            16:  */
        !            17: #define LTYPE  02              /* leaf */
        !            18: #define UTYPE  04              /* unary */
        !            19: #define BITYPE 010             /* binary */
        !            20: 
        !            21: /*
        !            22:  * Bogus type values
        !            23:  */
        !            24: #define TNULL  PTR             /* pointer to UNDEF */
        !            25: #define TVOID  FTN             /* function returning UNDEF (for void) */
        !            26: 
        !            27: /*
        !            28:  * Type packing constants
        !            29:  */
        !            30: #define TMASK  060             /* mask for 1st component of compound type */
        !            31: #define TMASK1 0300            /* mask for 2nd component of compound type */
        !            32: #define TMASK2 0360            /* mask for 3rd component of compound type */
        !            33: #define BTMASK 017             /* basic type mask */
        !            34: #define BTSHIFT        4               /* basic type shift */
        !            35: #define TSHIFT 2               /* shift count to get next type component */
        !            36: 
        !            37: /*
        !            38:  * Type manipulation macros
        !            39:  */
        !            40: #define MODTYPE(x,y)   x = ((x)&(~BTMASK))|(y) /* set basic type of x to y */
        !            41: #define BTYPE(x)       ((x)&BTMASK)            /* basic type of x */
        !            42: #define ISUNSIGNED(x)  ((x)<=ULONG&&(x)>=UCHAR)
        !            43: #define UNSIGNABLE(x)  ((x)<=LONG&&(x)>=CHAR)
        !            44: #define ENUNSIGN(x)    ((x)+(UNSIGNED-INT))
        !            45: #define DEUNSIGN(x)    ((x)+(INT-UNSIGNED))
        !            46: #define ISPTR(x)       (((x)&TMASK)==PTR)
        !            47: #define ISFTN(x)       (((x)&TMASK)==FTN)      /* is x a function type */
        !            48: #define ISARY(x)       (((x)&TMASK)==ARY)      /* is x an array type */
        !            49: #define INCREF(x)      ((((x)&~BTMASK)<<TSHIFT)|PTR|((x)&BTMASK))
        !            50: #define DECREF(x)      ((((x)>>TSHIFT)&~BTMASK)|( (x)&BTMASK))
        !            51: /* advance x to a multiple of y */
        !            52: #define SETOFF(x,y)    if ((x)%(y) != 0) (x) = (((x)/(y) + 1) * (y))
        !            53: /* can y bits be added to x without overflowing z */
        !            54: #define NOFIT(x,y,z)   (((x)%(z) + (y)) > (z))
        !            55: 
        !            56: /*
        !            57:  * Pack and unpack field descriptors (size and offset)
        !            58:  */
        !            59: #define PKFIELD(s,o)   (((o)<<6)| (s))
        !            60: #define UPKFSZ(v)      ((v) &077)
        !            61: #define UPKFOFF(v)     ((v)>>6)
        !            62: 
        !            63: /*
        !            64:  * Operator information
        !            65:  */
        !            66: #define TYFLG  016
        !            67: #define ASGFLG 01
        !            68: #define LOGFLG 020
        !            69: 
        !            70: #define SIMPFLG        040
        !            71: #define COMMFLG        0100
        !            72: #define DIVFLG 0200
        !            73: #define FLOFLG 0400
        !            74: #define LTYFLG 01000
        !            75: #define CALLFLG        02000
        !            76: #define MULFLG 04000
        !            77: #define SHFFLG 010000
        !            78: #define ASGOPFLG 020000
        !            79: 
        !            80: #define SPFLG  040000
        !            81: 
        !            82: #define optype(o)      (dope[o]&TYFLG)
        !            83: #define asgop(o)       (dope[o]&ASGFLG)
        !            84: #define logop(o)       (dope[o]&LOGFLG)
        !            85: #define callop(o)      (dope[o]&CALLFLG)
        !            86: 
        !            87: /*
        !            88:  * External declarations, typedefs and the like
        !            89:  */
        !            90: #ifdef FLEXNAMES
        !            91: char   *hash();
        !            92: char   *savestr();
        !            93: char   *tstr();
        !            94: extern int tstrused;
        !            95: extern char *tstrbuf[];
        !            96: extern char **curtstr;
        !            97: #define        freetstr()      curtstr = tstrbuf, tstrused = 0
        !            98: #endif
        !            99: 
        !           100: extern int nerrors;            /* number of errors seen so far */
        !           101: extern int dope[];             /* a vector containing operator information */
        !           102: extern char *opst[];           /* a vector containing names for ops */
        !           103: 
        !           104: typedef        union ndu NODE;
        !           105: typedef        unsigned int TWORD;
        !           106: #define NIL    (NODE *)0
        !           107: 
        !           108: #ifndef ONEPASS
        !           109: #ifndef EXPR
        !           110: #define EXPR '.'
        !           111: #endif
        !           112: #ifndef BBEG
        !           113: #define BBEG '['
        !           114: #endif
        !           115: #ifndef BEND
        !           116: #define BEND ']'
        !           117: #endif
        !           118: #else
        !           119: #include "onepass.h"
        !           120: #endif
        !           121: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.