[project @ 1996-01-09 18:40:14 by partain]
[ghc-hetmet.git] / ghc / utils / ugen / tree.c
1 #include "id.h"
2 #include "tree.h"
3
4 extern char *malloc();
5
6 struct Stypdef {
7         Ttree tag;
8         id Xgtid;
9         tree Xgtdeflist;
10 };
11
12 struct Sdeflist {
13         Ttree tag;
14         tree Xgdeflist;
15         tree Xgdef;
16 };
17
18 struct Sdef {
19         Ttree tag;
20         id Xgdid;
21         tree Xgditemlist;
22 };
23
24 struct Sitemlist {
25         Ttree tag;
26         tree Xgitemlist;
27         tree Xgitem;
28 };
29
30 struct Semitemlist {
31         Ttree tag;
32 };
33
34 struct Sitem {
35         Ttree tag;
36         id Xgitemfunid;
37         id Xgitemtypid;
38 };
39
40 Ttree ttree(t)
41  tree t;
42 {
43         return(t -> tag);
44 }
45
46
47 /************** typdef ******************/
48
49 tree mktypdef(PPgtid, PPgtdeflist)
50  id PPgtid;
51  tree PPgtdeflist;
52 {
53         register struct Stypdef *pp =
54                 (struct Stypdef *) malloc(sizeof(struct Stypdef));
55         pp -> tag = typdef;
56         pp -> Xgtid = PPgtid;
57         pp -> Xgtdeflist = PPgtdeflist;
58         return((tree)pp);
59 }
60
61 id *Rgtid(t)
62  struct Stypdef *t;
63 {
64         if(t -> tag != typdef)
65                 printf("gtid: illegal selection; was %d\n", t -> tag);
66         return(& t -> Xgtid);
67 }
68
69 tree *Rgtdeflist(t)
70  struct Stypdef *t;
71 {
72         if(t -> tag != typdef)
73                 printf("gtdeflist: illegal selection; was %d\n", t -> tag);
74         return(& t -> Xgtdeflist);
75 }
76
77 /************** deflist ******************/
78
79 tree mkdeflist(PPgdeflist, PPgdef)
80  tree PPgdeflist;
81  tree PPgdef;
82 {
83         register struct Sdeflist *pp =
84                 (struct Sdeflist *) malloc(sizeof(struct Sdeflist));
85         pp -> tag = deflist;
86         pp -> Xgdeflist = PPgdeflist;
87         pp -> Xgdef = PPgdef;
88         return((tree)pp);
89 }
90
91 tree *Rgdeflist(t)
92  struct Sdeflist *t;
93 {
94         if(t -> tag != deflist)
95                 printf("gdeflist: illegal selection; was %d\n", t -> tag);
96         return(& t -> Xgdeflist);
97 }
98
99 tree *Rgdef(t)
100  struct Sdeflist *t;
101 {
102         if(t -> tag != deflist)
103                 printf("gdef: illegal selection; was %d\n", t -> tag);
104         return(& t -> Xgdef);
105 }
106
107 /************** def ******************/
108
109 tree mkdef(PPgdid, PPgditemlist)
110  id PPgdid;
111  tree PPgditemlist;
112 {
113         register struct Sdef *pp =
114                 (struct Sdef *) malloc(sizeof(struct Sdef));
115         pp -> tag = def;
116         pp -> Xgdid = PPgdid;
117         pp -> Xgditemlist = PPgditemlist;
118         return((tree)pp);
119 }
120
121 id *Rgdid(t)
122  struct Sdef *t;
123 {
124         if(t -> tag != def)
125                 printf("gdid: illegal selection; was %d\n", t -> tag);
126         return(& t -> Xgdid);
127 }
128
129 tree *Rgditemlist(t)
130  struct Sdef *t;
131 {
132         if(t -> tag != def)
133                 printf("gditemlist: illegal selection; was %d\n", t -> tag);
134         return(& t -> Xgditemlist);
135 }
136
137 /************** itemlist ******************/
138
139 tree mkitemlist(PPgitemlist, PPgitem)
140  tree PPgitemlist;
141  tree PPgitem;
142 {
143         register struct Sitemlist *pp =
144                 (struct Sitemlist *) malloc(sizeof(struct Sitemlist));
145         pp -> tag = itemlist;
146         pp -> Xgitemlist = PPgitemlist;
147         pp -> Xgitem = PPgitem;
148         return((tree)pp);
149 }
150
151 tree *Rgitemlist(t)
152  struct Sitemlist *t;
153 {
154         if(t -> tag != itemlist)
155                 printf("gitemlist: illegal selection; was %d\n", t -> tag);
156         return(& t -> Xgitemlist);
157 }
158
159 tree *Rgitem(t)
160  struct Sitemlist *t;
161 {
162         if(t -> tag != itemlist)
163                 printf("gitem: illegal selection; was %d\n", t -> tag);
164         return(& t -> Xgitem);
165 }
166
167 /************** emitemlist ******************/
168
169 tree mkemitemlist()
170 {
171         register struct Semitemlist *pp =
172                 (struct Semitemlist *) malloc(sizeof(struct Semitemlist));
173         pp -> tag = emitemlist;
174         return((tree)pp);
175 }
176
177 /************** item ******************/
178
179 tree mkitem(PPgitemfunid, PPgitemtypid)
180  id PPgitemfunid;
181  id PPgitemtypid;
182 {
183         register struct Sitem *pp =
184                 (struct Sitem *) malloc(sizeof(struct Sitem));
185         pp -> tag = item;
186         pp -> Xgitemfunid = PPgitemfunid;
187         pp -> Xgitemtypid = PPgitemtypid;
188         return((tree)pp);
189 }
190
191 id *Rgitemfunid(t)
192  struct Sitem *t;
193 {
194         if(t -> tag != item)
195                 printf("gitemfunid: illegal selection; was %d\n", t -> tag);
196         return(& t -> Xgitemfunid);
197 }
198
199 id *Rgitemtypid(t)
200  struct Sitem *t;
201 {
202         if(t -> tag != item)
203                 printf("gitemtypid: illegal selection; was %d\n", t -> tag);
204         return(& t -> Xgitemtypid);
205 }