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