use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / poset.sep.1.c
1 #include "poset.sep.0.h"
2 /* method poset#POSet#iterator for (self: POSet[Object]): Iterator[Object] */
3 val* poset__POSet__iterator(val* self) {
4 val* var /* : Iterator[Object] */;
5 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
6 val* var2 /* : Collection[Object] */;
7 val* var3 /* : Iterator[nullable Object] */;
8 var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
9 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on <var1:HashMap[Object, POSetElement[Object]]>*/;
10 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
11 var = var3;
12 goto RET_LABEL;
13 RET_LABEL:;
14 return var;
15 }
16 /* method poset#POSet#iterator for (self: Object): Iterator[nullable Object] */
17 val* VIRTUAL_poset__POSet__iterator(val* self) {
18 val* var /* : Iterator[nullable Object] */;
19 val* var1 /* : Iterator[Object] */;
20 var1 = poset__POSet__iterator(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method poset#POSet#elements for (self: POSet[Object]): HashMap[Object, POSetElement[Object]] */
26 val* poset__POSet__elements(val* self) {
27 val* var /* : HashMap[Object, POSetElement[Object]] */;
28 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
29 var1 = self->attrs[COLOR_poset__POSet___64delements].val; /* @elements on <self:POSet[Object]> */
30 if (var1 == NULL) {
31 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @elements", "lib/poset.nit", 31);
32 exit(1);
33 }
34 var = var1;
35 RET_LABEL:;
36 return var;
37 }
38 /* method poset#POSet#elements for (self: Object): HashMap[Object, POSetElement[Object]] */
39 val* VIRTUAL_poset__POSet__elements(val* self) {
40 val* var /* : HashMap[Object, POSetElement[Object]] */;
41 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
42 var1 = poset__POSet__elements(self);
43 var = var1;
44 RET_LABEL:;
45 return var;
46 }
47 /* method poset#POSet#elements= for (self: POSet[Object], HashMap[Object, POSetElement[Object]]) */
48 void poset__POSet__elements_61d(val* self, val* p0) {
49 short int var /* : Bool */;
50 int cltype;
51 int idtype;
52 const struct type* type_struct;
53 /* Covariant cast for argument 0 (elements) <p0:HashMap[Object, POSetElement[Object]]> isa HashMap[POSet#0, POSetElement[POSet#0]] */
54 /* <p0:HashMap[Object, POSetElement[Object]]> isa HashMap[POSet#0, POSetElement[POSet#0]] */
55 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMapposet__POSet_FT0poset__POSetElementposet__POSet_FT0];
56 cltype = type_struct->color;
57 idtype = type_struct->id;
58 if(cltype >= p0->type->table_size) {
59 var = 0;
60 } else {
61 var = p0->type->type_table[cltype] == idtype;
62 }
63 if (!var) {
64 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 31);
65 exit(1);
66 }
67 self->attrs[COLOR_poset__POSet___64delements].val = p0; /* @elements on <self:POSet[Object]> */
68 RET_LABEL:;
69 }
70 /* method poset#POSet#elements= for (self: Object, HashMap[Object, POSetElement[Object]]) */
71 void VIRTUAL_poset__POSet__elements_61d(val* self, val* p0) {
72 poset__POSet__elements_61d(self, p0);
73 RET_LABEL:;
74 }
75 /* method poset#POSet#has for (self: POSet[Object], Object): Bool */
76 short int poset__POSet__has(val* self, val* p0) {
77 short int var /* : Bool */;
78 short int var1 /* : Bool */;
79 int cltype;
80 int idtype;
81 const struct type* type_struct;
82 val* var_e /* var e: Object */;
83 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
84 val* var3 /* : Collection[Object] */;
85 short int var4 /* : Bool */;
86 /* Covariant cast for argument 0 (e) <p0:Object> isa Collection#0 */
87 /* <p0:Object> isa Collection#0 */
88 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
89 cltype = type_struct->color;
90 idtype = type_struct->id;
91 if(cltype >= p0->type->table_size) {
92 var1 = 0;
93 } else {
94 var1 = p0->type->type_table[cltype] == idtype;
95 }
96 if (!var1) {
97 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 34);
98 exit(1);
99 }
100 var_e = p0;
101 var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
102 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on <var2:HashMap[Object, POSetElement[Object]]>*/;
103 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on <var3:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
104 var = var4;
105 goto RET_LABEL;
106 RET_LABEL:;
107 return var;
108 }
109 /* method poset#POSet#has for (self: Object, nullable Object): Bool */
110 short int VIRTUAL_poset__POSet__has(val* self, val* p0) {
111 short int var /* : Bool */;
112 short int var1 /* : Bool */;
113 var1 = poset__POSet__has(self, p0);
114 var = var1;
115 RET_LABEL:;
116 return var;
117 }
118 /* method poset#POSet#add_node for (self: POSet[Object], Object): POSetElement[Object] */
119 val* poset__POSet__add_node(val* self, val* p0) {
120 val* var /* : POSetElement[Object] */;
121 short int var1 /* : Bool */;
122 int cltype;
123 int idtype;
124 const struct type* type_struct;
125 val* var_e /* var e: Object */;
126 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
127 val* var3 /* : Collection[Object] */;
128 short int var4 /* : Bool */;
129 val* var5 /* : HashMap[Object, POSetElement[Object]] */;
130 val* var6 /* : nullable Object */;
131 val* var7 /* : POSetElement[Object] */;
132 val* var8 /* : HashMap[Object, POSetElement[Object]] */;
133 long var9 /* : Int */;
134 val* var_poe /* var poe: POSetElement[Object] */;
135 val* var10 /* : HashSet[Object] */;
136 val* var11 /* : HashSet[Object] */;
137 val* var12 /* : HashMap[Object, POSetElement[Object]] */;
138 /* Covariant cast for argument 0 (e) <p0:Object> isa POSet#0 */
139 /* <p0:Object> isa POSet#0 */
140 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
141 cltype = type_struct->color;
142 idtype = type_struct->id;
143 if(cltype >= p0->type->table_size) {
144 var1 = 0;
145 } else {
146 var1 = p0->type->type_table[cltype] == idtype;
147 }
148 if (!var1) {
149 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 36);
150 exit(1);
151 }
152 var_e = p0;
153 var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
154 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on <var2:HashMap[Object, POSetElement[Object]]>*/;
155 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on <var3:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
156 if (var4){
157 var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
158 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on <var5:HashMap[Object, POSetElement[Object]]>*/;
159 var = var6;
160 goto RET_LABEL;
161 } else {
162 }
163 var7 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElementposet__POSet_FT0]);
164 var8 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
165 var9 = ((long (*)(val*))(var8->class->vft[COLOR_abstract_collection__MapRead__length]))(var8) /* length on <var8:HashMap[Object, POSetElement[Object]]>*/;
166 ((void (*)(val*, val*, val*, long))(var7->class->vft[COLOR_poset__POSetElement__init]))(var7, self, var_e, var9) /* init on <var7:POSetElement[Object]>*/;
167 CHECK_NEW_poset__POSetElement(var7);
168 var_poe = var7;
169 var10 = ((val* (*)(val*))(var_poe->class->vft[COLOR_poset__POSetElement__tos]))(var_poe) /* tos on <var_poe:POSetElement[Object]>*/;
170 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_e) /* add on <var10:HashSet[Object]>*/;
171 var11 = ((val* (*)(val*))(var_poe->class->vft[COLOR_poset__POSetElement__froms]))(var_poe) /* froms on <var_poe:POSetElement[Object]>*/;
172 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var11, var_e) /* add on <var11:HashSet[Object]>*/;
173 var12 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
174 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var12, var_e, var_poe) /* []= on <var12:HashMap[Object, POSetElement[Object]]>*/;
175 var = var_poe;
176 goto RET_LABEL;
177 RET_LABEL:;
178 return var;
179 }
180 /* method poset#POSet#add_node for (self: Object, Object): POSetElement[Object] */
181 val* VIRTUAL_poset__POSet__add_node(val* self, val* p0) {
182 val* var /* : POSetElement[Object] */;
183 val* var1 /* : POSetElement[Object] */;
184 var1 = poset__POSet__add_node(self, p0);
185 var = var1;
186 RET_LABEL:;
187 return var;
188 }
189 /* method poset#POSet#[] for (self: POSet[Object], Object): POSetElement[Object] */
190 val* poset__POSet___91d_93d(val* self, val* p0) {
191 val* var /* : POSetElement[Object] */;
192 short int var1 /* : Bool */;
193 int cltype;
194 int idtype;
195 const struct type* type_struct;
196 val* var_e /* var e: Object */;
197 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
198 val* var3 /* : Collection[Object] */;
199 short int var4 /* : Bool */;
200 val* var5 /* : HashMap[Object, POSetElement[Object]] */;
201 val* var6 /* : nullable Object */;
202 /* Covariant cast for argument 0 (e) <p0:Object> isa POSet#0 */
203 /* <p0:Object> isa POSet#0 */
204 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
205 cltype = type_struct->color;
206 idtype = type_struct->id;
207 if(cltype >= p0->type->table_size) {
208 var1 = 0;
209 } else {
210 var1 = p0->type->type_table[cltype] == idtype;
211 }
212 if (!var1) {
213 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 50);
214 exit(1);
215 }
216 var_e = p0;
217 var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
218 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on <var2:HashMap[Object, POSetElement[Object]]>*/;
219 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on <var3:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
220 if (!var4) {
221 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/poset.nit", 63);
222 exit(1);
223 }
224 var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
225 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on <var5:HashMap[Object, POSetElement[Object]]>*/;
226 var = var6;
227 goto RET_LABEL;
228 RET_LABEL:;
229 return var;
230 }
231 /* method poset#POSet#[] for (self: Object, Object): POSetElement[Object] */
232 val* VIRTUAL_poset__POSet___91d_93d(val* self, val* p0) {
233 val* var /* : POSetElement[Object] */;
234 val* var1 /* : POSetElement[Object] */;
235 var1 = poset__POSet___91d_93d(self, p0);
236 var = var1;
237 RET_LABEL:;
238 return var;
239 }
240 /* method poset#POSet#add_edge for (self: POSet[Object], Object, Object) */
241 void poset__POSet__add_edge(val* self, val* p0, val* p1) {
242 short int var /* : Bool */;
243 int cltype;
244 int idtype;
245 const struct type* type_struct;
246 short int var1 /* : Bool */;
247 int cltype2;
248 int idtype3;
249 const struct type* type_struct4;
250 val* var_f /* var f: Object */;
251 val* var_t /* var t: Object */;
252 val* var5 /* : POSetElement[Object] */;
253 val* var_fe /* var fe: POSetElement[Object] */;
254 val* var6 /* : POSetElement[Object] */;
255 val* var_te /* var te: POSetElement[Object] */;
256 val* var7 /* : HashSet[Object] */;
257 short int var8 /* : Bool */;
258 val* var9 /* : HashSet[Object] */;
259 val* var10 /* : Iterator[nullable Object] */;
260 short int var11 /* : Bool */;
261 val* var12 /* : nullable Object */;
262 val* var_ff /* var ff: Object */;
263 val* var13 /* : HashMap[Object, POSetElement[Object]] */;
264 val* var14 /* : nullable Object */;
265 val* var_ffe /* var ffe: POSetElement[Object] */;
266 val* var15 /* : HashSet[Object] */;
267 val* var16 /* : Iterator[nullable Object] */;
268 short int var17 /* : Bool */;
269 val* var18 /* : nullable Object */;
270 val* var_tt /* var tt: Object */;
271 val* var19 /* : HashMap[Object, POSetElement[Object]] */;
272 val* var20 /* : nullable Object */;
273 val* var_tte /* var tte: POSetElement[Object] */;
274 val* var21 /* : HashSet[Object] */;
275 val* var22 /* : HashSet[Object] */;
276 val* var24 /* : HashSet[Object] */;
277 short int var25 /* : Bool */;
278 val* var26 /* : HashSet[Object] */;
279 val* var27 /* : Array[nullable Object] */;
280 val* var28 /* : Iterator[nullable Object] */;
281 short int var29 /* : Bool */;
282 val* var30 /* : nullable Object */;
283 val* var_x /* var x: Object */;
284 val* var31 /* : HashMap[Object, POSetElement[Object]] */;
285 val* var32 /* : nullable Object */;
286 val* var_xe /* var xe: POSetElement[Object] */;
287 val* var33 /* : HashSet[Object] */;
288 short int var34 /* : Bool */;
289 val* var35 /* : HashSet[Object] */;
290 val* var36 /* : HashSet[Object] */;
291 val* var38 /* : HashSet[Object] */;
292 val* var39 /* : Array[nullable Object] */;
293 val* var40 /* : Iterator[nullable Object] */;
294 short int var41 /* : Bool */;
295 val* var42 /* : nullable Object */;
296 val* var_x43 /* var x: Object */;
297 val* var44 /* : HashMap[Object, POSetElement[Object]] */;
298 val* var45 /* : nullable Object */;
299 val* var_xe46 /* var xe: POSetElement[Object] */;
300 val* var47 /* : HashSet[Object] */;
301 short int var48 /* : Bool */;
302 val* var49 /* : HashSet[Object] */;
303 val* var50 /* : HashSet[Object] */;
304 val* var52 /* : HashSet[Object] */;
305 val* var53 /* : HashSet[Object] */;
306 /* Covariant cast for argument 0 (f) <p0:Object> isa POSet#0 */
307 /* <p0:Object> isa POSet#0 */
308 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
309 cltype = type_struct->color;
310 idtype = type_struct->id;
311 if(cltype >= p0->type->table_size) {
312 var = 0;
313 } else {
314 var = p0->type->type_table[cltype] == idtype;
315 }
316 if (!var) {
317 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 67);
318 exit(1);
319 }
320 /* Covariant cast for argument 1 (t) <p1:Object> isa POSet#0 */
321 /* <p1:Object> isa POSet#0 */
322 type_struct4 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
323 cltype2 = type_struct4->color;
324 idtype3 = type_struct4->id;
325 if(cltype2 >= p1->type->table_size) {
326 var1 = 0;
327 } else {
328 var1 = p1->type->type_table[cltype2] == idtype3;
329 }
330 if (!var1) {
331 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 67);
332 exit(1);
333 }
334 var_f = p0;
335 var_t = p1;
336 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_poset__POSet__add_node]))(self, var_f) /* add_node on <self:POSet[Object]>*/;
337 var_fe = var5;
338 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_poset__POSet__add_node]))(self, var_t) /* add_node on <self:POSet[Object]>*/;
339 var_te = var6;
340 var7 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__tos]))(var_fe) /* tos on <var_fe:POSetElement[Object]>*/;
341 var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_t) /* has on <var7:HashSet[Object]>*/;
342 if (var8){
343 goto RET_LABEL;
344 } else {
345 }
346 var9 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__froms]))(var_fe) /* froms on <var_fe:POSetElement[Object]>*/;
347 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:HashSet[Object]>*/;
348 for(;;) {
349 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
350 if(!var11) break;
351 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
352 var_ff = var12;
353 var13 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
354 var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_ff) /* [] on <var13:HashMap[Object, POSetElement[Object]]>*/;
355 var_ffe = var14;
356 var15 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__tos]))(var_te) /* tos on <var_te:POSetElement[Object]>*/;
357 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Collection__iterator]))(var15) /* iterator on <var15:HashSet[Object]>*/;
358 for(;;) {
359 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
360 if(!var17) break;
361 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
362 var_tt = var18;
363 var19 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
364 var20 = ((val* (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var19, var_tt) /* [] on <var19:HashMap[Object, POSetElement[Object]]>*/;
365 var_tte = var20;
366 var21 = ((val* (*)(val*))(var_tte->class->vft[COLOR_poset__POSetElement__froms]))(var_tte) /* froms on <var_tte:POSetElement[Object]>*/;
367 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var21, var_ff) /* add on <var21:HashSet[Object]>*/;
368 var22 = ((val* (*)(val*))(var_ffe->class->vft[COLOR_poset__POSetElement__tos]))(var_ffe) /* tos on <var_ffe:POSetElement[Object]>*/;
369 ((void (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var22, var_tt) /* add on <var22:HashSet[Object]>*/;
370 CONTINUE_label: (void)0;
371 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
372 }
373 BREAK_label: (void)0;
374 CONTINUE_label23: (void)0;
375 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
376 }
377 BREAK_label23: (void)0;
378 var24 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__tos]))(var_te) /* tos on <var_te:POSetElement[Object]>*/;
379 var25 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__Collection__has]))(var24, var_f) /* has on <var24:HashSet[Object]>*/;
380 if (var25){
381 goto RET_LABEL;
382 } else {
383 }
384 var26 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on <var_te:POSetElement[Object]>*/;
385 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_array__Collection__to_a]))(var26) /* to_a on <var26:HashSet[Object]>*/;
386 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on <var27:Array[nullable Object](Array[Object])>*/;
387 for(;;) {
388 var29 = ((short int (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var28) /* is_ok on <var28:Iterator[nullable Object]>*/;
389 if(!var29) break;
390 var30 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__item]))(var28) /* item on <var28:Iterator[nullable Object]>*/;
391 var_x = var30;
392 var31 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
393 var32 = ((val* (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var31, var_x) /* [] on <var31:HashMap[Object, POSetElement[Object]]>*/;
394 var_xe = var32;
395 var33 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__tos]))(var_xe) /* tos on <var_xe:POSetElement[Object]>*/;
396 var34 = ((short int (*)(val*, val*))(var33->class->vft[COLOR_abstract_collection__Collection__has]))(var33, var_f) /* has on <var33:HashSet[Object]>*/;
397 if (var34){
398 var35 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on <var_te:POSetElement[Object]>*/;
399 ((void (*)(val*, val*))(var35->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var35, var_x) /* remove on <var35:HashSet[Object]>*/;
400 var36 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__dtos]))(var_xe) /* dtos on <var_xe:POSetElement[Object]>*/;
401 ((void (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var36, var_t) /* remove on <var36:HashSet[Object]>*/;
402 } else {
403 }
404 CONTINUE_label37: (void)0;
405 ((void (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__next]))(var28) /* next on <var28:Iterator[nullable Object]>*/;
406 }
407 BREAK_label37: (void)0;
408 var38 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on <var_fe:POSetElement[Object]>*/;
409 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_array__Collection__to_a]))(var38) /* to_a on <var38:HashSet[Object]>*/;
410 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Array[nullable Object](Array[Object])>*/;
411 for(;;) {
412 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
413 if(!var41) break;
414 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
415 var_x43 = var42;
416 var44 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
417 var45 = ((val* (*)(val*, val*))(var44->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var44, var_x43) /* [] on <var44:HashMap[Object, POSetElement[Object]]>*/;
418 var_xe46 = var45;
419 var47 = ((val* (*)(val*))(var_xe46->class->vft[COLOR_poset__POSetElement__froms]))(var_xe46) /* froms on <var_xe46:POSetElement[Object]>*/;
420 var48 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_abstract_collection__Collection__has]))(var47, var_t) /* has on <var47:HashSet[Object]>*/;
421 if (var48){
422 var49 = ((val* (*)(val*))(var_xe46->class->vft[COLOR_poset__POSetElement__dfroms]))(var_xe46) /* dfroms on <var_xe46:POSetElement[Object]>*/;
423 ((void (*)(val*, val*))(var49->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var49, var_f) /* remove on <var49:HashSet[Object]>*/;
424 var50 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on <var_fe:POSetElement[Object]>*/;
425 ((void (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var50, var_x43) /* remove on <var50:HashSet[Object]>*/;
426 } else {
427 }
428 CONTINUE_label51: (void)0;
429 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
430 }
431 BREAK_label51: (void)0;
432 var52 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on <var_fe:POSetElement[Object]>*/;
433 ((void (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var52, var_t) /* add on <var52:HashSet[Object]>*/;
434 var53 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on <var_te:POSetElement[Object]>*/;
435 ((void (*)(val*, val*))(var53->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var53, var_f) /* add on <var53:HashSet[Object]>*/;
436 RET_LABEL:;
437 }
438 /* method poset#POSet#add_edge for (self: Object, Object, Object) */
439 void VIRTUAL_poset__POSet__add_edge(val* self, val* p0, val* p1) {
440 poset__POSet__add_edge(self, p0, p1);
441 RET_LABEL:;
442 }
443 /* method poset#POSet#has_edge for (self: POSet[Object], Object, Object): Bool */
444 short int poset__POSet__has_edge(val* self, val* p0, val* p1) {
445 short int var /* : Bool */;
446 short int var1 /* : Bool */;
447 int cltype;
448 int idtype;
449 const struct type* type_struct;
450 short int var2 /* : Bool */;
451 int cltype3;
452 int idtype4;
453 const struct type* type_struct5;
454 val* var_f /* var f: Object */;
455 val* var_t /* var t: Object */;
456 val* var6 /* : HashMap[Object, POSetElement[Object]] */;
457 val* var7 /* : Collection[Object] */;
458 short int var8 /* : Bool */;
459 short int var9 /* : Bool */;
460 short int var10 /* : Bool */;
461 val* var11 /* : HashMap[Object, POSetElement[Object]] */;
462 val* var12 /* : nullable Object */;
463 val* var_fe /* var fe: POSetElement[Object] */;
464 val* var13 /* : HashSet[Object] */;
465 short int var14 /* : Bool */;
466 /* Covariant cast for argument 0 (f) <p0:Object> isa POSet#0 */
467 /* <p0:Object> isa POSet#0 */
468 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
469 cltype = type_struct->color;
470 idtype = type_struct->id;
471 if(cltype >= p0->type->table_size) {
472 var1 = 0;
473 } else {
474 var1 = p0->type->type_table[cltype] == idtype;
475 }
476 if (!var1) {
477 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 109);
478 exit(1);
479 }
480 /* Covariant cast for argument 1 (t) <p1:Object> isa POSet#0 */
481 /* <p1:Object> isa POSet#0 */
482 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
483 cltype3 = type_struct5->color;
484 idtype4 = type_struct5->id;
485 if(cltype3 >= p1->type->table_size) {
486 var2 = 0;
487 } else {
488 var2 = p1->type->type_table[cltype3] == idtype4;
489 }
490 if (!var2) {
491 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 109);
492 exit(1);
493 }
494 var_f = p0;
495 var_t = p1;
496 var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
497 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__MapRead__keys]))(var6) /* keys on <var6:HashMap[Object, POSetElement[Object]]>*/;
498 var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_f) /* has on <var7:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
499 var9 = !var8;
500 if (var9){
501 var10 = 0;
502 var = var10;
503 goto RET_LABEL;
504 } else {
505 }
506 var11 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
507 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_f) /* [] on <var11:HashMap[Object, POSetElement[Object]]>*/;
508 var_fe = var12;
509 var13 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__tos]))(var_fe) /* tos on <var_fe:POSetElement[Object]>*/;
510 var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Collection__has]))(var13, var_t) /* has on <var13:HashSet[Object]>*/;
511 var = var14;
512 goto RET_LABEL;
513 RET_LABEL:;
514 return var;
515 }
516 /* method poset#POSet#has_edge for (self: Object, Object, Object): Bool */
517 short int VIRTUAL_poset__POSet__has_edge(val* self, val* p0, val* p1) {
518 short int var /* : Bool */;
519 short int var1 /* : Bool */;
520 var1 = poset__POSet__has_edge(self, p0, p1);
521 var = var1;
522 RET_LABEL:;
523 return var;
524 }
525 /* method poset#POSet#has_direct_edge for (self: POSet[Object], Object, Object): Bool */
526 short int poset__POSet__has_direct_edge(val* self, val* p0, val* p1) {
527 short int var /* : Bool */;
528 short int var1 /* : Bool */;
529 int cltype;
530 int idtype;
531 const struct type* type_struct;
532 short int var2 /* : Bool */;
533 int cltype3;
534 int idtype4;
535 const struct type* type_struct5;
536 val* var_f /* var f: Object */;
537 val* var_t /* var t: Object */;
538 val* var6 /* : HashMap[Object, POSetElement[Object]] */;
539 val* var7 /* : Collection[Object] */;
540 short int var8 /* : Bool */;
541 short int var9 /* : Bool */;
542 short int var10 /* : Bool */;
543 val* var11 /* : HashMap[Object, POSetElement[Object]] */;
544 val* var12 /* : nullable Object */;
545 val* var_fe /* var fe: POSetElement[Object] */;
546 val* var13 /* : HashSet[Object] */;
547 short int var14 /* : Bool */;
548 /* Covariant cast for argument 0 (f) <p0:Object> isa POSet#0 */
549 /* <p0:Object> isa POSet#0 */
550 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
551 cltype = type_struct->color;
552 idtype = type_struct->id;
553 if(cltype >= p0->type->table_size) {
554 var1 = 0;
555 } else {
556 var1 = p0->type->type_table[cltype] == idtype;
557 }
558 if (!var1) {
559 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 118);
560 exit(1);
561 }
562 /* Covariant cast for argument 1 (t) <p1:Object> isa POSet#0 */
563 /* <p1:Object> isa POSet#0 */
564 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
565 cltype3 = type_struct5->color;
566 idtype4 = type_struct5->id;
567 if(cltype3 >= p1->type->table_size) {
568 var2 = 0;
569 } else {
570 var2 = p1->type->type_table[cltype3] == idtype4;
571 }
572 if (!var2) {
573 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 118);
574 exit(1);
575 }
576 var_f = p0;
577 var_t = p1;
578 var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
579 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__MapRead__keys]))(var6) /* keys on <var6:HashMap[Object, POSetElement[Object]]>*/;
580 var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_f) /* has on <var7:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
581 var9 = !var8;
582 if (var9){
583 var10 = 0;
584 var = var10;
585 goto RET_LABEL;
586 } else {
587 }
588 var11 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
589 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_f) /* [] on <var11:HashMap[Object, POSetElement[Object]]>*/;
590 var_fe = var12;
591 var13 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on <var_fe:POSetElement[Object]>*/;
592 var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Collection__has]))(var13, var_t) /* has on <var13:HashSet[Object]>*/;
593 var = var14;
594 goto RET_LABEL;
595 RET_LABEL:;
596 return var;
597 }
598 /* method poset#POSet#has_direct_edge for (self: Object, Object, Object): Bool */
599 short int VIRTUAL_poset__POSet__has_direct_edge(val* self, val* p0, val* p1) {
600 short int var /* : Bool */;
601 short int var1 /* : Bool */;
602 var1 = poset__POSet__has_direct_edge(self, p0, p1);
603 var = var1;
604 RET_LABEL:;
605 return var;
606 }
607 /* method poset#POSet#show_dot for (self: POSet[Object]) */
608 void poset__POSet__show_dot(val* self) {
609 val* var /* : OProcess */;
610 static val* varonce;
611 val* var1 /* : String */;
612 char* var2 /* : NativeString */;
613 long var3 /* : Int */;
614 val* var4 /* : String */;
615 static val* varonce5;
616 val* var6 /* : String */;
617 char* var7 /* : NativeString */;
618 long var8 /* : Int */;
619 val* var9 /* : String */;
620 val* var10 /* : Array[String] */;
621 long var11 /* : Int */;
622 val* var12 /* : NativeArray[String] */;
623 val* var_f /* var f: OProcess */;
624 static val* varonce13;
625 val* var14 /* : String */;
626 char* var15 /* : NativeString */;
627 long var16 /* : Int */;
628 val* var17 /* : String */;
629 val* var18 /* : HashMap[Object, POSetElement[Object]] */;
630 val* var19 /* : Collection[Object] */;
631 val* var20 /* : Iterator[nullable Object] */;
632 short int var21 /* : Bool */;
633 val* var22 /* : nullable Object */;
634 val* var_x /* var x: Object */;
635 static val* varonce23;
636 val* var24 /* : String */;
637 char* var25 /* : NativeString */;
638 long var26 /* : Int */;
639 val* var27 /* : String */;
640 static val* varonce28;
641 val* var29 /* : String */;
642 char* var30 /* : NativeString */;
643 long var31 /* : Int */;
644 val* var32 /* : String */;
645 val* var33 /* : Array[Object] */;
646 long var34 /* : Int */;
647 val* var35 /* : NativeArray[Object] */;
648 val* var36 /* : String */;
649 val* var37 /* : HashMap[Object, POSetElement[Object]] */;
650 val* var38 /* : nullable Object */;
651 val* var_xe /* var xe: POSetElement[Object] */;
652 val* var39 /* : HashSet[Object] */;
653 val* var40 /* : Iterator[nullable Object] */;
654 short int var41 /* : Bool */;
655 val* var42 /* : nullable Object */;
656 val* var_y /* var y: Object */;
657 short int var43 /* : Bool */;
658 static val* varonce44;
659 val* var45 /* : String */;
660 char* var46 /* : NativeString */;
661 long var47 /* : Int */;
662 val* var48 /* : String */;
663 static val* varonce49;
664 val* var50 /* : String */;
665 char* var51 /* : NativeString */;
666 long var52 /* : Int */;
667 val* var53 /* : String */;
668 static val* varonce54;
669 val* var55 /* : String */;
670 char* var56 /* : NativeString */;
671 long var57 /* : Int */;
672 val* var58 /* : String */;
673 val* var59 /* : Array[Object] */;
674 long var60 /* : Int */;
675 val* var61 /* : NativeArray[Object] */;
676 val* var62 /* : String */;
677 static val* varonce63;
678 val* var64 /* : String */;
679 char* var65 /* : NativeString */;
680 long var66 /* : Int */;
681 val* var67 /* : String */;
682 static val* varonce68;
683 val* var69 /* : String */;
684 char* var70 /* : NativeString */;
685 long var71 /* : Int */;
686 val* var72 /* : String */;
687 static val* varonce73;
688 val* var74 /* : String */;
689 char* var75 /* : NativeString */;
690 long var76 /* : Int */;
691 val* var77 /* : String */;
692 val* var78 /* : Array[Object] */;
693 long var79 /* : Int */;
694 val* var80 /* : NativeArray[Object] */;
695 val* var81 /* : String */;
696 static val* varonce83;
697 val* var84 /* : String */;
698 char* var85 /* : NativeString */;
699 long var86 /* : Int */;
700 val* var87 /* : String */;
701 var = NEW_exec__OProcess(&type_exec__OProcess);
702 if (varonce) {
703 var1 = varonce;
704 } else {
705 var2 = "dot";
706 var3 = 3;
707 var4 = string__NativeString__to_s_with_length(var2, var3);
708 var1 = var4;
709 varonce = var1;
710 }
711 if (varonce5) {
712 var6 = varonce5;
713 } else {
714 var7 = "-Txlib";
715 var8 = 6;
716 var9 = string__NativeString__to_s_with_length(var7, var8);
717 var6 = var9;
718 varonce5 = var6;
719 }
720 var10 = NEW_array__Array(&type_array__Arraystring__String);
721 { /* var10 = array_instance Array[String] */
722 var11 = 1;
723 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraystring__String);
724 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var6;
725 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[String]>*/;
726 CHECK_NEW_array__Array(var10);
727 }
728 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_exec__OProcess__init]))(var, var1, var10) /* init on <var:OProcess>*/;
729 CHECK_NEW_exec__OProcess(var);
730 var_f = var;
731 if (varonce13) {
732 var14 = varonce13;
733 } else {
734 var15 = "digraph {\n";
735 var16 = 10;
736 var17 = string__NativeString__to_s_with_length(var15, var16);
737 var14 = var17;
738 varonce13 = var14;
739 }
740 ((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var14) /* write on <var_f:OProcess>*/;
741 var18 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
742 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__MapRead__keys]))(var18) /* keys on <var18:HashMap[Object, POSetElement[Object]]>*/;
743 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on <var19:Collection[Object](HashMapKeys[Object, POSetElement[Object]])>*/;
744 for(;;) {
745 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
746 if(!var21) break;
747 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
748 var_x = var22;
749 if (varonce23) {
750 var24 = varonce23;
751 } else {
752 var25 = "\"";
753 var26 = 1;
754 var27 = string__NativeString__to_s_with_length(var25, var26);
755 var24 = var27;
756 varonce23 = var24;
757 }
758 if (varonce28) {
759 var29 = varonce28;
760 } else {
761 var30 = "\";\n";
762 var31 = 3;
763 var32 = string__NativeString__to_s_with_length(var30, var31);
764 var29 = var32;
765 varonce28 = var29;
766 }
767 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
768 { /* var33 = array_instance Array[Object] */
769 var34 = 3;
770 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
771 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var24;
772 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var_x;
773 ((struct instance_array__NativeArray*)var35)->values[2] = (val*) var29;
774 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
775 CHECK_NEW_array__Array(var33);
776 }
777 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
778 ((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var36) /* write on <var_f:OProcess>*/;
779 var37 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
780 var38 = ((val* (*)(val*, val*))(var37->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var37, var_x) /* [] on <var37:HashMap[Object, POSetElement[Object]]>*/;
781 var_xe = var38;
782 var39 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__dtos]))(var_xe) /* dtos on <var_xe:POSetElement[Object]>*/;
783 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:HashSet[Object]>*/;
784 for(;;) {
785 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
786 if(!var41) break;
787 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
788 var_y = var42;
789 var43 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_poset__POSet__has_edge]))(self, var_y, var_x) /* has_edge on <self:POSet[Object]>*/;
790 if (var43){
791 if (varonce44) {
792 var45 = varonce44;
793 } else {
794 var46 = "\"";
795 var47 = 1;
796 var48 = string__NativeString__to_s_with_length(var46, var47);
797 var45 = var48;
798 varonce44 = var45;
799 }
800 if (varonce49) {
801 var50 = varonce49;
802 } else {
803 var51 = "\" -> \"";
804 var52 = 6;
805 var53 = string__NativeString__to_s_with_length(var51, var52);
806 var50 = var53;
807 varonce49 = var50;
808 }
809 if (varonce54) {
810 var55 = varonce54;
811 } else {
812 var56 = "\"[dir=both];\n";
813 var57 = 13;
814 var58 = string__NativeString__to_s_with_length(var56, var57);
815 var55 = var58;
816 varonce54 = var55;
817 }
818 var59 = NEW_array__Array(&type_array__Arraykernel__Object);
819 { /* var59 = array_instance Array[Object] */
820 var60 = 5;
821 var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object);
822 ((struct instance_array__NativeArray*)var61)->values[0] = (val*) var45;
823 ((struct instance_array__NativeArray*)var61)->values[1] = (val*) var_x;
824 ((struct instance_array__NativeArray*)var61)->values[2] = (val*) var50;
825 ((struct instance_array__NativeArray*)var61)->values[3] = (val*) var_y;
826 ((struct instance_array__NativeArray*)var61)->values[4] = (val*) var55;
827 ((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
828 CHECK_NEW_array__Array(var59);
829 }
830 var62 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
831 ((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var62) /* write on <var_f:OProcess>*/;
832 } else {
833 if (varonce63) {
834 var64 = varonce63;
835 } else {
836 var65 = "\"";
837 var66 = 1;
838 var67 = string__NativeString__to_s_with_length(var65, var66);
839 var64 = var67;
840 varonce63 = var64;
841 }
842 if (varonce68) {
843 var69 = varonce68;
844 } else {
845 var70 = "\" -> \"";
846 var71 = 6;
847 var72 = string__NativeString__to_s_with_length(var70, var71);
848 var69 = var72;
849 varonce68 = var69;
850 }
851 if (varonce73) {
852 var74 = varonce73;
853 } else {
854 var75 = "\";\n";
855 var76 = 3;
856 var77 = string__NativeString__to_s_with_length(var75, var76);
857 var74 = var77;
858 varonce73 = var74;
859 }
860 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
861 { /* var78 = array_instance Array[Object] */
862 var79 = 5;
863 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
864 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var64;
865 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var_x;
866 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var69;
867 ((struct instance_array__NativeArray*)var80)->values[3] = (val*) var_y;
868 ((struct instance_array__NativeArray*)var80)->values[4] = (val*) var74;
869 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
870 CHECK_NEW_array__Array(var78);
871 }
872 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
873 ((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var81) /* write on <var_f:OProcess>*/;
874 }
875 CONTINUE_label: (void)0;
876 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
877 }
878 BREAK_label: (void)0;
879 CONTINUE_label82: (void)0;
880 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
881 }
882 BREAK_label82: (void)0;
883 if (varonce83) {
884 var84 = varonce83;
885 } else {
886 var85 = "}\n";
887 var86 = 2;
888 var87 = string__NativeString__to_s_with_length(var85, var86);
889 var84 = var87;
890 varonce83 = var84;
891 }
892 ((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var84) /* write on <var_f:OProcess>*/;
893 RET_LABEL:;
894 }
895 /* method poset#POSet#show_dot for (self: Object) */
896 void VIRTUAL_poset__POSet__show_dot(val* self) {
897 poset__POSet__show_dot(self);
898 RET_LABEL:;
899 }
900 /* method poset#POSet#compare for (self: POSet[Object], Object, Object): Int */
901 long poset__POSet__compare(val* self, val* p0, val* p1) {
902 long var /* : Int */;
903 short int var1 /* : Bool */;
904 int cltype;
905 int idtype;
906 const struct type* type_struct;
907 short int var2 /* : Bool */;
908 int cltype3;
909 int idtype4;
910 const struct type* type_struct5;
911 val* var_a /* var a: Object */;
912 val* var_b /* var b: Object */;
913 val* var6 /* : HashMap[Object, POSetElement[Object]] */;
914 val* var7 /* : nullable Object */;
915 val* var_ae /* var ae: POSetElement[Object] */;
916 val* var8 /* : HashMap[Object, POSetElement[Object]] */;
917 val* var9 /* : nullable Object */;
918 val* var_be /* var be: POSetElement[Object] */;
919 val* var10 /* : HashSet[Object] */;
920 long var11 /* : Int */;
921 val* var12 /* : HashSet[Object] */;
922 long var13 /* : Int */;
923 long var14 /* : Int */;
924 long var_res /* var res: Int */;
925 long var15 /* : Int */;
926 short int var16 /* : Bool */;
927 short int var18 /* : Bool */;
928 short int var19 /* : Bool */;
929 val* var20 /* : HashMap[Object, POSetElement[Object]] */;
930 val* var21 /* : nullable Object */;
931 long var22 /* : Int */;
932 val* var23 /* : HashMap[Object, POSetElement[Object]] */;
933 val* var24 /* : nullable Object */;
934 long var25 /* : Int */;
935 long var26 /* : Int */;
936 /* Covariant cast for argument 0 (a) <p0:Object> isa POSet#0 */
937 /* <p0:Object> isa POSet#0 */
938 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
939 cltype = type_struct->color;
940 idtype = type_struct->id;
941 if(cltype >= p0->type->table_size) {
942 var1 = 0;
943 } else {
944 var1 = p0->type->type_table[cltype] == idtype;
945 }
946 if (!var1) {
947 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 151);
948 exit(1);
949 }
950 /* Covariant cast for argument 1 (b) <p1:Object> isa POSet#0 */
951 /* <p1:Object> isa POSet#0 */
952 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
953 cltype3 = type_struct5->color;
954 idtype4 = type_struct5->id;
955 if(cltype3 >= p1->type->table_size) {
956 var2 = 0;
957 } else {
958 var2 = p1->type->type_table[cltype3] == idtype4;
959 }
960 if (!var2) {
961 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 151);
962 exit(1);
963 }
964 var_a = p0;
965 var_b = p1;
966 var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
967 var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, var_a) /* [] on <var6:HashMap[Object, POSetElement[Object]]>*/;
968 var_ae = var7;
969 var8 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
970 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_b) /* [] on <var8:HashMap[Object, POSetElement[Object]]>*/;
971 var_be = var9;
972 var10 = ((val* (*)(val*))(var_ae->class->vft[COLOR_poset__POSetElement__tos]))(var_ae) /* tos on <var_ae:POSetElement[Object]>*/;
973 var11 = ((long (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__length]))(var10) /* length on <var10:HashSet[Object]>*/;
974 var12 = ((val* (*)(val*))(var_be->class->vft[COLOR_poset__POSetElement__tos]))(var_be) /* tos on <var_be:POSetElement[Object]>*/;
975 var13 = ((long (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__length]))(var12) /* length on <var12:HashSet[Object]>*/;
976 var14 = kernel__Int___60d_61d_62d(var11, var13);
977 var_res = var14;
978 var15 = 0;
979 { /* Inline kernel#Int#!= (var_res,var15) */
980 var18 = var_res == var15;
981 var19 = !var18;
982 var16 = var19;
983 goto RET_LABEL17;
984 RET_LABEL17:(void)0;
985 }
986 if (var16){
987 var = var_res;
988 goto RET_LABEL;
989 } else {
990 }
991 var20 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
992 var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var20, var_a) /* [] on <var20:HashMap[Object, POSetElement[Object]]>*/;
993 var22 = ((long (*)(val*))(var21->class->vft[COLOR_poset__POSetElement__count]))(var21) /* count on <var21:nullable Object(POSetElement[Object])>*/;
994 var23 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on <self:POSet[Object]>*/;
995 var24 = ((val* (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var23, var_b) /* [] on <var23:HashMap[Object, POSetElement[Object]]>*/;
996 var25 = ((long (*)(val*))(var24->class->vft[COLOR_poset__POSetElement__count]))(var24) /* count on <var24:nullable Object(POSetElement[Object])>*/;
997 var26 = kernel__Int___60d_61d_62d(var22, var25);
998 var = var26;
999 goto RET_LABEL;
1000 RET_LABEL:;
1001 return var;
1002 }
1003 /* method poset#POSet#compare for (self: Object, nullable Object, nullable Object): Int */
1004 long VIRTUAL_poset__POSet__compare(val* self, val* p0, val* p1) {
1005 long var /* : Int */;
1006 long var1 /* : Int */;
1007 var1 = poset__POSet__compare(self, p0, p1);
1008 var = var1;
1009 RET_LABEL:;
1010 return var;
1011 }
1012 /* method poset#POSet#init for (self: POSet[Object]) */
1013 void poset__POSet__init(val* self) {
1014 RET_LABEL:;
1015 }
1016 /* method poset#POSet#init for (self: Object) */
1017 void VIRTUAL_poset__POSet__init(val* self) {
1018 poset__POSet__init(self);
1019 RET_LABEL:;
1020 }
1021 /* method poset#POSetElement#poset for (self: POSetElement[Object]): POSet[Object] */
1022 val* poset__POSetElement__poset(val* self) {
1023 val* var /* : POSet[Object] */;
1024 val* var1 /* : POSet[Object] */;
1025 var1 = self->attrs[COLOR_poset__POSetElement___64dposet].val; /* @poset on <self:POSetElement[Object]> */
1026 if (var1 == NULL) {
1027 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset", "lib/poset.nit", 181);
1028 exit(1);
1029 }
1030 var = var1;
1031 RET_LABEL:;
1032 return var;
1033 }
1034 /* method poset#POSetElement#poset for (self: Object): POSet[Object] */
1035 val* VIRTUAL_poset__POSetElement__poset(val* self) {
1036 val* var /* : POSet[Object] */;
1037 val* var1 /* : POSet[Object] */;
1038 var1 = poset__POSetElement__poset(self);
1039 var = var1;
1040 RET_LABEL:;
1041 return var;
1042 }
1043 /* method poset#POSetElement#poset= for (self: POSetElement[Object], POSet[Object]) */
1044 void poset__POSetElement__poset_61d(val* self, val* p0) {
1045 short int var /* : Bool */;
1046 int cltype;
1047 int idtype;
1048 const struct type* type_struct;
1049 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[POSetElement#0] */
1050 /* <p0:POSet[Object]> isa POSet[POSetElement#0] */
1051 type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0];
1052 cltype = type_struct->color;
1053 idtype = type_struct->id;
1054 if(cltype >= p0->type->table_size) {
1055 var = 0;
1056 } else {
1057 var = p0->type->type_table[cltype] == idtype;
1058 }
1059 if (!var) {
1060 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 181);
1061 exit(1);
1062 }
1063 self->attrs[COLOR_poset__POSetElement___64dposet].val = p0; /* @poset on <self:POSetElement[Object]> */
1064 RET_LABEL:;
1065 }
1066 /* method poset#POSetElement#poset= for (self: Object, POSet[Object]) */
1067 void VIRTUAL_poset__POSetElement__poset_61d(val* self, val* p0) {
1068 poset__POSetElement__poset_61d(self, p0);
1069 RET_LABEL:;
1070 }
1071 /* method poset#POSetElement#element for (self: POSetElement[Object]): Object */
1072 val* poset__POSetElement__element(val* self) {
1073 val* var /* : Object */;
1074 val* var1 /* : Object */;
1075 var1 = self->attrs[COLOR_poset__POSetElement___64delement].val; /* @element on <self:POSetElement[Object]> */
1076 if (var1 == NULL) {
1077 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @element", "lib/poset.nit", 184);
1078 exit(1);
1079 }
1080 var = var1;
1081 RET_LABEL:;
1082 return var;
1083 }
1084 /* method poset#POSetElement#element for (self: Object): Object */
1085 val* VIRTUAL_poset__POSetElement__element(val* self) {
1086 val* var /* : Object */;
1087 val* var1 /* : Object */;
1088 var1 = poset__POSetElement__element(self);
1089 var = var1;
1090 RET_LABEL:;
1091 return var;
1092 }
1093 /* method poset#POSetElement#element= for (self: POSetElement[Object], Object) */
1094 void poset__POSetElement__element_61d(val* self, val* p0) {
1095 short int var /* : Bool */;
1096 int cltype;
1097 int idtype;
1098 const struct type* type_struct;
1099 /* Covariant cast for argument 0 (element) <p0:Object> isa POSetElement#0 */
1100 /* <p0:Object> isa POSetElement#0 */
1101 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1102 cltype = type_struct->color;
1103 idtype = type_struct->id;
1104 if(cltype >= p0->type->table_size) {
1105 var = 0;
1106 } else {
1107 var = p0->type->type_table[cltype] == idtype;
1108 }
1109 if (!var) {
1110 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 184);
1111 exit(1);
1112 }
1113 self->attrs[COLOR_poset__POSetElement___64delement].val = p0; /* @element on <self:POSetElement[Object]> */
1114 RET_LABEL:;
1115 }
1116 /* method poset#POSetElement#element= for (self: Object, Object) */
1117 void VIRTUAL_poset__POSetElement__element_61d(val* self, val* p0) {
1118 poset__POSetElement__element_61d(self, p0);
1119 RET_LABEL:;
1120 }
1121 /* method poset#POSetElement#tos for (self: POSetElement[Object]): HashSet[Object] */
1122 val* poset__POSetElement__tos(val* self) {
1123 val* var /* : HashSet[Object] */;
1124 val* var1 /* : HashSet[Object] */;
1125 var1 = self->attrs[COLOR_poset__POSetElement___64dtos].val; /* @tos on <self:POSetElement[Object]> */
1126 if (var1 == NULL) {
1127 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @tos", "lib/poset.nit", 187);
1128 exit(1);
1129 }
1130 var = var1;
1131 RET_LABEL:;
1132 return var;
1133 }
1134 /* method poset#POSetElement#tos for (self: Object): HashSet[Object] */
1135 val* VIRTUAL_poset__POSetElement__tos(val* self) {
1136 val* var /* : HashSet[Object] */;
1137 val* var1 /* : HashSet[Object] */;
1138 var1 = poset__POSetElement__tos(self);
1139 var = var1;
1140 RET_LABEL:;
1141 return var;
1142 }
1143 /* method poset#POSetElement#tos= for (self: POSetElement[Object], HashSet[Object]) */
1144 void poset__POSetElement__tos_61d(val* self, val* p0) {
1145 short int var /* : Bool */;
1146 int cltype;
1147 int idtype;
1148 const struct type* type_struct;
1149 /* Covariant cast for argument 0 (tos) <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1150 /* <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1151 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0];
1152 cltype = type_struct->color;
1153 idtype = type_struct->id;
1154 if(cltype >= p0->type->table_size) {
1155 var = 0;
1156 } else {
1157 var = p0->type->type_table[cltype] == idtype;
1158 }
1159 if (!var) {
1160 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 187);
1161 exit(1);
1162 }
1163 self->attrs[COLOR_poset__POSetElement___64dtos].val = p0; /* @tos on <self:POSetElement[Object]> */
1164 RET_LABEL:;
1165 }
1166 /* method poset#POSetElement#tos= for (self: Object, HashSet[Object]) */
1167 void VIRTUAL_poset__POSetElement__tos_61d(val* self, val* p0) {
1168 poset__POSetElement__tos_61d(self, p0);
1169 RET_LABEL:;
1170 }
1171 /* method poset#POSetElement#froms for (self: POSetElement[Object]): HashSet[Object] */
1172 val* poset__POSetElement__froms(val* self) {
1173 val* var /* : HashSet[Object] */;
1174 val* var1 /* : HashSet[Object] */;
1175 var1 = self->attrs[COLOR_poset__POSetElement___64dfroms].val; /* @froms on <self:POSetElement[Object]> */
1176 if (var1 == NULL) {
1177 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @froms", "lib/poset.nit", 188);
1178 exit(1);
1179 }
1180 var = var1;
1181 RET_LABEL:;
1182 return var;
1183 }
1184 /* method poset#POSetElement#froms for (self: Object): HashSet[Object] */
1185 val* VIRTUAL_poset__POSetElement__froms(val* self) {
1186 val* var /* : HashSet[Object] */;
1187 val* var1 /* : HashSet[Object] */;
1188 var1 = poset__POSetElement__froms(self);
1189 var = var1;
1190 RET_LABEL:;
1191 return var;
1192 }
1193 /* method poset#POSetElement#froms= for (self: POSetElement[Object], HashSet[Object]) */
1194 void poset__POSetElement__froms_61d(val* self, val* p0) {
1195 short int var /* : Bool */;
1196 int cltype;
1197 int idtype;
1198 const struct type* type_struct;
1199 /* Covariant cast for argument 0 (froms) <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1200 /* <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1201 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0];
1202 cltype = type_struct->color;
1203 idtype = type_struct->id;
1204 if(cltype >= p0->type->table_size) {
1205 var = 0;
1206 } else {
1207 var = p0->type->type_table[cltype] == idtype;
1208 }
1209 if (!var) {
1210 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 188);
1211 exit(1);
1212 }
1213 self->attrs[COLOR_poset__POSetElement___64dfroms].val = p0; /* @froms on <self:POSetElement[Object]> */
1214 RET_LABEL:;
1215 }
1216 /* method poset#POSetElement#froms= for (self: Object, HashSet[Object]) */
1217 void VIRTUAL_poset__POSetElement__froms_61d(val* self, val* p0) {
1218 poset__POSetElement__froms_61d(self, p0);
1219 RET_LABEL:;
1220 }
1221 /* method poset#POSetElement#dtos for (self: POSetElement[Object]): HashSet[Object] */
1222 val* poset__POSetElement__dtos(val* self) {
1223 val* var /* : HashSet[Object] */;
1224 val* var1 /* : HashSet[Object] */;
1225 var1 = self->attrs[COLOR_poset__POSetElement___64ddtos].val; /* @dtos on <self:POSetElement[Object]> */
1226 if (var1 == NULL) {
1227 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @dtos", "lib/poset.nit", 189);
1228 exit(1);
1229 }
1230 var = var1;
1231 RET_LABEL:;
1232 return var;
1233 }
1234 /* method poset#POSetElement#dtos for (self: Object): HashSet[Object] */
1235 val* VIRTUAL_poset__POSetElement__dtos(val* self) {
1236 val* var /* : HashSet[Object] */;
1237 val* var1 /* : HashSet[Object] */;
1238 var1 = poset__POSetElement__dtos(self);
1239 var = var1;
1240 RET_LABEL:;
1241 return var;
1242 }
1243 /* method poset#POSetElement#dtos= for (self: POSetElement[Object], HashSet[Object]) */
1244 void poset__POSetElement__dtos_61d(val* self, val* p0) {
1245 short int var /* : Bool */;
1246 int cltype;
1247 int idtype;
1248 const struct type* type_struct;
1249 /* Covariant cast for argument 0 (dtos) <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1250 /* <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1251 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0];
1252 cltype = type_struct->color;
1253 idtype = type_struct->id;
1254 if(cltype >= p0->type->table_size) {
1255 var = 0;
1256 } else {
1257 var = p0->type->type_table[cltype] == idtype;
1258 }
1259 if (!var) {
1260 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 189);
1261 exit(1);
1262 }
1263 self->attrs[COLOR_poset__POSetElement___64ddtos].val = p0; /* @dtos on <self:POSetElement[Object]> */
1264 RET_LABEL:;
1265 }
1266 /* method poset#POSetElement#dtos= for (self: Object, HashSet[Object]) */
1267 void VIRTUAL_poset__POSetElement__dtos_61d(val* self, val* p0) {
1268 poset__POSetElement__dtos_61d(self, p0);
1269 RET_LABEL:;
1270 }
1271 /* method poset#POSetElement#dfroms for (self: POSetElement[Object]): HashSet[Object] */
1272 val* poset__POSetElement__dfroms(val* self) {
1273 val* var /* : HashSet[Object] */;
1274 val* var1 /* : HashSet[Object] */;
1275 var1 = self->attrs[COLOR_poset__POSetElement___64ddfroms].val; /* @dfroms on <self:POSetElement[Object]> */
1276 if (var1 == NULL) {
1277 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @dfroms", "lib/poset.nit", 190);
1278 exit(1);
1279 }
1280 var = var1;
1281 RET_LABEL:;
1282 return var;
1283 }
1284 /* method poset#POSetElement#dfroms for (self: Object): HashSet[Object] */
1285 val* VIRTUAL_poset__POSetElement__dfroms(val* self) {
1286 val* var /* : HashSet[Object] */;
1287 val* var1 /* : HashSet[Object] */;
1288 var1 = poset__POSetElement__dfroms(self);
1289 var = var1;
1290 RET_LABEL:;
1291 return var;
1292 }
1293 /* method poset#POSetElement#dfroms= for (self: POSetElement[Object], HashSet[Object]) */
1294 void poset__POSetElement__dfroms_61d(val* self, val* p0) {
1295 short int var /* : Bool */;
1296 int cltype;
1297 int idtype;
1298 const struct type* type_struct;
1299 /* Covariant cast for argument 0 (dfroms) <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1300 /* <p0:HashSet[Object]> isa HashSet[POSetElement#0] */
1301 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0];
1302 cltype = type_struct->color;
1303 idtype = type_struct->id;
1304 if(cltype >= p0->type->table_size) {
1305 var = 0;
1306 } else {
1307 var = p0->type->type_table[cltype] == idtype;
1308 }
1309 if (!var) {
1310 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 190);
1311 exit(1);
1312 }
1313 self->attrs[COLOR_poset__POSetElement___64ddfroms].val = p0; /* @dfroms on <self:POSetElement[Object]> */
1314 RET_LABEL:;
1315 }
1316 /* method poset#POSetElement#dfroms= for (self: Object, HashSet[Object]) */
1317 void VIRTUAL_poset__POSetElement__dfroms_61d(val* self, val* p0) {
1318 poset__POSetElement__dfroms_61d(self, p0);
1319 RET_LABEL:;
1320 }
1321 /* method poset#POSetElement#count for (self: POSetElement[Object]): Int */
1322 long poset__POSetElement__count(val* self) {
1323 long var /* : Int */;
1324 long var1 /* : Int */;
1325 var1 = self->attrs[COLOR_poset__POSetElement___64dcount].l; /* @count on <self:POSetElement[Object]> */
1326 var = var1;
1327 RET_LABEL:;
1328 return var;
1329 }
1330 /* method poset#POSetElement#count for (self: Object): Int */
1331 long VIRTUAL_poset__POSetElement__count(val* self) {
1332 long var /* : Int */;
1333 long var1 /* : Int */;
1334 var1 = poset__POSetElement__count(self);
1335 var = var1;
1336 RET_LABEL:;
1337 return var;
1338 }
1339 /* method poset#POSetElement#count= for (self: POSetElement[Object], Int) */
1340 void poset__POSetElement__count_61d(val* self, long p0) {
1341 self->attrs[COLOR_poset__POSetElement___64dcount].l = p0; /* @count on <self:POSetElement[Object]> */
1342 RET_LABEL:;
1343 }
1344 /* method poset#POSetElement#count= for (self: Object, Int) */
1345 void VIRTUAL_poset__POSetElement__count_61d(val* self, long p0) {
1346 poset__POSetElement__count_61d(self, p0);
1347 RET_LABEL:;
1348 }
1349 /* method poset#POSetElement#greaters for (self: POSetElement[Object]): Collection[Object] */
1350 val* poset__POSetElement__greaters(val* self) {
1351 val* var /* : Collection[Object] */;
1352 val* var1 /* : HashSet[Object] */;
1353 var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on <self:POSetElement[Object]>*/;
1354 var = var1;
1355 goto RET_LABEL;
1356 RET_LABEL:;
1357 return var;
1358 }
1359 /* method poset#POSetElement#greaters for (self: Object): Collection[Object] */
1360 val* VIRTUAL_poset__POSetElement__greaters(val* self) {
1361 val* var /* : Collection[Object] */;
1362 val* var1 /* : Collection[Object] */;
1363 var1 = poset__POSetElement__greaters(self);
1364 var = var1;
1365 RET_LABEL:;
1366 return var;
1367 }
1368 /* method poset#POSetElement#direct_greaters for (self: POSetElement[Object]): Collection[Object] */
1369 val* poset__POSetElement__direct_greaters(val* self) {
1370 val* var /* : Collection[Object] */;
1371 val* var1 /* : HashSet[Object] */;
1372 var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__dtos]))(self) /* dtos on <self:POSetElement[Object]>*/;
1373 var = var1;
1374 goto RET_LABEL;
1375 RET_LABEL:;
1376 return var;
1377 }
1378 /* method poset#POSetElement#direct_greaters for (self: Object): Collection[Object] */
1379 val* VIRTUAL_poset__POSetElement__direct_greaters(val* self) {
1380 val* var /* : Collection[Object] */;
1381 val* var1 /* : Collection[Object] */;
1382 var1 = poset__POSetElement__direct_greaters(self);
1383 var = var1;
1384 RET_LABEL:;
1385 return var;
1386 }
1387 /* method poset#POSetElement#smallers for (self: POSetElement[Object]): Collection[Object] */
1388 val* poset__POSetElement__smallers(val* self) {
1389 val* var /* : Collection[Object] */;
1390 val* var1 /* : HashSet[Object] */;
1391 var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__froms]))(self) /* froms on <self:POSetElement[Object]>*/;
1392 var = var1;
1393 goto RET_LABEL;
1394 RET_LABEL:;
1395 return var;
1396 }
1397 /* method poset#POSetElement#smallers for (self: Object): Collection[Object] */
1398 val* VIRTUAL_poset__POSetElement__smallers(val* self) {
1399 val* var /* : Collection[Object] */;
1400 val* var1 /* : Collection[Object] */;
1401 var1 = poset__POSetElement__smallers(self);
1402 var = var1;
1403 RET_LABEL:;
1404 return var;
1405 }
1406 /* method poset#POSetElement#direct_smallers for (self: POSetElement[Object]): Collection[Object] */
1407 val* poset__POSetElement__direct_smallers(val* self) {
1408 val* var /* : Collection[Object] */;
1409 val* var1 /* : HashSet[Object] */;
1410 var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__dfroms]))(self) /* dfroms on <self:POSetElement[Object]>*/;
1411 var = var1;
1412 goto RET_LABEL;
1413 RET_LABEL:;
1414 return var;
1415 }
1416 /* method poset#POSetElement#direct_smallers for (self: Object): Collection[Object] */
1417 val* VIRTUAL_poset__POSetElement__direct_smallers(val* self) {
1418 val* var /* : Collection[Object] */;
1419 val* var1 /* : Collection[Object] */;
1420 var1 = poset__POSetElement__direct_smallers(self);
1421 var = var1;
1422 RET_LABEL:;
1423 return var;
1424 }
1425 /* method poset#POSetElement#<= for (self: POSetElement[Object], Object): Bool */
1426 short int poset__POSetElement___60d_61d(val* self, val* p0) {
1427 short int var /* : Bool */;
1428 short int var1 /* : Bool */;
1429 int cltype;
1430 int idtype;
1431 const struct type* type_struct;
1432 val* var_t /* var t: Object */;
1433 val* var2 /* : HashSet[Object] */;
1434 short int var3 /* : Bool */;
1435 /* Covariant cast for argument 0 (t) <p0:Object> isa POSetElement#0 */
1436 /* <p0:Object> isa POSetElement#0 */
1437 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1438 cltype = type_struct->color;
1439 idtype = type_struct->id;
1440 if(cltype >= p0->type->table_size) {
1441 var1 = 0;
1442 } else {
1443 var1 = p0->type->type_table[cltype] == idtype;
1444 }
1445 if (!var1) {
1446 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 222);
1447 exit(1);
1448 }
1449 var_t = p0;
1450 var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on <self:POSetElement[Object]>*/;
1451 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__Collection__has]))(var2, var_t) /* has on <var2:HashSet[Object]>*/;
1452 var = var3;
1453 goto RET_LABEL;
1454 RET_LABEL:;
1455 return var;
1456 }
1457 /* method poset#POSetElement#<= for (self: Object, Object): Bool */
1458 short int VIRTUAL_poset__POSetElement___60d_61d(val* self, val* p0) {
1459 short int var /* : Bool */;
1460 short int var1 /* : Bool */;
1461 var1 = poset__POSetElement___60d_61d(self, p0);
1462 var = var1;
1463 RET_LABEL:;
1464 return var;
1465 }
1466 /* method poset#POSetElement#< for (self: POSetElement[Object], Object): Bool */
1467 short int poset__POSetElement___60d(val* self, val* p0) {
1468 short int var /* : Bool */;
1469 short int var1 /* : Bool */;
1470 int cltype;
1471 int idtype;
1472 const struct type* type_struct;
1473 val* var_t /* var t: Object */;
1474 short int var2 /* : Bool */;
1475 val* var3 /* : Object */;
1476 short int var4 /* : Bool */;
1477 short int var_ /* var : Bool */;
1478 val* var5 /* : HashSet[Object] */;
1479 short int var6 /* : Bool */;
1480 /* Covariant cast for argument 0 (t) <p0:Object> isa POSetElement#0 */
1481 /* <p0:Object> isa POSetElement#0 */
1482 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1483 cltype = type_struct->color;
1484 idtype = type_struct->id;
1485 if(cltype >= p0->type->table_size) {
1486 var1 = 0;
1487 } else {
1488 var1 = p0->type->type_table[cltype] == idtype;
1489 }
1490 if (!var1) {
1491 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 228);
1492 exit(1);
1493 }
1494 var_t = p0;
1495 var3 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__element]))(self) /* element on <self:POSetElement[Object]>*/;
1496 var4 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___33d_61d]))(var_t, var3) /* != on <var_t:Object>*/;
1497 var_ = var4;
1498 if (var4){
1499 var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on <self:POSetElement[Object]>*/;
1500 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_t) /* has on <var5:HashSet[Object]>*/;
1501 var2 = var6;
1502 } else {
1503 var2 = var_;
1504 }
1505 var = var2;
1506 goto RET_LABEL;
1507 RET_LABEL:;
1508 return var;
1509 }
1510 /* method poset#POSetElement#< for (self: Object, Object): Bool */
1511 short int VIRTUAL_poset__POSetElement___60d(val* self, val* p0) {
1512 short int var /* : Bool */;
1513 short int var1 /* : Bool */;
1514 var1 = poset__POSetElement___60d(self, p0);
1515 var = var1;
1516 RET_LABEL:;
1517 return var;
1518 }
1519 /* method poset#POSetElement#init for (self: POSetElement[Object], POSet[Object], Object, Int) */
1520 void poset__POSetElement__init(val* self, val* p0, val* p1, long p2) {
1521 short int var /* : Bool */;
1522 int cltype;
1523 int idtype;
1524 const struct type* type_struct;
1525 short int var1 /* : Bool */;
1526 int cltype2;
1527 int idtype3;
1528 const struct type* type_struct4;
1529 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[POSetElement#0] */
1530 /* <p0:POSet[Object]> isa POSet[POSetElement#0] */
1531 type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0];
1532 cltype = type_struct->color;
1533 idtype = type_struct->id;
1534 if(cltype >= p0->type->table_size) {
1535 var = 0;
1536 } else {
1537 var = p0->type->type_table[cltype] == idtype;
1538 }
1539 if (!var) {
1540 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 168);
1541 exit(1);
1542 }
1543 /* Covariant cast for argument 1 (element) <p1:Object> isa POSetElement#0 */
1544 /* <p1:Object> isa POSetElement#0 */
1545 type_struct4 = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1546 cltype2 = type_struct4->color;
1547 idtype3 = type_struct4->id;
1548 if(cltype2 >= p1->type->table_size) {
1549 var1 = 0;
1550 } else {
1551 var1 = p1->type->type_table[cltype2] == idtype3;
1552 }
1553 if (!var1) {
1554 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 168);
1555 exit(1);
1556 }
1557 self->attrs[COLOR_poset__POSetElement___64dposet].val = p0; /* @poset on <self:POSetElement[Object]> */
1558 self->attrs[COLOR_poset__POSetElement___64delement].val = p1; /* @element on <self:POSetElement[Object]> */
1559 self->attrs[COLOR_poset__POSetElement___64dcount].l = p2; /* @count on <self:POSetElement[Object]> */
1560 RET_LABEL:;
1561 }
1562 /* method poset#POSetElement#init for (self: Object, POSet[Object], Object, Int) */
1563 void VIRTUAL_poset__POSetElement__init(val* self, val* p0, val* p1, long p2) {
1564 poset__POSetElement__init(self, p0, p1, p2);
1565 RET_LABEL:;
1566 }