Merge branch 'lib' into wip
[nit.git] / c_src / metamodel___virtualtype._sep.c
1 /* This C file is generated by NIT to compile module metamodel___virtualtype. */
2 #include "metamodel___virtualtype._sep.h"
3 val_t metamodel___virtualtype___MMGlobalProperty___is_virtual_type(val_t p0){
4 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_metamodel___virtualtype;
9 fra.me.line = 24;
10 fra.me.meth = LOCATE_metamodel___virtualtype___MMGlobalProperty___is_virtual_type;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 2;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[1] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 /* ./metamodel//virtualtype.nit:25 */
17 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
18 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
19 goto label1;
20 label1: while(0);
21 stack_frame_head = fra.me.prev;
22 return REGB0;
23 }
24 val_t metamodel___virtualtype___MMTypeProperty___stype_for(val_t p0, val_t p1){
25 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
26 val_t REGB0;
27 val_t tmp;
28 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
29 fra.me.file = LOCATE_metamodel___virtualtype;
30 fra.me.line = 31;
31 fra.me.meth = LOCATE_metamodel___virtualtype___MMTypeProperty___stype_for;
32 fra.me.has_broke = 0;
33 fra.me.REG_size = 4;
34 fra.me.REG[0] = NIT_NULL;
35 fra.me.REG[1] = NIT_NULL;
36 fra.me.REG[2] = NIT_NULL;
37 fra.me.REG[3] = NIT_NULL;
38 fra.me.REG[0] = p0;
39 fra.me.REG[1] = p1;
40 /* ./metamodel//virtualtype.nit:34 */
41 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
42 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
43 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
44 /* ./metamodel//virtualtype.nit:35 */
45 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
46 if (UNTAG_Bool(REGB0)) {
47 } else {
48 nit_abort("Assert failed", NULL, LOCATE_metamodel___virtualtype, 35);
49 }
50 /* ./metamodel//virtualtype.nit:36 */
51 fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___real_stype_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
52 goto label1;
53 label1: while(0);
54 stack_frame_head = fra.me.prev;
55 return fra.me.REG[1];
56 }
57 val_t metamodel___virtualtype___MMTypeProperty___real_stype_for(val_t p0, val_t p1){
58 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
59 val_t REGB0;
60 val_t REGB1;
61 val_t tmp;
62 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
63 fra.me.file = LOCATE_metamodel___virtualtype;
64 fra.me.line = 42;
65 fra.me.meth = LOCATE_metamodel___virtualtype___MMTypeProperty___real_stype_for;
66 fra.me.has_broke = 0;
67 fra.me.REG_size = 4;
68 fra.me.REG[0] = NIT_NULL;
69 fra.me.REG[1] = NIT_NULL;
70 fra.me.REG[2] = NIT_NULL;
71 fra.me.REG[3] = NIT_NULL;
72 fra.me.REG[0] = p0;
73 fra.me.REG[1] = p1;
74 /* ./metamodel//virtualtype.nit:45 */
75 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
76 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
77 if (UNTAG_Bool(REGB0)) {
78 } else {
79 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
80 if (UNTAG_Bool(REGB1)) {
81 REGB1 = TAG_Bool(false);
82 REGB0 = REGB1;
83 } else {
84 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
85 REGB0 = REGB1;
86 }
87 }
88 if (UNTAG_Bool(REGB0)) {
89 fra.me.REG[2] = NIT_NULL;
90 goto label1;
91 }
92 /* ./metamodel//virtualtype.nit:47 */
93 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
94 if (UNTAG_Bool(REGB0)) {
95 } else {
96 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 47);
97 }
98 fra.me.REG[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
99 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
100 if (UNTAG_Bool(REGB0)) {
101 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
102 if (UNTAG_Bool(REGB0)) {
103 } else {
104 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 47);
105 }
106 fra.me.REG[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
107 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
108 fra.me.REG[2] = fra.me.REG[3];
109 goto label1;
110 }
111 /* ./metamodel//virtualtype.nit:49 */
112 fra.me.REG[3] = NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(fra.me.REG[0], fra.me.REG[1]);
113 /* ./metamodel//virtualtype.nit:50 */
114 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
115 if (UNTAG_Bool(REGB0)) {
116 } else {
117 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 50);
118 }
119 fra.me.REG[0] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
120 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
121 /* ./metamodel//virtualtype.nit:52 */
122 fra.me.REG[2] = fra.me.REG[3];
123 goto label1;
124 label1: while(0);
125 stack_frame_head = fra.me.prev;
126 return fra.me.REG[2];
127 }
128 val_t metamodel___virtualtype___MMVirtualType___property(val_t p0){
129 struct {struct stack_frame_t me;} fra;
130 val_t REGB0;
131 val_t tmp;
132 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
133 fra.me.file = LOCATE_metamodel___virtualtype;
134 fra.me.line = 58;
135 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___property;
136 fra.me.has_broke = 0;
137 fra.me.REG_size = 1;
138 fra.me.REG[0] = NIT_NULL;
139 fra.me.REG[0] = p0;
140 /* ./metamodel//virtualtype.nit:58 */
141 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____property(fra.me.REG[0])!=NIT_NULL);
142 if (UNTAG_Bool(REGB0)) {
143 } else {
144 nit_abort("Uninitialized attribute %s", "_property", LOCATE_metamodel___virtualtype, 58);
145 }
146 fra.me.REG[0] = ATTR_metamodel___virtualtype___MMVirtualType____property(fra.me.REG[0]);
147 stack_frame_head = fra.me.prev;
148 return fra.me.REG[0];
149 }
150 val_t metamodel___virtualtype___MMVirtualType___recv(val_t p0){
151 struct {struct stack_frame_t me;} fra;
152 val_t REGB0;
153 val_t tmp;
154 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
155 fra.me.file = LOCATE_metamodel___virtualtype;
156 fra.me.line = 61;
157 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___recv;
158 fra.me.has_broke = 0;
159 fra.me.REG_size = 1;
160 fra.me.REG[0] = NIT_NULL;
161 fra.me.REG[0] = p0;
162 /* ./metamodel//virtualtype.nit:61 */
163 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[0])!=NIT_NULL);
164 if (UNTAG_Bool(REGB0)) {
165 } else {
166 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype, 61);
167 }
168 fra.me.REG[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[0]);
169 stack_frame_head = fra.me.prev;
170 return fra.me.REG[0];
171 }
172 void metamodel___virtualtype___MMVirtualType___init(val_t p0, val_t p1, val_t p2, int* init_table){
173 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___virtualtype___MMVirtualType].i;
174 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
175 val_t tmp;
176 if (init_table[itpos0]) return;
177 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
178 fra.me.file = LOCATE_metamodel___virtualtype;
179 fra.me.line = 64;
180 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___init;
181 fra.me.has_broke = 0;
182 fra.me.REG_size = 6;
183 fra.me.REG[0] = NIT_NULL;
184 fra.me.REG[1] = NIT_NULL;
185 fra.me.REG[2] = NIT_NULL;
186 fra.me.REG[3] = NIT_NULL;
187 fra.me.REG[4] = NIT_NULL;
188 fra.me.REG[5] = NIT_NULL;
189 fra.me.REG[0] = p0;
190 fra.me.REG[1] = p1;
191 fra.me.REG[2] = p2;
192 /* ./metamodel//virtualtype.nit:64 */
193 fra.me.REG[3] = fra.me.REG[0];
194 /* ./metamodel//virtualtype.nit:66 */
195 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
196 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
197 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
198 CALL_metamodel___type_formal___MMTypeFormal___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5], init_table);
199 /* ./metamodel//virtualtype.nit:67 */
200 ATTR_metamodel___virtualtype___MMVirtualType____property(fra.me.REG[3]) = fra.me.REG[1];
201 /* ./metamodel//virtualtype.nit:68 */
202 ATTR_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[3]) = fra.me.REG[2];
203 stack_frame_head = fra.me.prev;
204 init_table[itpos0] = 1;
205 return;
206 }
207 val_t metamodel___virtualtype___MMVirtualType___mmmodule(val_t p0){
208 struct {struct stack_frame_t me;} fra;
209 val_t REGB0;
210 val_t tmp;
211 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
212 fra.me.file = LOCATE_metamodel___virtualtype;
213 fra.me.line = 71;
214 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___mmmodule;
215 fra.me.has_broke = 0;
216 fra.me.REG_size = 1;
217 fra.me.REG[0] = NIT_NULL;
218 fra.me.REG[0] = p0;
219 /* ./metamodel//virtualtype.nit:71 */
220 REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[0])!=NIT_NULL);
221 if (UNTAG_Bool(REGB0)) {
222 } else {
223 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype, 71);
224 }
225 fra.me.REG[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[0]);
226 fra.me.REG[0] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
227 goto label1;
228 label1: while(0);
229 stack_frame_head = fra.me.prev;
230 return fra.me.REG[0];
231 }
232 val_t metamodel___virtualtype___MMVirtualType___for_module(val_t p0, val_t p1){
233 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
234 val_t REGB0;
235 val_t REGB1;
236 val_t tmp;
237 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
238 fra.me.file = LOCATE_metamodel___virtualtype;
239 fra.me.line = 73;
240 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___for_module;
241 fra.me.has_broke = 0;
242 fra.me.REG_size = 4;
243 fra.me.REG[0] = NIT_NULL;
244 fra.me.REG[1] = NIT_NULL;
245 fra.me.REG[2] = NIT_NULL;
246 fra.me.REG[3] = NIT_NULL;
247 fra.me.REG[0] = p0;
248 fra.me.REG[1] = p1;
249 /* ./metamodel//virtualtype.nit:75 */
250 fra.me.REG[2] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
251 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
252 if (UNTAG_Bool(REGB0)) {
253 } else {
254 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
255 REGB0 = REGB1;
256 }
257 if (UNTAG_Bool(REGB0)) {
258 fra.me.REG[2] = fra.me.REG[0];
259 goto label1;
260 }
261 /* ./metamodel//virtualtype.nit:76 */
262 fra.me.REG[3] = CALL_metamodel___virtualtype___MMVirtualType___recv(fra.me.REG[0])(fra.me.REG[0]);
263 fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
264 fra.me.REG[1] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
265 fra.me.REG[2] = fra.me.REG[1];
266 goto label1;
267 label1: while(0);
268 stack_frame_head = fra.me.prev;
269 return fra.me.REG[2];
270 }
271 val_t metamodel___virtualtype___MMVirtualType___not_for_self(val_t p0){
272 struct {struct stack_frame_t me;} fra;
273 val_t tmp;
274 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
275 fra.me.file = LOCATE_metamodel___virtualtype;
276 fra.me.line = 79;
277 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___not_for_self;
278 fra.me.has_broke = 0;
279 fra.me.REG_size = 1;
280 fra.me.REG[0] = NIT_NULL;
281 fra.me.REG[0] = p0;
282 /* ./metamodel//virtualtype.nit:81 */
283 fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
284 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[0])(fra.me.REG[0]);
285 goto label1;
286 label1: while(0);
287 stack_frame_head = fra.me.prev;
288 return fra.me.REG[0];
289 }
290 val_t metamodel___virtualtype___MMVirtualType___adapt_to(val_t p0, val_t p1){
291 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
292 val_t REGB0;
293 val_t tmp;
294 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
295 fra.me.file = LOCATE_metamodel___virtualtype;
296 fra.me.line = 84;
297 fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___adapt_to;
298 fra.me.has_broke = 0;
299 fra.me.REG_size = 3;
300 fra.me.REG[0] = NIT_NULL;
301 fra.me.REG[1] = NIT_NULL;
302 fra.me.REG[2] = NIT_NULL;
303 fra.me.REG[0] = p0;
304 fra.me.REG[1] = p1;
305 /* ./metamodel//virtualtype.nit:84 */
306 fra.me.REG[2] = fra.me.REG[0];
307 /* ./metamodel//virtualtype.nit:86 */
308 fra.me.REG[2] = CALL_metamodel___virtualtype___MMVirtualType___property(fra.me.REG[2])(fra.me.REG[2]);
309 fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___stype_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
310 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
311 if (UNTAG_Bool(REGB0)) {
312 } else {
313 nit_abort("Cast failed", NULL, LOCATE_metamodel___virtualtype, 86);
314 }
315 goto label1;
316 label1: while(0);
317 stack_frame_head = fra.me.prev;
318 return fra.me.REG[1];
319 }
320 val_t metamodel___virtualtype___MMLocalClass___virtual_type(val_t p0, val_t p1){
321 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
322 val_t REGB0;
323 val_t tmp;
324 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
325 fra.me.file = LOCATE_metamodel___virtualtype;
326 fra.me.line = 91;
327 fra.me.meth = LOCATE_metamodel___virtualtype___MMLocalClass___virtual_type;
328 fra.me.has_broke = 0;
329 fra.me.REG_size = 2;
330 fra.me.REG[0] = NIT_NULL;
331 fra.me.REG[1] = NIT_NULL;
332 fra.me.REG[0] = p0;
333 fra.me.REG[1] = p1;
334 /* ./metamodel//virtualtype.nit:93 */
335 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
336 /* ./metamodel//virtualtype.nit:94 */
337 REGB0 = CALL_metamodel___virtualtype___MMGlobalProperty___is_virtual_type(fra.me.REG[1])(fra.me.REG[1]);
338 if (UNTAG_Bool(REGB0)) {
339 /* ./metamodel//virtualtype.nit:95 */
340 goto label1;
341 }
342 /* ./metamodel//virtualtype.nit:97 */
343 nit_abort("Aborted", NULL, LOCATE_metamodel___virtualtype, 97);
344 label1: while(0);
345 stack_frame_head = fra.me.prev;
346 return fra.me.REG[1];
347 }
348 val_t metamodel___virtualtype___MMLocalClass___select_virtual_type(val_t p0, val_t p1){
349 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
350 val_t REGB0;
351 val_t tmp;
352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
353 fra.me.file = LOCATE_metamodel___virtualtype;
354 fra.me.line = 100;
355 fra.me.meth = LOCATE_metamodel___virtualtype___MMLocalClass___select_virtual_type;
356 fra.me.has_broke = 0;
357 fra.me.REG_size = 2;
358 fra.me.REG[0] = NIT_NULL;
359 fra.me.REG[1] = NIT_NULL;
360 fra.me.REG[0] = p0;
361 fra.me.REG[1] = p1;
362 /* ./metamodel//virtualtype.nit:103 */
363 fra.me.REG[1] = CALL_metamodel___virtualtype___MMLocalClass___virtual_type(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
364 /* ./metamodel//virtualtype.nit:104 */
365 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
366 /* ./metamodel//virtualtype.nit:105 */
367 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
368 if (UNTAG_Bool(REGB0)) {
369 } else {
370 nit_abort("Assert failed", NULL, LOCATE_metamodel___virtualtype, 105);
371 }
372 /* ./metamodel//virtualtype.nit:106 */
373 goto label1;
374 label1: while(0);
375 stack_frame_head = fra.me.prev;
376 return fra.me.REG[1];
377 }