Annotation of 43BSD/usr.bin/struct/def.h, revision 1.1.1.1

1.1       root        1: /*     def.h   4.2     83/08/11        */
                      2: 
                      3: #define ASSERT(P,R)    {if (!(P)) {fprintf(stderr,"failed assertion in routine R: P\n"); abort();}}
                      4: 
                      5: extern int routnum, routerr;
                      6: extern long rtnbeg;            /* number of chars up to beginnine of curernt routing */
                      7: extern int **graph, nodenum;
                      8: extern int stopflg;            /* turns off generation of stop statements */
                      9: 
                     10: #define TRUE 1
                     11: #define FALSE 0
                     12: #define LOGICAL int
                     13: #define VERT int
                     14: #define DEFINED(v)     (v >= 0)
                     15: #define UNDEFINED      -1
                     16: 
                     17: /* node types */
                     18: #define STLNVX         0
                     19: #define IFVX           1
                     20: #define DOVX           2
                     21: #define IOVX           3
                     22: #define FMTVX          4
                     23: #define COMPVX         5
                     24: #define ASVX           6
                     25: #define ASGOVX         7
                     26: #define LOOPVX         8
                     27: #define WHIVX          9
                     28: #define UNTVX          10
                     29: #define ITERVX         11
                     30: #define THENVX         12
                     31: #define STOPVX         13
                     32: #define RETVX          14
                     33: #define DUMVX          15
                     34: #define GOVX           16
                     35: #define BRKVX          17
                     36: #define NXTVX          18
                     37: #define SWCHVX         19
                     38: #define ACASVX         20
                     39: #define ICASVX         21
                     40: 
                     41: #define TYPENUM        22
                     42: 
                     43: 
                     44: extern int hascom[TYPENUM];            /* FALSE for types with no comments, 2 otherwise */
                     45: extern int nonarcs[TYPENUM];           /* number of wds per node other than arcs */
                     46: extern VERT *arc(), *lchild();
                     47: extern int *vxpart(), *negpart(), *predic(), *expres(), *level(), *stlfmt();
                     48: /* node parts */
                     49: #define FIXED 4                /* number of wds needed in every node */
                     50: #define NTYPE(v)       graph[v][0]
                     51: #define BEGCOM(v)      graph[v][1]
                     52: #define RSIB(v)        graph[v][2]
                     53: #define REACH(v)       graph[v][3]
                     54: #define LCHILD(v,i)    *lchild(v,i)
                     55: #define CHILDNUM(v)    childper[NTYPE(v)]
                     56: #define ARC(v,i)       *arc(v,i)
                     57: #define ARCNUM(v)      *((arcsper[NTYPE(v)] >= 0) ? &arcsper[NTYPE(v)]: &graph[v][-arcsper[NTYPE(v)]])
                     58: 
                     59: /* STLNVX, FMTVX parts */
                     60: #define BEGCODE(v)     *stlfmt(v,0)            /* 1st char of line on disk or address of string */
                     61: #define ONDISK(v)      *stlfmt(v,1)            /* FALSE if in core,# of lines on disk otherwise */
                     62: #define CODELINES(v)           *vxpart(v,STLNVX,2)             /* # of statements stored in node */
                     63: 
                     64: /* IOVX parts */
                     65: #define FMTREF(v)      *vxpart(v,IOVX,0)       /* FMTVX associated with i/o statememt */
                     66: #define PRERW(v)       *vxpart(v,IOVX,1)       /* string occurring in i/o statement before parts with labels */
                     67: #define POSTRW(v)      *vxpart(v,IOVX,2)       /* string occurring in i/o statement after parts wih labels */
                     68: #define ENDEQ  1               /* arc number associated with endeq */
                     69: #define ERREQ  2               /* arc number associated wth erreq */
                     70: 
                     71: /* ITERVX parts */
                     72: #define NXT(v) *vxpart(v,ITERVX,0)             /* THENVX containing condition for iteration for WHILE or UNTIL */
                     73: #define FATH(v) *vxpart(v,ITERVX,1)            /* father of v */
                     74: #define LPRED(v) *vxpart(v,ITERVX,2)           /* loop predicate for WHILE, UNTIL */
                     75: 
                     76: /*DOVX parts */
                     77: #define INC(v) *vxpart(v,DOVX,0)               /* string for iteration condition of DO */
                     78: 
                     79: /* IFVX,THENVX parts */
                     80: #define PRED(v)                *predic(v)      /* string containing predicate */
                     81: #define NEG(v)                 *negpart(v)             /* TRUE if predicate negated */
                     82: #define THEN   0               /* arc number of true branch */
                     83: #define ELSE 1         /* arc number of false branch */
                     84: 
                     85: /* miscellaneous parts */
                     86: #define EXP(v) *expres(v)              /* expression - ASVX, COMPVX, ASGOVX, SWCHVX, ICASVX */
                     87: #define LABREF(v)      *vxpart(v,ASVX,1)               /* node referred to by label in ASSIGN statement */
                     88: 
                     89: 
                     90: /* BRKVX, NXTVX parts */
                     91: #define LEVEL(v)       *level(v)
                     92: 
                     93: /* also COMPVX, ASGOVX, SWCHVX, and DUMVX contain wd for number of arcs */
                     94: /* location of this wd specified by negative entry in arcsper */
                     95: extern int arcsper[TYPENUM];
                     96: 
                     97: /* also nodes contain wds for children as specified by childper */
                     98: extern childper[TYPENUM];
                     99: 
                    100: 
                    101: /* switches */
                    102: extern int intcase, arbcase, whiloop, invelse, exitsize, maxnode,
                    103:        maxhash, progress, labinit, labinc, inputform, debug,levbrk,levnxt,mkunt;
                    104: 
                    105: /* arrays */
                    106: extern int *after;
                    107: extern char *typename[];
                    108: 
                    109: struct list {
                    110:        VERT elt;
                    111:        struct list *nxtlist;
                    112:        };
                    113: struct list *append(), *consl();
                    114: extern VERT retvert, stopvert; /* specifies unique return and stop vertices */
                    115: extern VERT START;
                    116: extern int progtype;           /* type of program - main or sub or blockdata */
                    117: #define sub    1
                    118: #define blockdata      2
                    119: 
                    120: extern FILE *infd, *debfd, *outfd;

unix.superglobalmegacorp.com

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