home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / struct / def.h < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  3.7 KB  |  119 lines

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