README: document nit_env.sh
[nit.git] / c_src / ordered_tree.sep.1.c
1 #include "ordered_tree.sep.0.h"
2 /* method ordered_tree#OrderedTree#roots for (self: OrderedTree[Object]): Array[Object] */
3 val* ordered_tree___ordered_tree__OrderedTree___roots(val* self) {
4 val* var /* : Array[Object] */;
5 val* var1 /* : Array[Object] */;
6 var1 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
9 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method ordered_tree#OrderedTree#sub for (self: OrderedTree[Object]): HashMap[Object, Array[Object]] */
17 val* ordered_tree___ordered_tree__OrderedTree___sub(val* self) {
18 val* var /* : HashMap[Object, Array[Object]] */;
19 val* var1 /* : HashMap[Object, Array[Object]] */;
20 var1 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
21 if (unlikely(var1 == NULL)) {
22 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
23 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
24 fatal_exit(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method ordered_tree#OrderedTree#add for (self: OrderedTree[Object], nullable Object, Object) */
31 void ordered_tree___ordered_tree__OrderedTree___add(val* self, val* p0, val* p1) {
32 short int var /* : Bool */;
33 int cltype;
34 int idtype;
35 const struct type* type_struct;
36 const char* var_class_name;
37 short int var1 /* : Bool */;
38 int cltype2;
39 int idtype3;
40 const struct type* type_struct4;
41 const char* var_class_name5;
42 val* var_p /* var p: nullable Object */;
43 val* var_e /* var e: Object */;
44 short int var6 /* : Bool */;
45 short int var7 /* : Bool */;
46 val* var8 /* : Array[Object] */;
47 val* var10 /* : Array[Object] */;
48 val* var11 /* : HashMap[Object, Array[Object]] */;
49 val* var13 /* : HashMap[Object, Array[Object]] */;
50 short int var14 /* : Bool */;
51 val* var15 /* : HashMap[Object, Array[Object]] */;
52 val* var17 /* : HashMap[Object, Array[Object]] */;
53 val* var18 /* : nullable Object */;
54 val* var19 /* : HashMap[Object, Array[Object]] */;
55 val* var21 /* : HashMap[Object, Array[Object]] */;
56 val* var22 /* : Array[Object] */;
57 val* var_ /* var : Array[Object] */;
58 /* Covariant cast for argument 0 (p) <p0:nullable Object> isa nullable E */
59 /* <p0:nullable Object> isa nullable E */
60 type_struct = self->type->resolution_table->types[COLOR_nullable__ordered_tree__OrderedTree___35dE];
61 cltype = type_struct->color;
62 idtype = type_struct->id;
63 if(p0 == NULL) {
64 var = 1;
65 } else {
66 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
67 var = 0;
68 } else {
69 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
70 }
71 }
72 if (unlikely(!var)) {
73 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
74 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable E", var_class_name);
75 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 72);
76 fatal_exit(1);
77 }
78 /* Covariant cast for argument 1 (e) <p1:Object> isa E */
79 /* <p1:Object> isa E */
80 type_struct4 = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
81 cltype2 = type_struct4->color;
82 idtype3 = type_struct4->id;
83 if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
84 var1 = 0;
85 } else {
86 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
87 }
88 if (unlikely(!var1)) {
89 var_class_name5 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
90 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name5);
91 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 72);
92 fatal_exit(1);
93 }
94 var_p = p0;
95 var_e = p1;
96 if (var_p == NULL) {
97 var6 = 1; /* is null */
98 } else {
99 var6 = 0; /* arg is null but recv is not */
100 }
101 if (0) {
102 var7 = ((short int(*)(val* self, val* p0))((((long)var_p&3)?class_info[((long)var_p&3)]:var_p->class)->vft[COLOR_standard__kernel__Object___61d_61d]))(var_p, ((val*)NULL)); /* == on <var_p:nullable Object>*/
103 var6 = var7;
104 }
105 if (var6){
106 {
107 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
108 var10 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
109 if (unlikely(var10 == NULL)) {
110 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
111 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
112 fatal_exit(1);
113 }
114 var8 = var10;
115 RET_LABEL9:(void)0;
116 }
117 }
118 {
119 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var8, var_e); /* Direct call array#Array#add on <var8:Array[Object]>*/
120 }
121 } else {
122 {
123 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
124 var13 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
125 if (unlikely(var13 == NULL)) {
126 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
127 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
128 fatal_exit(1);
129 }
130 var11 = var13;
131 RET_LABEL12:(void)0;
132 }
133 }
134 {
135 var14 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var11, var_p);
136 }
137 if (var14){
138 {
139 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
140 var17 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
141 if (unlikely(var17 == NULL)) {
142 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
143 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
144 fatal_exit(1);
145 }
146 var15 = var17;
147 RET_LABEL16:(void)0;
148 }
149 }
150 {
151 var18 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var15, var_p);
152 }
153 {
154 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var18, var_e); /* Direct call array#Array#add on <var18:nullable Object(Array[Object])>*/
155 }
156 } else {
157 {
158 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
159 var21 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
160 if (unlikely(var21 == NULL)) {
161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
162 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
163 fatal_exit(1);
164 }
165 var19 = var21;
166 RET_LABEL20:(void)0;
167 }
168 }
169 var22 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__ordered_tree__OrderedTree___35dE]);
170 {
171 standard___standard__Array___with_capacity(var22, 1l); /* Direct call array#Array#with_capacity on <var22:Array[Object]>*/
172 }
173 var_ = var22;
174 {
175 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_e); /* Direct call array#AbstractArray#push on <var_:Array[Object]>*/
176 }
177 {
178 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var19, var_p, var_); /* Direct call hash_collection#HashMap#[]= on <var19:HashMap[Object, Array[Object]]>*/
179 }
180 }
181 }
182 RET_LABEL:;
183 }
184 /* method ordered_tree#OrderedTree#write_to for (self: OrderedTree[Object], Writer) */
185 void ordered_tree___ordered_tree__OrderedTree___standard__stream__Writable__write_to(val* self, val* p0) {
186 val* var_stream /* var stream: Writer */;
187 val* var /* : Array[Object] */;
188 val* var2 /* : Array[Object] */;
189 val* var_ /* var : Array[Object] */;
190 val* var3 /* : ArrayIterator[nullable Object] */;
191 val* var_4 /* var : ArrayIterator[Object] */;
192 short int var5 /* : Bool */;
193 val* var6 /* : nullable Object */;
194 val* var_r /* var r: Object */;
195 val* var7 /* : String */;
196 static val* varonce;
197 val* var8 /* : String */;
198 char* var9 /* : NativeString */;
199 val* var10 /* : FlatString */;
200 static val* varonce11;
201 val* var12 /* : String */;
202 char* var13 /* : NativeString */;
203 val* var14 /* : FlatString */;
204 var_stream = p0;
205 {
206 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
207 var2 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
208 if (unlikely(var2 == NULL)) {
209 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
210 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
211 fatal_exit(1);
212 }
213 var = var2;
214 RET_LABEL1:(void)0;
215 }
216 }
217 var_ = var;
218 {
219 var3 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
220 }
221 var_4 = var3;
222 for(;;) {
223 {
224 var5 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_4);
225 }
226 if (var5){
227 {
228 var6 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_4);
229 }
230 var_r = var6;
231 {
232 var7 = ordered_tree___ordered_tree__OrderedTree___display(self, var_r);
233 }
234 {
235 standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var7); /* Direct call file#FileWriter#write on <var_stream:Writer>*/
236 }
237 if (likely(varonce!=NULL)) {
238 var8 = varonce;
239 } else {
240 var9 = "\n";
241 var10 = standard___standard__NativeString___to_s_with_length(var9, 1l);
242 var8 = var10;
243 varonce = var8;
244 }
245 {
246 standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var8); /* Direct call file#FileWriter#write on <var_stream:Writer>*/
247 }
248 if (likely(varonce11!=NULL)) {
249 var12 = varonce11;
250 } else {
251 var13 = "";
252 var14 = standard___standard__NativeString___to_s_with_length(var13, 0l);
253 var12 = var14;
254 varonce11 = var12;
255 }
256 {
257 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_stream, var_r, var12); /* Direct call ordered_tree#OrderedTree#sub_write_to on <self:OrderedTree[Object]>*/
258 }
259 {
260 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[Object]>*/
261 }
262 } else {
263 goto BREAK_label;
264 }
265 }
266 BREAK_label: (void)0;
267 {
268 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_4); /* Direct call array#ArrayIterator#finish on <var_4:ArrayIterator[Object]>*/
269 }
270 RET_LABEL:;
271 }
272 /* method ordered_tree#OrderedTree#sub_write_to for (self: OrderedTree[Object], Writer, Object, String) */
273 void ordered_tree___ordered_tree__OrderedTree___sub_write_to(val* self, val* p0, val* p1, val* p2) {
274 short int var /* : Bool */;
275 int cltype;
276 int idtype;
277 const struct type* type_struct;
278 const char* var_class_name;
279 val* var_o /* var o: Writer */;
280 val* var_e /* var e: Object */;
281 val* var_prefix /* var prefix: String */;
282 val* var1 /* : HashMap[Object, Array[Object]] */;
283 val* var3 /* : HashMap[Object, Array[Object]] */;
284 short int var4 /* : Bool */;
285 short int var5 /* : Bool */;
286 val* var6 /* : HashMap[Object, Array[Object]] */;
287 val* var8 /* : HashMap[Object, Array[Object]] */;
288 val* var9 /* : nullable Object */;
289 val* var_subs /* var subs: Array[Object] */;
290 val* var10 /* : nullable Object */;
291 val* var_last /* var last: Object */;
292 val* var_ /* var : Array[Object] */;
293 val* var11 /* : ArrayIterator[nullable Object] */;
294 val* var_12 /* var : ArrayIterator[Object] */;
295 short int var13 /* : Bool */;
296 val* var14 /* : nullable Object */;
297 val* var_e2 /* var e2: Object */;
298 short int var15 /* : Bool */;
299 val* var16 /* : NativeArray[String] */;
300 static val* varonce;
301 static val* varonce17;
302 val* var18 /* : String */;
303 char* var19 /* : NativeString */;
304 val* var20 /* : FlatString */;
305 static val* varonce21;
306 val* var22 /* : String */;
307 char* var23 /* : NativeString */;
308 val* var24 /* : FlatString */;
309 val* var25 /* : String */;
310 val* var26 /* : String */;
311 static val* varonce27;
312 val* var28 /* : String */;
313 char* var29 /* : NativeString */;
314 val* var30 /* : FlatString */;
315 val* var31 /* : String */;
316 val* var33 /* : NativeArray[String] */;
317 static val* varonce32;
318 static val* varonce34;
319 val* var35 /* : String */;
320 char* var36 /* : NativeString */;
321 val* var37 /* : FlatString */;
322 static val* varonce38;
323 val* var39 /* : String */;
324 char* var40 /* : NativeString */;
325 val* var41 /* : FlatString */;
326 val* var42 /* : String */;
327 val* var43 /* : String */;
328 static val* varonce44;
329 val* var45 /* : String */;
330 char* var46 /* : NativeString */;
331 val* var47 /* : FlatString */;
332 val* var48 /* : String */;
333 /* Covariant cast for argument 1 (e) <p1:Object> isa E */
334 /* <p1:Object> isa E */
335 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
336 cltype = type_struct->color;
337 idtype = type_struct->id;
338 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
339 var = 0;
340 } else {
341 var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
342 }
343 if (unlikely(!var)) {
344 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
345 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
346 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 97);
347 fatal_exit(1);
348 }
349 var_o = p0;
350 var_e = p1;
351 var_prefix = p2;
352 {
353 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
354 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
355 if (unlikely(var3 == NULL)) {
356 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
357 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
358 fatal_exit(1);
359 }
360 var1 = var3;
361 RET_LABEL2:(void)0;
362 }
363 }
364 {
365 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var1, var_e);
366 }
367 var5 = !var4;
368 if (var5){
369 goto RET_LABEL;
370 } else {
371 }
372 {
373 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
374 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
375 if (unlikely(var8 == NULL)) {
376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
377 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
378 fatal_exit(1);
379 }
380 var6 = var8;
381 RET_LABEL7:(void)0;
382 }
383 }
384 {
385 var9 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var6, var_e);
386 }
387 var_subs = var9;
388 {
389 var10 = standard___standard__SequenceRead___last(var_subs);
390 }
391 var_last = var10;
392 var_ = var_subs;
393 {
394 var11 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
395 }
396 var_12 = var11;
397 for(;;) {
398 {
399 var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_12);
400 }
401 if (var13){
402 {
403 var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_12);
404 }
405 var_e2 = var14;
406 {
407 var15 = ((short int(*)(val* self, val* p0))((((long)var_e2&3)?class_info[((long)var_e2&3)]:var_e2->class)->vft[COLOR_standard__kernel__Object___33d_61d]))(var_e2, var_last); /* != on <var_e2:Object>*/
408 }
409 if (var15){
410 if (unlikely(varonce==NULL)) {
411 var16 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
412 if (likely(varonce17!=NULL)) {
413 var18 = varonce17;
414 } else {
415 var19 = "|--";
416 var20 = standard___standard__NativeString___to_s_with_length(var19, 3l);
417 var18 = var20;
418 varonce17 = var18;
419 }
420 ((struct instance_standard__NativeArray*)var16)->values[1]=var18;
421 if (likely(varonce21!=NULL)) {
422 var22 = varonce21;
423 } else {
424 var23 = "\n";
425 var24 = standard___standard__NativeString___to_s_with_length(var23, 1l);
426 var22 = var24;
427 varonce21 = var22;
428 }
429 ((struct instance_standard__NativeArray*)var16)->values[3]=var22;
430 } else {
431 var16 = varonce;
432 varonce = NULL;
433 }
434 ((struct instance_standard__NativeArray*)var16)->values[0]=var_prefix;
435 {
436 var25 = ordered_tree___ordered_tree__OrderedTree___display(self, var_e2);
437 }
438 ((struct instance_standard__NativeArray*)var16)->values[2]=var25;
439 {
440 var26 = ((val*(*)(val* self))(var16->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
441 }
442 varonce = var16;
443 {
444 standard___standard__FileWriter___standard__stream__Writer__write(var_o, var26); /* Direct call file#FileWriter#write on <var_o:Writer>*/
445 }
446 if (likely(varonce27!=NULL)) {
447 var28 = varonce27;
448 } else {
449 var29 = "| ";
450 var30 = standard___standard__NativeString___to_s_with_length(var29, 3l);
451 var28 = var30;
452 varonce27 = var28;
453 }
454 {
455 var31 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_standard__string__String___43d]))(var_prefix, var28); /* + on <var_prefix:String>*/
456 }
457 {
458 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_o, var_e2, var31); /* Direct call ordered_tree#OrderedTree#sub_write_to on <self:OrderedTree[Object]>*/
459 }
460 } else {
461 if (unlikely(varonce32==NULL)) {
462 var33 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
463 if (likely(varonce34!=NULL)) {
464 var35 = varonce34;
465 } else {
466 var36 = "`--";
467 var37 = standard___standard__NativeString___to_s_with_length(var36, 3l);
468 var35 = var37;
469 varonce34 = var35;
470 }
471 ((struct instance_standard__NativeArray*)var33)->values[1]=var35;
472 if (likely(varonce38!=NULL)) {
473 var39 = varonce38;
474 } else {
475 var40 = "\n";
476 var41 = standard___standard__NativeString___to_s_with_length(var40, 1l);
477 var39 = var41;
478 varonce38 = var39;
479 }
480 ((struct instance_standard__NativeArray*)var33)->values[3]=var39;
481 } else {
482 var33 = varonce32;
483 varonce32 = NULL;
484 }
485 ((struct instance_standard__NativeArray*)var33)->values[0]=var_prefix;
486 {
487 var42 = ordered_tree___ordered_tree__OrderedTree___display(self, var_e2);
488 }
489 ((struct instance_standard__NativeArray*)var33)->values[2]=var42;
490 {
491 var43 = ((val*(*)(val* self))(var33->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
492 }
493 varonce32 = var33;
494 {
495 standard___standard__FileWriter___standard__stream__Writer__write(var_o, var43); /* Direct call file#FileWriter#write on <var_o:Writer>*/
496 }
497 if (likely(varonce44!=NULL)) {
498 var45 = varonce44;
499 } else {
500 var46 = " ";
501 var47 = standard___standard__NativeString___to_s_with_length(var46, 3l);
502 var45 = var47;
503 varonce44 = var45;
504 }
505 {
506 var48 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_standard__string__String___43d]))(var_prefix, var45); /* + on <var_prefix:String>*/
507 }
508 {
509 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_o, var_e2, var48); /* Direct call ordered_tree#OrderedTree#sub_write_to on <self:OrderedTree[Object]>*/
510 }
511 }
512 {
513 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[Object]>*/
514 }
515 } else {
516 goto BREAK_label;
517 }
518 }
519 BREAK_label: (void)0;
520 {
521 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_12); /* Direct call array#ArrayIterator#finish on <var_12:ArrayIterator[Object]>*/
522 }
523 RET_LABEL:;
524 }
525 /* method ordered_tree#OrderedTree#sort_with for (self: OrderedTree[Object], Comparator) */
526 void ordered_tree___ordered_tree__OrderedTree___sort_with(val* self, val* p0) {
527 val* var_comparator /* var comparator: Comparator */;
528 val* var /* : Array[Object] */;
529 val* var2 /* : Array[Object] */;
530 val* var3 /* : HashMap[Object, Array[Object]] */;
531 val* var5 /* : HashMap[Object, Array[Object]] */;
532 val* var6 /* : RemovableCollection[nullable Object] */;
533 val* var_ /* var : RemovableCollection[Array[Object]] */;
534 val* var7 /* : Iterator[nullable Object] */;
535 val* var_8 /* var : Iterator[Array[Object]] */;
536 short int var9 /* : Bool */;
537 val* var10 /* : nullable Object */;
538 val* var_a /* var a: Array[Object] */;
539 var_comparator = p0;
540 {
541 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
542 var2 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
543 if (unlikely(var2 == NULL)) {
544 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
545 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
546 fatal_exit(1);
547 }
548 var = var2;
549 RET_LABEL1:(void)0;
550 }
551 }
552 {
553 standard___standard__Comparator___sort(var_comparator, var); /* Direct call sorter#Comparator#sort on <var_comparator:Comparator>*/
554 }
555 {
556 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
557 var5 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
558 if (unlikely(var5 == NULL)) {
559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
560 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
561 fatal_exit(1);
562 }
563 var3 = var5;
564 RET_LABEL4:(void)0;
565 }
566 }
567 {
568 var6 = standard___standard__HashMap___standard__abstract_collection__MapRead__values(var3);
569 }
570 var_ = var6;
571 {
572 var7 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:RemovableCollection[Array[Object]]>*/
573 }
574 var_8 = var7;
575 for(;;) {
576 {
577 var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:Iterator[Array[Object]]>*/
578 }
579 if (var9){
580 {
581 var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:Iterator[Array[Object]]>*/
582 }
583 var_a = var10;
584 {
585 standard___standard__Comparator___sort(var_comparator, var_a); /* Direct call sorter#Comparator#sort on <var_comparator:Comparator>*/
586 }
587 {
588 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:Iterator[Array[Object]]>*/
589 }
590 } else {
591 goto BREAK_label;
592 }
593 }
594 BREAK_label: (void)0;
595 {
596 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:Iterator[Array[Object]]>*/
597 }
598 RET_LABEL:;
599 }
600 /* method ordered_tree#OrderedTree#display for (self: OrderedTree[Object], Object): String */
601 val* ordered_tree___ordered_tree__OrderedTree___display(val* self, val* p0) {
602 val* var /* : String */;
603 short int var1 /* : Bool */;
604 int cltype;
605 int idtype;
606 const struct type* type_struct;
607 const char* var_class_name;
608 val* var_e /* var e: Object */;
609 val* var2 /* : String */;
610 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
611 /* <p0:Object> isa E */
612 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
613 cltype = type_struct->color;
614 idtype = type_struct->id;
615 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
616 var1 = 0;
617 } else {
618 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
619 }
620 if (unlikely(!var1)) {
621 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
622 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
623 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 123);
624 fatal_exit(1);
625 }
626 var_e = p0;
627 {
628 var2 = ((val*(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_standard__string__Object__to_s]))(var_e); /* to_s on <var_e:Object>*/
629 }
630 var = var2;
631 goto RET_LABEL;
632 RET_LABEL:;
633 return var;
634 }
635 /* method ordered_tree#OrderedTree#to_a for (self: OrderedTree[Object]): Array[Object] */
636 val* ordered_tree___ordered_tree__OrderedTree___standard__array__Collection__to_a(val* self) {
637 val* var /* : Array[Object] */;
638 val* var1 /* : Array[Object] */;
639 val* var_res /* var res: Array[Object] */;
640 val* var2 /* : Array[Object] */;
641 val* var4 /* : Array[Object] */;
642 val* var_ /* var : Array[Object] */;
643 val* var5 /* : ArrayIterator[nullable Object] */;
644 val* var_6 /* var : ArrayIterator[Object] */;
645 short int var7 /* : Bool */;
646 val* var8 /* : nullable Object */;
647 val* var_r /* var r: Object */;
648 var1 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__ordered_tree__OrderedTree___35dE]);
649 {
650 standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[Object]>*/
651 }
652 var_res = var1;
653 {
654 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
655 var4 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
656 if (unlikely(var4 == NULL)) {
657 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
658 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
659 fatal_exit(1);
660 }
661 var2 = var4;
662 RET_LABEL3:(void)0;
663 }
664 }
665 var_ = var2;
666 {
667 var5 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
668 }
669 var_6 = var5;
670 for(;;) {
671 {
672 var7 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_6);
673 }
674 if (var7){
675 {
676 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_6);
677 }
678 var_r = var8;
679 {
680 ordered_tree___ordered_tree__OrderedTree___sub_to_a(self, var_r, var_res); /* Direct call ordered_tree#OrderedTree#sub_to_a on <self:OrderedTree[Object]>*/
681 }
682 {
683 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[Object]>*/
684 }
685 } else {
686 goto BREAK_label;
687 }
688 }
689 BREAK_label: (void)0;
690 {
691 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_6); /* Direct call array#ArrayIterator#finish on <var_6:ArrayIterator[Object]>*/
692 }
693 var = var_res;
694 goto RET_LABEL;
695 RET_LABEL:;
696 return var;
697 }
698 /* method ordered_tree#OrderedTree#sub_to_a for (self: OrderedTree[Object], Object, Array[Object]) */
699 void ordered_tree___ordered_tree__OrderedTree___sub_to_a(val* self, val* p0, val* p1) {
700 short int var /* : Bool */;
701 int cltype;
702 int idtype;
703 const struct type* type_struct;
704 const char* var_class_name;
705 short int var1 /* : Bool */;
706 int cltype2;
707 int idtype3;
708 const struct type* type_struct4;
709 const char* var_class_name5;
710 val* var_e /* var e: Object */;
711 val* var_res /* var res: Array[Object] */;
712 val* var6 /* : HashMap[Object, Array[Object]] */;
713 val* var8 /* : HashMap[Object, Array[Object]] */;
714 short int var9 /* : Bool */;
715 val* var10 /* : HashMap[Object, Array[Object]] */;
716 val* var12 /* : HashMap[Object, Array[Object]] */;
717 val* var13 /* : nullable Object */;
718 val* var_ /* var : Array[Object] */;
719 val* var14 /* : ArrayIterator[nullable Object] */;
720 val* var_15 /* var : ArrayIterator[Object] */;
721 short int var16 /* : Bool */;
722 val* var17 /* : nullable Object */;
723 val* var_e2 /* var e2: Object */;
724 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
725 /* <p0:Object> isa E */
726 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
727 cltype = type_struct->color;
728 idtype = type_struct->id;
729 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
730 var = 0;
731 } else {
732 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
733 }
734 if (unlikely(!var)) {
735 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
736 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
737 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 150);
738 fatal_exit(1);
739 }
740 /* Covariant cast for argument 1 (res) <p1:Array[Object]> isa Array[E] */
741 /* <p1:Array[Object]> isa Array[E] */
742 type_struct4 = self->type->resolution_table->types[COLOR_standard__Array__ordered_tree__OrderedTree___35dE];
743 cltype2 = type_struct4->color;
744 idtype3 = type_struct4->id;
745 if(cltype2 >= p1->type->table_size) {
746 var1 = 0;
747 } else {
748 var1 = p1->type->type_table[cltype2] == idtype3;
749 }
750 if (unlikely(!var1)) {
751 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
752 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[E]", var_class_name5);
753 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 150);
754 fatal_exit(1);
755 }
756 var_e = p0;
757 var_res = p1;
758 {
759 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_e); /* Direct call array#Array#add on <var_res:Array[Object]>*/
760 }
761 {
762 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
763 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
764 if (unlikely(var8 == NULL)) {
765 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
766 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
767 fatal_exit(1);
768 }
769 var6 = var8;
770 RET_LABEL7:(void)0;
771 }
772 }
773 {
774 var9 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var6, var_e);
775 }
776 if (var9){
777 {
778 { /* Inline ordered_tree#OrderedTree#sub (self) on <self:OrderedTree[Object]> */
779 var12 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
780 if (unlikely(var12 == NULL)) {
781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
782 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
783 fatal_exit(1);
784 }
785 var10 = var12;
786 RET_LABEL11:(void)0;
787 }
788 }
789 {
790 var13 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var10, var_e);
791 }
792 var_ = var13;
793 {
794 var14 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
795 }
796 var_15 = var14;
797 for(;;) {
798 {
799 var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_15);
800 }
801 if (var16){
802 {
803 var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_15);
804 }
805 var_e2 = var17;
806 {
807 ordered_tree___ordered_tree__OrderedTree___sub_to_a(self, var_e2, var_res); /* Direct call ordered_tree#OrderedTree#sub_to_a on <self:OrderedTree[Object]>*/
808 }
809 {
810 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_15); /* Direct call array#ArrayIterator#next on <var_15:ArrayIterator[Object]>*/
811 }
812 } else {
813 goto BREAK_label;
814 }
815 }
816 BREAK_label: (void)0;
817 {
818 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_15); /* Direct call array#ArrayIterator#finish on <var_15:ArrayIterator[Object]>*/
819 }
820 } else {
821 }
822 RET_LABEL:;
823 }
824 /* method ordered_tree#OrderedTree#is_empty for (self: OrderedTree[Object]): Bool */
825 short int ordered_tree___ordered_tree__OrderedTree___standard__abstract_collection__Collection__is_empty(val* self) {
826 short int var /* : Bool */;
827 val* var1 /* : Array[Object] */;
828 val* var3 /* : Array[Object] */;
829 short int var4 /* : Bool */;
830 {
831 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
832 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
833 if (unlikely(var3 == NULL)) {
834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
835 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
836 fatal_exit(1);
837 }
838 var1 = var3;
839 RET_LABEL2:(void)0;
840 }
841 }
842 {
843 var4 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var1);
844 }
845 var = var4;
846 goto RET_LABEL;
847 RET_LABEL:;
848 return var;
849 }
850 /* method ordered_tree#OrderedTree#first for (self: OrderedTree[Object]): Object */
851 val* ordered_tree___ordered_tree__OrderedTree___standard__abstract_collection__Collection__first(val* self) {
852 val* var /* : Object */;
853 val* var1 /* : Array[Object] */;
854 val* var3 /* : Array[Object] */;
855 val* var4 /* : nullable Object */;
856 {
857 { /* Inline ordered_tree#OrderedTree#roots (self) on <self:OrderedTree[Object]> */
858 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
859 if (unlikely(var3 == NULL)) {
860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
861 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
862 fatal_exit(1);
863 }
864 var1 = var3;
865 RET_LABEL2:(void)0;
866 }
867 }
868 {
869 var4 = standard___standard__SequenceRead___Collection__first(var1);
870 }
871 var = var4;
872 goto RET_LABEL;
873 RET_LABEL:;
874 return var;
875 }
876 /* method ordered_tree#OrderedTree#iterator for (self: OrderedTree[Object]): Iterator[Object] */
877 val* ordered_tree___ordered_tree__OrderedTree___standard__abstract_collection__Collection__iterator(val* self) {
878 val* var /* : Iterator[Object] */;
879 val* var1 /* : OrderedTreeIterator[Object] */;
880 var1 = NEW_ordered_tree__OrderedTreeIterator(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTreeIterator__ordered_tree__OrderedTree___35dE]);
881 {
882 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_ordered_tree__OrderedTreeIterator__tree_61d]))(var1, self); /* tree= on <var1:OrderedTreeIterator[Object]>*/
883 }
884 {
885 ((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:OrderedTreeIterator[Object]>*/
886 }
887 var = var1;
888 goto RET_LABEL;
889 RET_LABEL:;
890 return var;
891 }
892 /* method ordered_tree#OrderedTreeIterator#tree for (self: OrderedTreeIterator[Object]): OrderedTree[Object] */
893 val* ordered_tree___ordered_tree__OrderedTreeIterator___tree(val* self) {
894 val* var /* : OrderedTree[Object] */;
895 val* var1 /* : OrderedTree[Object] */;
896 var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
897 if (unlikely(var1 == NULL)) {
898 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
899 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
900 fatal_exit(1);
901 }
902 var = var1;
903 RET_LABEL:;
904 return var;
905 }
906 /* method ordered_tree#OrderedTreeIterator#tree= for (self: OrderedTreeIterator[Object], OrderedTree[Object]) */
907 void ordered_tree___ordered_tree__OrderedTreeIterator___tree_61d(val* self, val* p0) {
908 short int var /* : Bool */;
909 int cltype;
910 int idtype;
911 const struct type* type_struct;
912 const char* var_class_name;
913 /* Covariant cast for argument 0 (tree) <p0:OrderedTree[Object]> isa OrderedTree[E] */
914 /* <p0:OrderedTree[Object]> isa OrderedTree[E] */
915 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree__ordered_tree__OrderedTreeIterator___35dE];
916 cltype = type_struct->color;
917 idtype = type_struct->id;
918 if(cltype >= p0->type->table_size) {
919 var = 0;
920 } else {
921 var = p0->type->type_table[cltype] == idtype;
922 }
923 if (unlikely(!var)) {
924 var_class_name = p0 == NULL ? "null" : p0->type->name;
925 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OrderedTree[E]", var_class_name);
926 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
927 fatal_exit(1);
928 }
929 self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val = p0; /* _tree on <self:OrderedTreeIterator[Object]> */
930 RET_LABEL:;
931 }
932 /* method ordered_tree#OrderedTreeIterator#iterators for (self: OrderedTreeIterator[Object]): Array[Iterator[Object]] */
933 val* ordered_tree___ordered_tree__OrderedTreeIterator___iterators(val* self) {
934 val* var /* : Array[Iterator[Object]] */;
935 val* var1 /* : Array[Iterator[Object]] */;
936 var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
937 if (unlikely(var1 == NULL)) {
938 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
939 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
940 fatal_exit(1);
941 }
942 var = var1;
943 RET_LABEL:;
944 return var;
945 }
946 /* method ordered_tree#OrderedTreeIterator#init for (self: OrderedTreeIterator[Object]) */
947 void ordered_tree___ordered_tree__OrderedTreeIterator___standard__kernel__Object__init(val* self) {
948 val* var /* : OrderedTree[Object] */;
949 val* var2 /* : OrderedTree[Object] */;
950 short int var3 /* : Bool */;
951 short int var4 /* : Bool */;
952 val* var5 /* : Array[Iterator[Object]] */;
953 val* var7 /* : Array[Iterator[Object]] */;
954 val* var8 /* : OrderedTree[Object] */;
955 val* var10 /* : OrderedTree[Object] */;
956 val* var11 /* : Array[Object] */;
957 val* var13 /* : Array[Object] */;
958 val* var14 /* : ArrayIterator[nullable Object] */;
959 {
960 { /* Inline ordered_tree#OrderedTreeIterator#tree (self) on <self:OrderedTreeIterator[Object]> */
961 var2 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
962 if (unlikely(var2 == NULL)) {
963 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
964 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
965 fatal_exit(1);
966 }
967 var = var2;
968 RET_LABEL1:(void)0;
969 }
970 }
971 {
972 var3 = ordered_tree___ordered_tree__OrderedTree___standard__abstract_collection__Collection__is_empty(var);
973 }
974 var4 = !var3;
975 if (var4){
976 {
977 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
978 var7 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
979 if (unlikely(var7 == NULL)) {
980 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
981 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
982 fatal_exit(1);
983 }
984 var5 = var7;
985 RET_LABEL6:(void)0;
986 }
987 }
988 {
989 { /* Inline ordered_tree#OrderedTreeIterator#tree (self) on <self:OrderedTreeIterator[Object]> */
990 var10 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
991 if (unlikely(var10 == NULL)) {
992 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
993 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
994 fatal_exit(1);
995 }
996 var8 = var10;
997 RET_LABEL9:(void)0;
998 }
999 }
1000 {
1001 { /* Inline ordered_tree#OrderedTree#roots (var8) on <var8:OrderedTree[Object]> */
1002 var13 = var8->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <var8:OrderedTree[Object]> */
1003 if (unlikely(var13 == NULL)) {
1004 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1005 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 65);
1006 fatal_exit(1);
1007 }
1008 var11 = var13;
1009 RET_LABEL12:(void)0;
1010 }
1011 }
1012 {
1013 var14 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var11);
1014 }
1015 {
1016 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var5, var14); /* Direct call array#Array#add on <var5:Array[Iterator[Object]]>*/
1017 }
1018 } else {
1019 }
1020 RET_LABEL:;
1021 }
1022 /* method ordered_tree#OrderedTreeIterator#is_ok for (self: OrderedTreeIterator[Object]): Bool */
1023 short int ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__is_ok(val* self) {
1024 short int var /* : Bool */;
1025 val* var1 /* : Array[Iterator[Object]] */;
1026 val* var3 /* : Array[Iterator[Object]] */;
1027 short int var4 /* : Bool */;
1028 short int var5 /* : Bool */;
1029 {
1030 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1031 var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1032 if (unlikely(var3 == NULL)) {
1033 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1034 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1035 fatal_exit(1);
1036 }
1037 var1 = var3;
1038 RET_LABEL2:(void)0;
1039 }
1040 }
1041 {
1042 var4 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var1);
1043 }
1044 var5 = !var4;
1045 var = var5;
1046 goto RET_LABEL;
1047 RET_LABEL:;
1048 return var;
1049 }
1050 /* method ordered_tree#OrderedTreeIterator#item for (self: OrderedTreeIterator[Object]): Object */
1051 val* ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__item(val* self) {
1052 val* var /* : Object */;
1053 short int var1 /* : Bool */;
1054 val* var2 /* : Array[Iterator[Object]] */;
1055 val* var4 /* : Array[Iterator[Object]] */;
1056 val* var5 /* : nullable Object */;
1057 val* var6 /* : nullable Object */;
1058 {
1059 var1 = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__is_ok(self);
1060 }
1061 if (unlikely(!var1)) {
1062 PRINT_ERROR("Runtime error: %s", "Assert failed");
1063 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 202);
1064 fatal_exit(1);
1065 }
1066 {
1067 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1068 var4 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1069 if (unlikely(var4 == NULL)) {
1070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1071 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1072 fatal_exit(1);
1073 }
1074 var2 = var4;
1075 RET_LABEL3:(void)0;
1076 }
1077 }
1078 {
1079 var5 = standard___standard__SequenceRead___last(var2);
1080 }
1081 {
1082 var6 = ((val*(*)(val* self))((((long)var5&3)?class_info[((long)var5&3)]:var5->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var5); /* item on <var5:nullable Object(Iterator[Object])>*/
1083 }
1084 var = var6;
1085 goto RET_LABEL;
1086 RET_LABEL:;
1087 return var;
1088 }
1089 /* method ordered_tree#OrderedTreeIterator#next for (self: OrderedTreeIterator[Object]) */
1090 void ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__next(val* self) {
1091 short int var /* : Bool */;
1092 val* var1 /* : OrderedTree[Object] */;
1093 val* var3 /* : OrderedTree[Object] */;
1094 val* var4 /* : HashMap[Object, Array[Object]] */;
1095 val* var6 /* : HashMap[Object, Array[Object]] */;
1096 val* var7 /* : Object */;
1097 short int var8 /* : Bool */;
1098 val* var9 /* : Array[Iterator[Object]] */;
1099 val* var11 /* : Array[Iterator[Object]] */;
1100 val* var12 /* : OrderedTree[Object] */;
1101 val* var14 /* : OrderedTree[Object] */;
1102 val* var15 /* : HashMap[Object, Array[Object]] */;
1103 val* var17 /* : HashMap[Object, Array[Object]] */;
1104 val* var18 /* : Object */;
1105 val* var19 /* : nullable Object */;
1106 val* var20 /* : ArrayIterator[nullable Object] */;
1107 val* var21 /* : Array[Iterator[Object]] */;
1108 val* var23 /* : Array[Iterator[Object]] */;
1109 val* var24 /* : nullable Object */;
1110 short int var25 /* : Bool */;
1111 short int var26 /* : Bool */;
1112 short int var_ /* var : Bool */;
1113 val* var27 /* : Array[Iterator[Object]] */;
1114 val* var29 /* : Array[Iterator[Object]] */;
1115 val* var30 /* : nullable Object */;
1116 short int var31 /* : Bool */;
1117 short int var32 /* : Bool */;
1118 val* var33 /* : Array[Iterator[Object]] */;
1119 val* var35 /* : Array[Iterator[Object]] */;
1120 val* var36 /* : nullable Object */;
1121 short int var37 /* : Bool */;
1122 short int var38 /* : Bool */;
1123 short int var_39 /* var : Bool */;
1124 val* var40 /* : Array[Iterator[Object]] */;
1125 val* var42 /* : Array[Iterator[Object]] */;
1126 val* var43 /* : nullable Object */;
1127 short int var44 /* : Bool */;
1128 val* var45 /* : Array[Iterator[Object]] */;
1129 val* var47 /* : Array[Iterator[Object]] */;
1130 val* var48 /* : nullable Object */;
1131 {
1132 var = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__is_ok(self);
1133 }
1134 if (unlikely(!var)) {
1135 PRINT_ERROR("Runtime error: %s", "Assert failed");
1136 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 207);
1137 fatal_exit(1);
1138 }
1139 {
1140 { /* Inline ordered_tree#OrderedTreeIterator#tree (self) on <self:OrderedTreeIterator[Object]> */
1141 var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1142 if (unlikely(var3 == NULL)) {
1143 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1144 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
1145 fatal_exit(1);
1146 }
1147 var1 = var3;
1148 RET_LABEL2:(void)0;
1149 }
1150 }
1151 {
1152 { /* Inline ordered_tree#OrderedTree#sub (var1) on <var1:OrderedTree[Object]> */
1153 var6 = var1->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var1:OrderedTree[Object]> */
1154 if (unlikely(var6 == NULL)) {
1155 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1156 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
1157 fatal_exit(1);
1158 }
1159 var4 = var6;
1160 RET_LABEL5:(void)0;
1161 }
1162 }
1163 {
1164 var7 = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__item(self);
1165 }
1166 {
1167 var8 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var4, var7);
1168 }
1169 if (var8){
1170 {
1171 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1172 var11 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1173 if (unlikely(var11 == NULL)) {
1174 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1175 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1176 fatal_exit(1);
1177 }
1178 var9 = var11;
1179 RET_LABEL10:(void)0;
1180 }
1181 }
1182 {
1183 { /* Inline ordered_tree#OrderedTreeIterator#tree (self) on <self:OrderedTreeIterator[Object]> */
1184 var14 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1185 if (unlikely(var14 == NULL)) {
1186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1187 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
1188 fatal_exit(1);
1189 }
1190 var12 = var14;
1191 RET_LABEL13:(void)0;
1192 }
1193 }
1194 {
1195 { /* Inline ordered_tree#OrderedTree#sub (var12) on <var12:OrderedTree[Object]> */
1196 var17 = var12->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var12:OrderedTree[Object]> */
1197 if (unlikely(var17 == NULL)) {
1198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1199 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 68);
1200 fatal_exit(1);
1201 }
1202 var15 = var17;
1203 RET_LABEL16:(void)0;
1204 }
1205 }
1206 {
1207 var18 = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__item(self);
1208 }
1209 {
1210 var19 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var15, var18);
1211 }
1212 {
1213 var20 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var19);
1214 }
1215 {
1216 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var9, var20); /* Direct call array#Array#add on <var9:Array[Iterator[Object]]>*/
1217 }
1218 } else {
1219 {
1220 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1221 var23 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1222 if (unlikely(var23 == NULL)) {
1223 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1224 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1225 fatal_exit(1);
1226 }
1227 var21 = var23;
1228 RET_LABEL22:(void)0;
1229 }
1230 }
1231 {
1232 var24 = standard___standard__SequenceRead___last(var21);
1233 }
1234 {
1235 ((void(*)(val* self))((((long)var24&3)?class_info[((long)var24&3)]:var24->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var24); /* next on <var24:nullable Object(Iterator[Object])>*/
1236 }
1237 for(;;) {
1238 {
1239 var26 = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__is_ok(self);
1240 }
1241 var_ = var26;
1242 if (var26){
1243 {
1244 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1245 var29 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1246 if (unlikely(var29 == NULL)) {
1247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1248 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1249 fatal_exit(1);
1250 }
1251 var27 = var29;
1252 RET_LABEL28:(void)0;
1253 }
1254 }
1255 {
1256 var30 = standard___standard__SequenceRead___last(var27);
1257 }
1258 {
1259 var31 = ((short int(*)(val* self))((((long)var30&3)?class_info[((long)var30&3)]:var30->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var30); /* is_ok on <var30:nullable Object(Iterator[Object])>*/
1260 }
1261 var32 = !var31;
1262 var25 = var32;
1263 } else {
1264 var25 = var_;
1265 }
1266 if (var25){
1267 {
1268 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1269 var35 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1270 if (unlikely(var35 == NULL)) {
1271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1272 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1273 fatal_exit(1);
1274 }
1275 var33 = var35;
1276 RET_LABEL34:(void)0;
1277 }
1278 }
1279 {
1280 var36 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var33);
1281 }
1282 {
1283 var38 = ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__is_ok(self);
1284 }
1285 var_39 = var38;
1286 if (var38){
1287 {
1288 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1289 var42 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1290 if (unlikely(var42 == NULL)) {
1291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1292 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1293 fatal_exit(1);
1294 }
1295 var40 = var42;
1296 RET_LABEL41:(void)0;
1297 }
1298 }
1299 {
1300 var43 = standard___standard__SequenceRead___last(var40);
1301 }
1302 {
1303 var44 = ((short int(*)(val* self))((((long)var43&3)?class_info[((long)var43&3)]:var43->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var43); /* is_ok on <var43:nullable Object(Iterator[Object])>*/
1304 }
1305 var37 = var44;
1306 } else {
1307 var37 = var_39;
1308 }
1309 if (var37){
1310 {
1311 { /* Inline ordered_tree#OrderedTreeIterator#iterators (self) on <self:OrderedTreeIterator[Object]> */
1312 var47 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1313 if (unlikely(var47 == NULL)) {
1314 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1315 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 191);
1316 fatal_exit(1);
1317 }
1318 var45 = var47;
1319 RET_LABEL46:(void)0;
1320 }
1321 }
1322 {
1323 var48 = standard___standard__SequenceRead___last(var45);
1324 }
1325 {
1326 ((void(*)(val* self))((((long)var48&3)?class_info[((long)var48&3)]:var48->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var48); /* next on <var48:nullable Object(Iterator[Object])>*/
1327 }
1328 } else {
1329 }
1330 } else {
1331 goto BREAK_label;
1332 }
1333 }
1334 BREAK_label: (void)0;
1335 }
1336 RET_LABEL:;
1337 }
1338 /* method ordered_tree#OrderedTreeIterator#iterator for (self: OrderedTreeIterator[Object]): Iterator[Object] */
1339 val* ordered_tree___ordered_tree__OrderedTreeIterator___standard__abstract_collection__Iterator__iterator(val* self) {
1340 val* var /* : Iterator[Object] */;
1341 val* var1 /* : OrderedTreeIterator[Object] */;
1342 val* var2 /* : OrderedTree[Object] */;
1343 val* var4 /* : OrderedTree[Object] */;
1344 var1 = NEW_ordered_tree__OrderedTreeIterator(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTreeIterator__ordered_tree__OrderedTreeIterator___35dE]);
1345 {
1346 { /* Inline ordered_tree#OrderedTreeIterator#tree (self) on <self:OrderedTreeIterator[Object]> */
1347 var4 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1348 if (unlikely(var4 == NULL)) {
1349 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1350 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 189);
1351 fatal_exit(1);
1352 }
1353 var2 = var4;
1354 RET_LABEL3:(void)0;
1355 }
1356 }
1357 {
1358 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_ordered_tree__OrderedTreeIterator__tree_61d]))(var1, var2); /* tree= on <var1:OrderedTreeIterator[Object]>*/
1359 }
1360 {
1361 ((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:OrderedTreeIterator[Object]>*/
1362 }
1363 var = var1;
1364 goto RET_LABEL;
1365 RET_LABEL:;
1366 return var;
1367 }