1 #include "layout_builders.sep.0.h"
2 /* method layout_builders#Layout#ids for (self: Layout[Object]): Map[Object, Int] */
3 val
* layout_builders__Layout__ids(val
* self
) {
4 val
* var
/* : Map[Object, Int] */;
5 val
* var1
/* : Map[Object, Int] */;
6 var1
= self
->attrs
[COLOR_layout_builders__Layout___64dids
].val
; /* @ids on <self:Layout[Object]> */
8 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @ids", "src/layout_builders.nit", 34);
15 /* method layout_builders#Layout#ids for (self: Object): Map[Object, Int] */
16 val
* VIRTUAL_layout_builders__Layout__ids(val
* self
) {
17 val
* var
/* : Map[Object, Int] */;
18 val
* var1
/* : Map[Object, Int] */;
19 var1
= layout_builders__Layout__ids(self
);
24 /* method layout_builders#Layout#ids= for (self: Layout[Object], Map[Object, Int]) */
25 void layout_builders__Layout__ids_61d(val
* self
, val
* p0
) {
26 short int var
/* : Bool */;
29 const struct type
* type_struct
;
30 /* Covariant cast for argument 0 (ids) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
31 /* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
32 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int
];
33 cltype
= type_struct
->color
;
34 idtype
= type_struct
->id
;
35 if(cltype
>= p0
->type
->table_size
) {
38 var
= p0
->type
->type_table
[cltype
] == idtype
;
41 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 34);
44 self
->attrs
[COLOR_layout_builders__Layout___64dids
].val
= p0
; /* @ids on <self:Layout[Object]> */
47 /* method layout_builders#Layout#ids= for (self: Object, Map[Object, Int]) */
48 void VIRTUAL_layout_builders__Layout__ids_61d(val
* self
, val
* p0
) {
49 layout_builders__Layout__ids_61d(self
, p0
);
52 /* method layout_builders#Layout#pos for (self: Layout[Object]): Map[Object, Int] */
53 val
* layout_builders__Layout__pos(val
* self
) {
54 val
* var
/* : Map[Object, Int] */;
55 val
* var1
/* : Map[Object, Int] */;
56 var1
= self
->attrs
[COLOR_layout_builders__Layout___64dpos
].val
; /* @pos on <self:Layout[Object]> */
58 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @pos", "src/layout_builders.nit", 36);
65 /* method layout_builders#Layout#pos for (self: Object): Map[Object, Int] */
66 val
* VIRTUAL_layout_builders__Layout__pos(val
* self
) {
67 val
* var
/* : Map[Object, Int] */;
68 val
* var1
/* : Map[Object, Int] */;
69 var1
= layout_builders__Layout__pos(self
);
74 /* method layout_builders#Layout#pos= for (self: Layout[Object], Map[Object, Int]) */
75 void layout_builders__Layout__pos_61d(val
* self
, val
* p0
) {
76 short int var
/* : Bool */;
79 const struct type
* type_struct
;
80 /* Covariant cast for argument 0 (pos) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
81 /* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
82 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int
];
83 cltype
= type_struct
->color
;
84 idtype
= type_struct
->id
;
85 if(cltype
>= p0
->type
->table_size
) {
88 var
= p0
->type
->type_table
[cltype
] == idtype
;
91 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 36);
94 self
->attrs
[COLOR_layout_builders__Layout___64dpos
].val
= p0
; /* @pos on <self:Layout[Object]> */
97 /* method layout_builders#Layout#pos= for (self: Object, Map[Object, Int]) */
98 void VIRTUAL_layout_builders__Layout__pos_61d(val
* self
, val
* p0
) {
99 layout_builders__Layout__pos_61d(self
, p0
);
102 /* method layout_builders#Layout#init for (self: Layout[Object]) */
103 void layout_builders__Layout__init(val
* self
) {
106 /* method layout_builders#Layout#init for (self: Object) */
107 void VIRTUAL_layout_builders__Layout__init(val
* self
) {
108 layout_builders__Layout__init(self
);
111 /* method layout_builders#PHLayout#masks for (self: PHLayout[Object, Object]): Map[Object, Int] */
112 val
* layout_builders__PHLayout__masks(val
* self
) {
113 val
* var
/* : Map[Object, Int] */;
114 val
* var1
/* : Map[Object, Int] */;
115 var1
= self
->attrs
[COLOR_layout_builders__PHLayout___64dmasks
].val
; /* @masks on <self:PHLayout[Object, Object]> */
117 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @masks", "src/layout_builders.nit", 44);
124 /* method layout_builders#PHLayout#masks for (self: Object): Map[Object, Int] */
125 val
* VIRTUAL_layout_builders__PHLayout__masks(val
* self
) {
126 val
* var
/* : Map[Object, Int] */;
127 val
* var1
/* : Map[Object, Int] */;
128 var1
= layout_builders__PHLayout__masks(self
);
133 /* method layout_builders#PHLayout#masks= for (self: PHLayout[Object, Object], Map[Object, Int]) */
134 void layout_builders__PHLayout__masks_61d(val
* self
, val
* p0
) {
135 short int var
/* : Bool */;
138 const struct type
* type_struct
;
139 /* Covariant cast for argument 0 (masks) <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
140 /* <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
141 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0kernel__Int
];
142 cltype
= type_struct
->color
;
143 idtype
= type_struct
->id
;
144 if(cltype
>= p0
->type
->table_size
) {
147 var
= p0
->type
->type_table
[cltype
] == idtype
;
150 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 44);
153 self
->attrs
[COLOR_layout_builders__PHLayout___64dmasks
].val
= p0
; /* @masks on <self:PHLayout[Object, Object]> */
156 /* method layout_builders#PHLayout#masks= for (self: Object, Map[Object, Int]) */
157 void VIRTUAL_layout_builders__PHLayout__masks_61d(val
* self
, val
* p0
) {
158 layout_builders__PHLayout__masks_61d(self
, p0
);
161 /* method layout_builders#PHLayout#hashes for (self: PHLayout[Object, Object]): Map[Object, Map[Object, Int]] */
162 val
* layout_builders__PHLayout__hashes(val
* self
) {
163 val
* var
/* : Map[Object, Map[Object, Int]] */;
164 val
* var1
/* : Map[Object, Map[Object, Int]] */;
165 var1
= self
->attrs
[COLOR_layout_builders__PHLayout___64dhashes
].val
; /* @hashes on <self:PHLayout[Object, Object]> */
167 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @hashes", "src/layout_builders.nit", 46);
174 /* method layout_builders#PHLayout#hashes for (self: Object): Map[Object, Map[Object, Int]] */
175 val
* VIRTUAL_layout_builders__PHLayout__hashes(val
* self
) {
176 val
* var
/* : Map[Object, Map[Object, Int]] */;
177 val
* var1
/* : Map[Object, Map[Object, Int]] */;
178 var1
= layout_builders__PHLayout__hashes(self
);
183 /* method layout_builders#PHLayout#hashes= for (self: PHLayout[Object, Object], Map[Object, Map[Object, Int]]) */
184 void layout_builders__PHLayout__hashes_61d(val
* self
, val
* p0
) {
185 short int var
/* : Bool */;
188 const struct type
* type_struct
;
189 /* Covariant cast for argument 0 (hashes) <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
190 /* <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
191 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0abstract_collection__Maplayout_builders__PHLayout_FT1kernel__Int
];
192 cltype
= type_struct
->color
;
193 idtype
= type_struct
->id
;
194 if(cltype
>= p0
->type
->table_size
) {
197 var
= p0
->type
->type_table
[cltype
] == idtype
;
200 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 46);
203 self
->attrs
[COLOR_layout_builders__PHLayout___64dhashes
].val
= p0
; /* @hashes on <self:PHLayout[Object, Object]> */
206 /* method layout_builders#PHLayout#hashes= for (self: Object, Map[Object, Map[Object, Int]]) */
207 void VIRTUAL_layout_builders__PHLayout__hashes_61d(val
* self
, val
* p0
) {
208 layout_builders__PHLayout__hashes_61d(self
, p0
);
211 /* method layout_builders#PHLayout#init for (self: PHLayout[Object, Object]) */
212 void layout_builders__PHLayout__init(val
* self
) {
213 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__Layout__init
]))(self
) /* init on <self:PHLayout[Object, Object]>*/;
216 /* method layout_builders#PHLayout#init for (self: Object) */
217 void VIRTUAL_layout_builders__PHLayout__init(val
* self
) {
218 layout_builders__PHLayout__init(self
);
221 /* method layout_builders#TypingLayoutBuilder#build_layout for (self: TypingLayoutBuilder[Object], Set[Object]): Layout[Object] */
222 val
* layout_builders__TypingLayoutBuilder__build_layout(val
* self
, val
* p0
) {
223 val
* var
/* : Layout[Object] */;
224 short int var1
/* : Bool */;
227 const struct type
* type_struct
;
228 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
229 /* <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
230 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingLayoutBuilder_FT0
];
231 cltype
= type_struct
->color
;
232 idtype
= type_struct
->id
;
233 if(cltype
>= p0
->type
->table_size
) {
236 var1
= p0
->type
->type_table
[cltype
] == idtype
;
239 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 54);
242 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 54);
247 /* method layout_builders#TypingLayoutBuilder#build_layout for (self: Object, Set[Object]): Layout[Object] */
248 val
* VIRTUAL_layout_builders__TypingLayoutBuilder__build_layout(val
* self
, val
* p0
) {
249 val
* var
/* : Layout[Object] */;
250 val
* var1
/* : Layout[Object] */;
251 var1
= layout_builders__TypingLayoutBuilder__build_layout(self
, p0
);
256 /* method layout_builders#TypingLayoutBuilder#poset for (self: TypingLayoutBuilder[Object]): nullable POSet[Object] */
257 val
* layout_builders__TypingLayoutBuilder__poset(val
* self
) {
258 val
* var
/* : nullable POSet[Object] */;
259 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 57);
264 /* method layout_builders#TypingLayoutBuilder#poset for (self: Object): nullable POSet[Object] */
265 val
* VIRTUAL_layout_builders__TypingLayoutBuilder__poset(val
* self
) {
266 val
* var
/* : nullable POSet[Object] */;
267 val
* var1
/* : nullable POSet[Object] */;
268 var1
= layout_builders__TypingLayoutBuilder__poset(self
);
273 /* method layout_builders#PropertyLayoutBuilder#build_layout for (self: PropertyLayoutBuilder[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
274 val
* layout_builders__PropertyLayoutBuilder__build_layout(val
* self
, val
* p0
) {
275 val
* var
/* : Layout[PropertyLayoutElement] */;
276 short int var1
/* : Bool */;
279 const struct type
* type_struct
;
280 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
281 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
282 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
283 cltype
= type_struct
->color
;
284 idtype
= type_struct
->id
;
285 if(cltype
>= p0
->type
->table_size
) {
288 var1
= p0
->type
->type_table
[cltype
] == idtype
;
291 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 64);
294 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 64);
299 /* method layout_builders#PropertyLayoutBuilder#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
300 val
* VIRTUAL_layout_builders__PropertyLayoutBuilder__build_layout(val
* self
, val
* p0
) {
301 val
* var
/* : Layout[PropertyLayoutElement] */;
302 val
* var1
/* : Layout[PropertyLayoutElement] */;
303 var1
= layout_builders__PropertyLayoutBuilder__build_layout(self
, p0
);
308 /* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: ResolutionLayoutBuilder, Map[MClassType, Set[MType]]): Layout[MType] */
309 val
* layout_builders__ResolutionLayoutBuilder__build_layout(val
* self
, val
* p0
) {
310 val
* var
/* : Layout[MType] */;
311 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 84);
316 /* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
317 val
* VIRTUAL_layout_builders__ResolutionLayoutBuilder__build_layout(val
* self
, val
* p0
) {
318 val
* var
/* : Layout[MType] */;
319 val
* var1
/* : Layout[MType] */;
320 var1
= layout_builders__ResolutionLayoutBuilder__build_layout(self
, p0
);
325 /* method layout_builders#POSetBuilder#mmodule for (self: POSetBuilder[Object]): MModule */
326 val
* layout_builders__POSetBuilder__mmodule(val
* self
) {
327 val
* var
/* : MModule */;
328 val
* var1
/* : MModule */;
329 var1
= self
->attrs
[COLOR_layout_builders__POSetBuilder___64dmmodule
].val
; /* @mmodule on <self:POSetBuilder[Object]> */
331 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 94);
338 /* method layout_builders#POSetBuilder#mmodule for (self: Object): MModule */
339 val
* VIRTUAL_layout_builders__POSetBuilder__mmodule(val
* self
) {
340 val
* var
/* : MModule */;
341 val
* var1
/* : MModule */;
342 var1
= layout_builders__POSetBuilder__mmodule(self
);
347 /* method layout_builders#POSetBuilder#mmodule= for (self: POSetBuilder[Object], MModule) */
348 void layout_builders__POSetBuilder__mmodule_61d(val
* self
, val
* p0
) {
349 self
->attrs
[COLOR_layout_builders__POSetBuilder___64dmmodule
].val
= p0
; /* @mmodule on <self:POSetBuilder[Object]> */
352 /* method layout_builders#POSetBuilder#mmodule= for (self: Object, MModule) */
353 void VIRTUAL_layout_builders__POSetBuilder__mmodule_61d(val
* self
, val
* p0
) {
354 layout_builders__POSetBuilder__mmodule_61d(self
, p0
);
357 /* method layout_builders#POSetBuilder#init for (self: POSetBuilder[Object], MModule) */
358 void layout_builders__POSetBuilder__init(val
* self
, val
* p0
) {
359 val
* var_mmodule
/* var mmodule: MModule */;
361 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:POSetBuilder[Object]>*/;
364 /* method layout_builders#POSetBuilder#init for (self: Object, MModule) */
365 void VIRTUAL_layout_builders__POSetBuilder__init(val
* self
, val
* p0
) {
366 layout_builders__POSetBuilder__init(self
, p0
);
369 /* method layout_builders#POSetBuilder#build_poset for (self: POSetBuilder[Object], Set[Object]): POSet[Object] */
370 val
* layout_builders__POSetBuilder__build_poset(val
* self
, val
* p0
) {
371 val
* var
/* : POSet[Object] */;
372 short int var1
/* : Bool */;
375 const struct type
* type_struct
;
376 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[POSetBuilder#0] */
377 /* <p0:Set[Object]> isa Set[POSetBuilder#0] */
378 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__POSetBuilder_FT0
];
379 cltype
= type_struct
->color
;
380 idtype
= type_struct
->id
;
381 if(cltype
>= p0
->type
->table_size
) {
384 var1
= p0
->type
->type_table
[cltype
] == idtype
;
387 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 96);
390 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 96);
395 /* method layout_builders#POSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
396 val
* VIRTUAL_layout_builders__POSetBuilder__build_poset(val
* self
, val
* p0
) {
397 val
* var
/* : POSet[Object] */;
398 val
* var1
/* : POSet[Object] */;
399 var1
= layout_builders__POSetBuilder__build_poset(self
, p0
);
404 /* method layout_builders#MTypePOSetBuilder#build_poset for (self: MTypePOSetBuilder, Set[MType]): POSet[MType] */
405 val
* layout_builders__MTypePOSetBuilder__build_poset(val
* self
, val
* p0
) {
406 val
* var
/* : POSet[MType] */;
407 short int var1
/* : Bool */;
410 val
* var_elements
/* var elements: Set[MType] */;
411 val
* var2
/* : POSet[MType] */;
412 val
* var_poset
/* var poset: POSet[MType] */;
413 val
* var3
/* : Iterator[nullable Object] */;
414 short int var4
/* : Bool */;
415 val
* var5
/* : nullable Object */;
416 val
* var_e
/* var e: MType */;
417 val
* var6
/* : POSetElement[Object] */;
418 val
* var7
/* : Iterator[nullable Object] */;
419 short int var8
/* : Bool */;
420 val
* var9
/* : nullable Object */;
421 val
* var_o
/* var o: MType */;
422 short int var10
/* : Bool */;
423 val
* var11
/* : MModule */;
424 val
* var12
/* : null */;
425 short int var13
/* : Bool */;
426 /* Covariant cast for argument 0 (elements) <p0:Set[MType]> isa Set[POSetBuilder#0] */
427 /* <p0:Set[MType]> isa Set[POSetBuilder#0] */
428 var1
= 1; /* easy <p0:Set[MType]> isa Set[POSetBuilder#0]*/
430 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 104);
434 var2
= NEW_poset__POSet(&type_poset__POSetmodel__MType
);
435 ((void (*)(val
*))(var2
->class->vft
[COLOR_poset__POSet__init
]))(var2
) /* init on <var2:POSet[MType]>*/;
436 CHECK_NEW_poset__POSet(var2
);
438 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[MType]>*/;
440 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
442 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
444 var6
= ((val
* (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_node
]))(var_poset
, var_e
) /* add_node on <var_poset:POSet[MType]>*/;
446 var7
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[MType]>*/;
448 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
450 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
452 var10
= ((short int (*)(val
*, val
*))(var_e
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_e
, var_o
) /* == on <var_e:MType>*/;
457 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule
]))(self
) /* mmodule on <self:MTypePOSetBuilder>*/;
459 var13
= ((short int (*)(val
*, val
*, val
*, val
*))(var_e
->class->vft
[COLOR_model__MType__is_subtype
]))(var_e
, var11
, var12
, var_o
) /* is_subtype on <var_e:MType>*/;
461 ((void (*)(val
*, val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_edge
]))(var_poset
, var_e
, var_o
) /* add_edge on <var_poset:POSet[MType]>*/;
464 CONTINUE_label
: (void)0;
465 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
467 BREAK_label
: (void)0;
468 CONTINUE_label14
: (void)0;
469 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
471 BREAK_label14
: (void)0;
477 /* method layout_builders#MTypePOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
478 val
* VIRTUAL_layout_builders__MTypePOSetBuilder__build_poset(val
* self
, val
* p0
) {
479 val
* var
/* : POSet[Object] */;
480 val
* var1
/* : POSet[MType] */;
481 var1
= layout_builders__MTypePOSetBuilder__build_poset(self
, p0
);
486 /* method layout_builders#MClassPOSetBuilder#build_poset for (self: MClassPOSetBuilder, Set[MClass]): POSet[MClass] */
487 val
* layout_builders__MClassPOSetBuilder__build_poset(val
* self
, val
* p0
) {
488 val
* var
/* : POSet[MClass] */;
489 short int var1
/* : Bool */;
492 val
* var_elements
/* var elements: Set[MClass] */;
493 val
* var2
/* : MModule */;
494 val
* var3
/* : POSet[MClass] */;
495 /* Covariant cast for argument 0 (elements) <p0:Set[MClass]> isa Set[POSetBuilder#0] */
496 /* <p0:Set[MClass]> isa Set[POSetBuilder#0] */
497 var1
= 1; /* easy <p0:Set[MClass]> isa Set[POSetBuilder#0]*/
499 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 123);
503 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule
]))(self
) /* mmodule on <self:MClassPOSetBuilder>*/;
504 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var2
) /* flatten_mclass_hierarchy on <var2:MModule>*/;
510 /* method layout_builders#MClassPOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
511 val
* VIRTUAL_layout_builders__MClassPOSetBuilder__build_poset(val
* self
, val
* p0
) {
512 val
* var
/* : POSet[Object] */;
513 val
* var1
/* : POSet[MClass] */;
514 var1
= layout_builders__MClassPOSetBuilder__build_poset(self
, p0
);
519 /* method layout_builders#TypingBMizer#mmodule for (self: TypingBMizer[Object]): MModule */
520 val
* layout_builders__TypingBMizer__mmodule(val
* self
) {
521 val
* var
/* : MModule */;
522 val
* var1
/* : MModule */;
523 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dmmodule
].val
; /* @mmodule on <self:TypingBMizer[Object]> */
525 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 132);
532 /* method layout_builders#TypingBMizer#mmodule for (self: Object): MModule */
533 val
* VIRTUAL_layout_builders__TypingBMizer__mmodule(val
* self
) {
534 val
* var
/* : MModule */;
535 val
* var1
/* : MModule */;
536 var1
= layout_builders__TypingBMizer__mmodule(self
);
541 /* method layout_builders#TypingBMizer#mmodule= for (self: TypingBMizer[Object], MModule) */
542 void layout_builders__TypingBMizer__mmodule_61d(val
* self
, val
* p0
) {
543 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingBMizer[Object]> */
546 /* method layout_builders#TypingBMizer#mmodule= for (self: Object, MModule) */
547 void VIRTUAL_layout_builders__TypingBMizer__mmodule_61d(val
* self
, val
* p0
) {
548 layout_builders__TypingBMizer__mmodule_61d(self
, p0
);
551 /* method layout_builders#TypingBMizer#poset_builder for (self: TypingBMizer[Object]): POSetBuilder[Object] */
552 val
* layout_builders__TypingBMizer__poset_builder(val
* self
) {
553 val
* var
/* : POSetBuilder[Object] */;
554 val
* var1
/* : POSetBuilder[Object] */;
555 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_builder
].val
; /* @poset_builder on <self:TypingBMizer[Object]> */
557 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 133);
564 /* method layout_builders#TypingBMizer#poset_builder for (self: Object): POSetBuilder[Object] */
565 val
* VIRTUAL_layout_builders__TypingBMizer__poset_builder(val
* self
) {
566 val
* var
/* : POSetBuilder[Object] */;
567 val
* var1
/* : POSetBuilder[Object] */;
568 var1
= layout_builders__TypingBMizer__poset_builder(self
);
573 /* method layout_builders#TypingBMizer#poset_builder= for (self: TypingBMizer[Object], POSetBuilder[Object]) */
574 void layout_builders__TypingBMizer__poset_builder_61d(val
* self
, val
* p0
) {
575 short int var
/* : Bool */;
578 const struct type
* type_struct
;
579 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
580 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
581 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0
];
582 cltype
= type_struct
->color
;
583 idtype
= type_struct
->id
;
584 if(cltype
>= p0
->type
->table_size
) {
587 var
= p0
->type
->type_table
[cltype
] == idtype
;
590 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 133);
593 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingBMizer[Object]> */
596 /* method layout_builders#TypingBMizer#poset_builder= for (self: Object, POSetBuilder[Object]) */
597 void VIRTUAL_layout_builders__TypingBMizer__poset_builder_61d(val
* self
, val
* p0
) {
598 layout_builders__TypingBMizer__poset_builder_61d(self
, p0
);
601 /* method layout_builders#TypingBMizer#poset_cache for (self: TypingBMizer[Object]): nullable POSet[Object] */
602 val
* layout_builders__TypingBMizer__poset_cache(val
* self
) {
603 val
* var
/* : nullable POSet[Object] */;
604 val
* var1
/* : nullable POSet[Object] */;
605 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_cache
].val
; /* @poset_cache on <self:TypingBMizer[Object]> */
610 /* method layout_builders#TypingBMizer#poset_cache for (self: Object): nullable POSet[Object] */
611 val
* VIRTUAL_layout_builders__TypingBMizer__poset_cache(val
* self
) {
612 val
* var
/* : nullable POSet[Object] */;
613 val
* var1
/* : nullable POSet[Object] */;
614 var1
= layout_builders__TypingBMizer__poset_cache(self
);
619 /* method layout_builders#TypingBMizer#poset_cache= for (self: TypingBMizer[Object], nullable POSet[Object]) */
620 void layout_builders__TypingBMizer__poset_cache_61d(val
* self
, val
* p0
) {
621 short int var
/* : Bool */;
624 const struct type
* type_struct
;
625 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
626 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
627 type_struct
= self
->type
->resolution_table
->types
[COLOR_poset__POSetlayout_builders__TypingBMizer_FT0
];
628 cltype
= type_struct
->color
;
629 idtype
= type_struct
->id
;
633 if(cltype
>= p0
->type
->table_size
) {
636 var
= p0
->type
->type_table
[cltype
] == idtype
;
640 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 134);
643 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingBMizer[Object]> */
646 /* method layout_builders#TypingBMizer#poset_cache= for (self: Object, nullable POSet[Object]) */
647 void VIRTUAL_layout_builders__TypingBMizer__poset_cache_61d(val
* self
, val
* p0
) {
648 layout_builders__TypingBMizer__poset_cache_61d(self
, p0
);
651 /* method layout_builders#TypingBMizer#init for (self: TypingBMizer[Object], MModule, POSetBuilder[Object]) */
652 void layout_builders__TypingBMizer__init(val
* self
, val
* p0
, val
* p1
) {
653 short int var
/* : Bool */;
656 const struct type
* type_struct
;
657 val
* var_mmodule
/* var mmodule: MModule */;
658 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
659 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
660 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
661 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0
];
662 cltype
= type_struct
->color
;
663 idtype
= type_struct
->id
;
664 if(cltype
>= p1
->type
->table_size
) {
667 var
= p1
->type
->type_table
[cltype
] == idtype
;
670 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 136);
674 var_poset_builder
= p1
;
675 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingBMizer[Object]>*/;
676 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingBMizer[Object]>*/;
679 /* method layout_builders#TypingBMizer#init for (self: Object, MModule, POSetBuilder[Object]) */
680 void VIRTUAL_layout_builders__TypingBMizer__init(val
* self
, val
* p0
, val
* p1
) {
681 layout_builders__TypingBMizer__init(self
, p0
, p1
);
684 /* method layout_builders#TypingBMizer#poset for (self: TypingBMizer[Object]): nullable POSet[Object] */
685 val
* layout_builders__TypingBMizer__poset(val
* self
) {
686 val
* var
/* : nullable POSet[Object] */;
687 val
* var1
/* : nullable POSet[Object] */;
688 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_cache
]))(self
) /* poset_cache on <self:TypingBMizer[Object]>*/;
694 /* method layout_builders#TypingBMizer#poset for (self: Object): nullable POSet[Object] */
695 val
* VIRTUAL_layout_builders__TypingBMizer__poset(val
* self
) {
696 val
* var
/* : nullable POSet[Object] */;
697 val
* var1
/* : nullable POSet[Object] */;
698 var1
= layout_builders__TypingBMizer__poset(self
);
703 /* method layout_builders#TypingBMizer#build_layout for (self: TypingBMizer[Object], Set[Object]): Layout[Object] */
704 val
* layout_builders__TypingBMizer__build_layout(val
* self
, val
* p0
) {
705 val
* var
/* : Layout[Object] */;
706 short int var1
/* : Bool */;
709 const struct type
* type_struct
;
710 val
* var_elements
/* var elements: Set[Object] */;
711 val
* var2
/* : Layout[Object] */;
712 val
* var_result
/* var result: Layout[Object] */;
713 val
* var3
/* : HashMap[Object, Int] */;
714 val
* var_ids
/* var ids: HashMap[Object, Int] */;
715 val
* var4
/* : POSetBuilder[Object] */;
716 val
* var5
/* : POSet[Object] */;
717 val
* var6
/* : nullable POSet[Object] */;
718 val
* var7
/* : Array[nullable Object] */;
719 val
* var_lin
/* var lin: Array[Object] */;
720 val
* var8
/* : nullable POSet[Object] */;
721 val
* var9
/* : Iterator[nullable Object] */;
722 short int var10
/* : Bool */;
723 val
* var11
/* : nullable Object */;
724 val
* var_element
/* var element: Object */;
725 long var12
/* : Int */;
726 val
* var13
/* : nullable Object */;
727 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingBMizer#0] */
728 /* <p0:Set[Object]> isa Set[TypingBMizer#0] */
729 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingBMizer_FT0
];
730 cltype
= type_struct
->color
;
731 idtype
= type_struct
->id
;
732 if(cltype
>= p0
->type
->table_size
) {
735 var1
= p0
->type
->type_table
[cltype
] == idtype
;
738 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 143);
742 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__TypingBMizer_FT0
]);
743 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[Object]>*/;
744 CHECK_NEW_layout_builders__Layout(var2
);
746 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingBMizer_FT0kernel__Int
]);
747 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[Object, Int]>*/;
748 CHECK_NEW_hash_collection__HashMap(var3
);
750 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_builder
]))(self
) /* poset_builder on <self:TypingBMizer[Object]>*/;
751 var5
= ((val
* (*)(val
*, val
*))(var4
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var4
, var_elements
) /* build_poset on <var4:POSetBuilder[Object]>*/;
752 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_cache_61d
]))(self
, var5
) /* poset_cache= on <self:TypingBMizer[Object]>*/;
753 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingBMizer[Object]>*/;
755 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 148);
758 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_array__Collection__to_a
]))(var6
) /* to_a on <var6:nullable POSet[Object]>*/;
761 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingBMizer[Object]>*/;
763 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 149);
766 ((void (*)(val
*, val
*))(var8
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var8
, var_lin
) /* sort on <var8:nullable POSet[Object]>*/;
768 var9
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
770 var10
= ((short int (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var9
) /* is_ok on <var9:Iterator[nullable Object]>*/;
772 var11
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var9
) /* item on <var9:Iterator[nullable Object]>*/;
774 var12
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
775 var13
= BOX_kernel__Int(var12
); /* autobox from Int to nullable Object */
776 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var13
) /* []= on <var_ids:HashMap[Object, Int]>*/;
777 CONTINUE_label
: (void)0;
778 ((void (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var9
) /* next on <var9:Iterator[nullable Object]>*/;
780 BREAK_label
: (void)0;
781 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:Layout[Object]>*/;
782 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[Object]>*/;
788 /* method layout_builders#TypingBMizer#build_layout for (self: Object, Set[Object]): Layout[Object] */
789 val
* VIRTUAL_layout_builders__TypingBMizer__build_layout(val
* self
, val
* p0
) {
790 val
* var
/* : Layout[Object] */;
791 val
* var1
/* : Layout[Object] */;
792 var1
= layout_builders__TypingBMizer__build_layout(self
, p0
);
797 /* method layout_builders#MTypeBMizer#init for (self: MTypeBMizer, MModule) */
798 void layout_builders__MTypeBMizer__init(val
* self
, val
* p0
) {
799 val
* var_mmodule
/* var mmodule: MModule */;
800 val
* var
/* : MTypePOSetBuilder */;
802 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
803 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
804 CHECK_NEW_layout_builders__MTypePOSetBuilder(var
);
805 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__init
]))(self
, var_mmodule
, var
) /* init on <self:MTypeBMizer>*/;
808 /* method layout_builders#MTypeBMizer#init for (self: Object, MModule) */
809 void VIRTUAL_layout_builders__MTypeBMizer__init(val
* self
, val
* p0
) {
810 layout_builders__MTypeBMizer__init(self
, p0
);
813 /* method layout_builders#MClassBMizer#init for (self: MClassBMizer, MModule) */
814 void layout_builders__MClassBMizer__init(val
* self
, val
* p0
) {
815 val
* var_mmodule
/* var mmodule: MModule */;
816 val
* var
/* : MClassPOSetBuilder */;
818 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
819 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
820 CHECK_NEW_layout_builders__MClassPOSetBuilder(var
);
821 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__init
]))(self
, var_mmodule
, var
) /* init on <self:MClassBMizer>*/;
824 /* method layout_builders#MClassBMizer#init for (self: Object, MModule) */
825 void VIRTUAL_layout_builders__MClassBMizer__init(val
* self
, val
* p0
) {
826 layout_builders__MClassBMizer__init(self
, p0
);
829 /* method layout_builders#ResolutionBMizer#init for (self: ResolutionBMizer) */
830 void layout_builders__ResolutionBMizer__init(val
* self
) {
833 /* method layout_builders#ResolutionBMizer#init for (self: Object) */
834 void VIRTUAL_layout_builders__ResolutionBMizer__init(val
* self
) {
835 layout_builders__ResolutionBMizer__init(self
);
838 /* method layout_builders#ResolutionBMizer#build_layout for (self: ResolutionBMizer, Map[MClassType, Set[MType]]): Layout[MType] */
839 val
* layout_builders__ResolutionBMizer__build_layout(val
* self
, val
* p0
) {
840 val
* var
/* : Layout[MType] */;
841 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
842 val
* var1
/* : Layout[MType] */;
843 val
* var_result
/* var result: Layout[MType] */;
844 val
* var2
/* : HashMap[MType, Int] */;
845 val
* var_ids
/* var ids: HashMap[MType, Int] */;
846 long var3
/* : Int */;
847 long var_color
/* var color: Int */;
848 val
* var4
/* : MapIterator[Object, nullable Object] */;
849 short int var5
/* : Bool */;
850 val
* var6
/* : Object */;
851 val
* var_mclasstype
/* var mclasstype: MClassType */;
852 val
* var7
/* : nullable Object */;
853 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
854 val
* var8
/* : Iterator[nullable Object] */;
855 short int var9
/* : Bool */;
856 val
* var10
/* : nullable Object */;
857 val
* var_element
/* var element: MType */;
858 short int var11
/* : Bool */;
859 val
* var12
/* : nullable Object */;
860 long var13
/* : Int */;
861 long var14
/* : Int */;
862 long var16
/* : Int */;
864 var1
= NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType
);
865 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__Layout__init
]))(var1
) /* init on <var1:Layout[MType]>*/;
866 CHECK_NEW_layout_builders__Layout(var1
);
868 var2
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
869 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[MType, Int]>*/;
870 CHECK_NEW_hash_collection__HashMap(var2
);
874 var4
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
876 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var4
) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
878 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var4
) /* key on <var4:MapIterator[Object, nullable Object]>*/;
879 var_mclasstype
= var6
;
880 var7
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var4
) /* item on <var4:MapIterator[Object, nullable Object]>*/;
881 var_mclasstypes
= var7
;
882 var8
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
884 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
886 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
888 var11
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
893 var12
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
894 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var12
) /* []= on <var_ids:HashMap[MType, Int]>*/;
896 { /* Inline kernel#Int#+ (var_color,var13) */
897 var16
= var_color
+ var13
;
903 CONTINUE_label
: (void)0;
904 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
906 BREAK_label
: (void)0;
907 CONTINUE_label17
: (void)0;
908 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var4
) /* next on <var4:MapIterator[Object, nullable Object]>*/;
910 BREAK_label17
: (void)0;
911 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:Layout[MType]>*/;
912 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[MType]>*/;
918 /* method layout_builders#ResolutionBMizer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
919 val
* VIRTUAL_layout_builders__ResolutionBMizer__build_layout(val
* self
, val
* p0
) {
920 val
* var
/* : Layout[MType] */;
921 val
* var1
/* : Layout[MType] */;
922 var1
= layout_builders__ResolutionBMizer__build_layout(self
, p0
);
927 /* method layout_builders#MPropertyBMizer#mmodule for (self: MPropertyBMizer[PropertyLayoutElement]): MModule */
928 val
* layout_builders__MPropertyBMizer__mmodule(val
* self
) {
929 val
* var
/* : MModule */;
930 val
* var1
/* : MModule */;
931 var1
= self
->attrs
[COLOR_layout_builders__MPropertyBMizer___64dmmodule
].val
; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
933 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 198);
940 /* method layout_builders#MPropertyBMizer#mmodule for (self: Object): MModule */
941 val
* VIRTUAL_layout_builders__MPropertyBMizer__mmodule(val
* self
) {
942 val
* var
/* : MModule */;
943 val
* var1
/* : MModule */;
944 var1
= layout_builders__MPropertyBMizer__mmodule(self
);
949 /* method layout_builders#MPropertyBMizer#mmodule= for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
950 void layout_builders__MPropertyBMizer__mmodule_61d(val
* self
, val
* p0
) {
951 self
->attrs
[COLOR_layout_builders__MPropertyBMizer___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
954 /* method layout_builders#MPropertyBMizer#mmodule= for (self: Object, MModule) */
955 void VIRTUAL_layout_builders__MPropertyBMizer__mmodule_61d(val
* self
, val
* p0
) {
956 layout_builders__MPropertyBMizer__mmodule_61d(self
, p0
);
959 /* method layout_builders#MPropertyBMizer#init for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
960 void layout_builders__MPropertyBMizer__init(val
* self
, val
* p0
) {
961 val
* var_mmodule
/* var mmodule: MModule */;
963 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyBMizer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
966 /* method layout_builders#MPropertyBMizer#init for (self: Object, MModule) */
967 void VIRTUAL_layout_builders__MPropertyBMizer__init(val
* self
, val
* p0
) {
968 layout_builders__MPropertyBMizer__init(self
, p0
);
971 /* method layout_builders#MPropertyBMizer#build_layout for (self: MPropertyBMizer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
972 val
* layout_builders__MPropertyBMizer__build_layout(val
* self
, val
* p0
) {
973 val
* var
/* : Layout[PropertyLayoutElement] */;
974 short int var1
/* : Bool */;
977 const struct type
* type_struct
;
978 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
979 val
* var2
/* : Layout[PropertyLayoutElement] */;
980 val
* var_result
/* var result: Layout[PropertyLayoutElement] */;
981 val
* var3
/* : HashMap[PropertyLayoutElement, Int] */;
982 val
* var_ids
/* var ids: HashMap[PropertyLayoutElement, Int] */;
983 val
* var4
/* : Array[MClass] */;
984 val
* var_lin
/* var lin: Array[MClass] */;
985 val
* var5
/* : Collection[Object] */;
986 val
* var6
/* : MModule */;
987 val
* var7
/* : Iterator[nullable Object] */;
988 short int var8
/* : Bool */;
989 val
* var9
/* : nullable Object */;
990 val
* var_mclass
/* var mclass: MClass */;
991 val
* var10
/* : nullable Object */;
992 val
* var11
/* : Iterator[nullable Object] */;
993 short int var12
/* : Bool */;
994 val
* var13
/* : nullable Object */;
995 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
996 short int var14
/* : Bool */;
997 long var15
/* : Int */;
998 val
* var16
/* : nullable Object */;
999 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
1000 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
1001 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
1002 cltype
= type_struct
->color
;
1003 idtype
= type_struct
->id
;
1004 if(cltype
>= p0
->type
->table_size
) {
1007 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1010 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 202);
1014 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__MPropertyBMizer_FT0
]);
1015 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[PropertyLayoutElement]>*/;
1016 CHECK_NEW_layout_builders__Layout(var2
);
1018 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__MPropertyBMizer_FT0kernel__Int
]);
1019 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
1020 CHECK_NEW_hash_collection__HashMap(var3
);
1022 var4
= NEW_array__Array(&type_array__Arraymodel__MClass
);
1023 ((void (*)(val
*))(var4
->class->vft
[COLOR_array__Array__init
]))(var4
) /* init on <var4:Array[MClass]>*/;
1024 CHECK_NEW_array__Array(var4
);
1026 var5
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__keys
]))(var_elements
) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
1027 ((void (*)(val
*, val
*))(var_lin
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_lin
, var5
) /* add_all on <var_lin:Array[MClass]>*/;
1028 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyBMizer__mmodule
]))(self
) /* mmodule on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
1029 ((void (*)(val
*, val
*))(var6
->class->vft
[COLOR_model__MModule__linearize_mclasses
]))(var6
, var_lin
) /* linearize_mclasses on <var6:MModule>*/;
1030 var7
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[MClass]>*/;
1032 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
1034 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
1036 var10
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
1037 var11
= ((val
* (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var10
) /* iterator on <var10:nullable Object(Set[PropertyLayoutElement])>*/;
1039 var12
= ((short int (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var11
) /* is_ok on <var11:Iterator[nullable Object]>*/;
1041 var13
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var11
) /* item on <var11:Iterator[nullable Object]>*/;
1042 var_mproperty
= var13
;
1043 var14
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_mproperty
) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1045 goto CONTINUE_label
;
1048 var15
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1049 var16
= BOX_kernel__Int(var15
); /* autobox from Int to nullable Object */
1050 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_mproperty
, var16
) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1051 CONTINUE_label
: (void)0;
1052 ((void (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var11
) /* next on <var11:Iterator[nullable Object]>*/;
1054 BREAK_label
: (void)0;
1055 CONTINUE_label17
: (void)0;
1056 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
1058 BREAK_label17
: (void)0;
1059 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
1065 /* method layout_builders#MPropertyBMizer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
1066 val
* VIRTUAL_layout_builders__MPropertyBMizer__build_layout(val
* self
, val
* p0
) {
1067 val
* var
/* : Layout[PropertyLayoutElement] */;
1068 val
* var1
/* : Layout[PropertyLayoutElement] */;
1069 var1
= layout_builders__MPropertyBMizer__build_layout(self
, p0
);
1074 /* method layout_builders#TypingColorer#core for (self: TypingColorer[Object]): Set[Object] */
1075 val
* layout_builders__TypingColorer__core(val
* self
) {
1076 val
* var
/* : Set[Object] */;
1077 val
* var1
/* : Set[Object] */;
1078 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcore
].val
; /* @core on <self:TypingColorer[Object]> */
1080 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @core", "src/layout_builders.nit", 225);
1087 /* method layout_builders#TypingColorer#core for (self: Object): Set[Object] */
1088 val
* VIRTUAL_layout_builders__TypingColorer__core(val
* self
) {
1089 val
* var
/* : Set[Object] */;
1090 val
* var1
/* : Set[Object] */;
1091 var1
= layout_builders__TypingColorer__core(self
);
1096 /* method layout_builders#TypingColorer#core= for (self: TypingColorer[Object], Set[Object]) */
1097 void layout_builders__TypingColorer__core_61d(val
* self
, val
* p0
) {
1098 short int var
/* : Bool */;
1101 const struct type
* type_struct
;
1102 /* Covariant cast for argument 0 (core) <p0:Set[Object]> isa Set[TypingColorer#0] */
1103 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1104 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1105 cltype
= type_struct
->color
;
1106 idtype
= type_struct
->id
;
1107 if(cltype
>= p0
->type
->table_size
) {
1110 var
= p0
->type
->type_table
[cltype
] == idtype
;
1113 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 225);
1116 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcore
].val
= p0
; /* @core on <self:TypingColorer[Object]> */
1119 /* method layout_builders#TypingColorer#core= for (self: Object, Set[Object]) */
1120 void VIRTUAL_layout_builders__TypingColorer__core_61d(val
* self
, val
* p0
) {
1121 layout_builders__TypingColorer__core_61d(self
, p0
);
1124 /* method layout_builders#TypingColorer#crown for (self: TypingColorer[Object]): Set[Object] */
1125 val
* layout_builders__TypingColorer__crown(val
* self
) {
1126 val
* var
/* : Set[Object] */;
1127 val
* var1
/* : Set[Object] */;
1128 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcrown
].val
; /* @crown on <self:TypingColorer[Object]> */
1130 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @crown", "src/layout_builders.nit", 226);
1137 /* method layout_builders#TypingColorer#crown for (self: Object): Set[Object] */
1138 val
* VIRTUAL_layout_builders__TypingColorer__crown(val
* self
) {
1139 val
* var
/* : Set[Object] */;
1140 val
* var1
/* : Set[Object] */;
1141 var1
= layout_builders__TypingColorer__crown(self
);
1146 /* method layout_builders#TypingColorer#crown= for (self: TypingColorer[Object], Set[Object]) */
1147 void layout_builders__TypingColorer__crown_61d(val
* self
, val
* p0
) {
1148 short int var
/* : Bool */;
1151 const struct type
* type_struct
;
1152 /* Covariant cast for argument 0 (crown) <p0:Set[Object]> isa Set[TypingColorer#0] */
1153 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1154 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1155 cltype
= type_struct
->color
;
1156 idtype
= type_struct
->id
;
1157 if(cltype
>= p0
->type
->table_size
) {
1160 var
= p0
->type
->type_table
[cltype
] == idtype
;
1163 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 226);
1166 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcrown
].val
= p0
; /* @crown on <self:TypingColorer[Object]> */
1169 /* method layout_builders#TypingColorer#crown= for (self: Object, Set[Object]) */
1170 void VIRTUAL_layout_builders__TypingColorer__crown_61d(val
* self
, val
* p0
) {
1171 layout_builders__TypingColorer__crown_61d(self
, p0
);
1174 /* method layout_builders#TypingColorer#border for (self: TypingColorer[Object]): Set[Object] */
1175 val
* layout_builders__TypingColorer__border(val
* self
) {
1176 val
* var
/* : Set[Object] */;
1177 val
* var1
/* : Set[Object] */;
1178 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dborder
].val
; /* @border on <self:TypingColorer[Object]> */
1180 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @border", "src/layout_builders.nit", 227);
1187 /* method layout_builders#TypingColorer#border for (self: Object): Set[Object] */
1188 val
* VIRTUAL_layout_builders__TypingColorer__border(val
* self
) {
1189 val
* var
/* : Set[Object] */;
1190 val
* var1
/* : Set[Object] */;
1191 var1
= layout_builders__TypingColorer__border(self
);
1196 /* method layout_builders#TypingColorer#border= for (self: TypingColorer[Object], Set[Object]) */
1197 void layout_builders__TypingColorer__border_61d(val
* self
, val
* p0
) {
1198 short int var
/* : Bool */;
1201 const struct type
* type_struct
;
1202 /* Covariant cast for argument 0 (border) <p0:Set[Object]> isa Set[TypingColorer#0] */
1203 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1204 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1205 cltype
= type_struct
->color
;
1206 idtype
= type_struct
->id
;
1207 if(cltype
>= p0
->type
->table_size
) {
1210 var
= p0
->type
->type_table
[cltype
] == idtype
;
1213 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 227);
1216 self
->attrs
[COLOR_layout_builders__TypingColorer___64dborder
].val
= p0
; /* @border on <self:TypingColorer[Object]> */
1219 /* method layout_builders#TypingColorer#border= for (self: Object, Set[Object]) */
1220 void VIRTUAL_layout_builders__TypingColorer__border_61d(val
* self
, val
* p0
) {
1221 layout_builders__TypingColorer__border_61d(self
, p0
);
1224 /* method layout_builders#TypingColorer#coloration_result for (self: TypingColorer[Object]): Map[Object, Int] */
1225 val
* layout_builders__TypingColorer__coloration_result(val
* self
) {
1226 val
* var
/* : Map[Object, Int] */;
1227 val
* var1
/* : Map[Object, Int] */;
1228 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcoloration_result
].val
; /* @coloration_result on <self:TypingColorer[Object]> */
1230 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 228);
1237 /* method layout_builders#TypingColorer#coloration_result for (self: Object): Map[Object, Int] */
1238 val
* VIRTUAL_layout_builders__TypingColorer__coloration_result(val
* self
) {
1239 val
* var
/* : Map[Object, Int] */;
1240 val
* var1
/* : Map[Object, Int] */;
1241 var1
= layout_builders__TypingColorer__coloration_result(self
);
1246 /* method layout_builders#TypingColorer#coloration_result= for (self: TypingColorer[Object], Map[Object, Int]) */
1247 void layout_builders__TypingColorer__coloration_result_61d(val
* self
, val
* p0
) {
1248 short int var
/* : Bool */;
1251 const struct type
* type_struct
;
1252 /* Covariant cast for argument 0 (coloration_result) <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
1253 /* <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
1254 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0kernel__Int
];
1255 cltype
= type_struct
->color
;
1256 idtype
= type_struct
->id
;
1257 if(cltype
>= p0
->type
->table_size
) {
1260 var
= p0
->type
->type_table
[cltype
] == idtype
;
1263 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 228);
1266 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:TypingColorer[Object]> */
1269 /* method layout_builders#TypingColorer#coloration_result= for (self: Object, Map[Object, Int]) */
1270 void VIRTUAL_layout_builders__TypingColorer__coloration_result_61d(val
* self
, val
* p0
) {
1271 layout_builders__TypingColorer__coloration_result_61d(self
, p0
);
1274 /* method layout_builders#TypingColorer#mmodule for (self: TypingColorer[Object]): MModule */
1275 val
* layout_builders__TypingColorer__mmodule(val
* self
) {
1276 val
* var
/* : MModule */;
1277 val
* var1
/* : MModule */;
1278 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dmmodule
].val
; /* @mmodule on <self:TypingColorer[Object]> */
1280 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 230);
1287 /* method layout_builders#TypingColorer#mmodule for (self: Object): MModule */
1288 val
* VIRTUAL_layout_builders__TypingColorer__mmodule(val
* self
) {
1289 val
* var
/* : MModule */;
1290 val
* var1
/* : MModule */;
1291 var1
= layout_builders__TypingColorer__mmodule(self
);
1296 /* method layout_builders#TypingColorer#mmodule= for (self: TypingColorer[Object], MModule) */
1297 void layout_builders__TypingColorer__mmodule_61d(val
* self
, val
* p0
) {
1298 self
->attrs
[COLOR_layout_builders__TypingColorer___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingColorer[Object]> */
1301 /* method layout_builders#TypingColorer#mmodule= for (self: Object, MModule) */
1302 void VIRTUAL_layout_builders__TypingColorer__mmodule_61d(val
* self
, val
* p0
) {
1303 layout_builders__TypingColorer__mmodule_61d(self
, p0
);
1306 /* method layout_builders#TypingColorer#poset_builder for (self: TypingColorer[Object]): POSetBuilder[Object] */
1307 val
* layout_builders__TypingColorer__poset_builder(val
* self
) {
1308 val
* var
/* : POSetBuilder[Object] */;
1309 val
* var1
/* : POSetBuilder[Object] */;
1310 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_builder
].val
; /* @poset_builder on <self:TypingColorer[Object]> */
1312 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 231);
1319 /* method layout_builders#TypingColorer#poset_builder for (self: Object): POSetBuilder[Object] */
1320 val
* VIRTUAL_layout_builders__TypingColorer__poset_builder(val
* self
) {
1321 val
* var
/* : POSetBuilder[Object] */;
1322 val
* var1
/* : POSetBuilder[Object] */;
1323 var1
= layout_builders__TypingColorer__poset_builder(self
);
1328 /* method layout_builders#TypingColorer#poset_builder= for (self: TypingColorer[Object], POSetBuilder[Object]) */
1329 void layout_builders__TypingColorer__poset_builder_61d(val
* self
, val
* p0
) {
1330 short int var
/* : Bool */;
1333 const struct type
* type_struct
;
1334 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1335 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1336 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0
];
1337 cltype
= type_struct
->color
;
1338 idtype
= type_struct
->id
;
1339 if(cltype
>= p0
->type
->table_size
) {
1342 var
= p0
->type
->type_table
[cltype
] == idtype
;
1345 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 231);
1348 self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingColorer[Object]> */
1351 /* method layout_builders#TypingColorer#poset_builder= for (self: Object, POSetBuilder[Object]) */
1352 void VIRTUAL_layout_builders__TypingColorer__poset_builder_61d(val
* self
, val
* p0
) {
1353 layout_builders__TypingColorer__poset_builder_61d(self
, p0
);
1356 /* method layout_builders#TypingColorer#poset_cache for (self: TypingColorer[Object]): nullable POSet[Object] */
1357 val
* layout_builders__TypingColorer__poset_cache(val
* self
) {
1358 val
* var
/* : nullable POSet[Object] */;
1359 val
* var1
/* : nullable POSet[Object] */;
1360 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_cache
].val
; /* @poset_cache on <self:TypingColorer[Object]> */
1365 /* method layout_builders#TypingColorer#poset_cache for (self: Object): nullable POSet[Object] */
1366 val
* VIRTUAL_layout_builders__TypingColorer__poset_cache(val
* self
) {
1367 val
* var
/* : nullable POSet[Object] */;
1368 val
* var1
/* : nullable POSet[Object] */;
1369 var1
= layout_builders__TypingColorer__poset_cache(self
);
1374 /* method layout_builders#TypingColorer#poset_cache= for (self: TypingColorer[Object], nullable POSet[Object]) */
1375 void layout_builders__TypingColorer__poset_cache_61d(val
* self
, val
* p0
) {
1376 short int var
/* : Bool */;
1379 const struct type
* type_struct
;
1380 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
1381 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
1382 type_struct
= self
->type
->resolution_table
->types
[COLOR_poset__POSetlayout_builders__TypingColorer_FT0
];
1383 cltype
= type_struct
->color
;
1384 idtype
= type_struct
->id
;
1388 if(cltype
>= p0
->type
->table_size
) {
1391 var
= p0
->type
->type_table
[cltype
] == idtype
;
1395 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 232);
1398 self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingColorer[Object]> */
1401 /* method layout_builders#TypingColorer#poset_cache= for (self: Object, nullable POSet[Object]) */
1402 void VIRTUAL_layout_builders__TypingColorer__poset_cache_61d(val
* self
, val
* p0
) {
1403 layout_builders__TypingColorer__poset_cache_61d(self
, p0
);
1406 /* method layout_builders#TypingColorer#init for (self: TypingColorer[Object], MModule, POSetBuilder[Object]) */
1407 void layout_builders__TypingColorer__init(val
* self
, val
* p0
, val
* p1
) {
1408 short int var
/* : Bool */;
1411 const struct type
* type_struct
;
1412 val
* var_mmodule
/* var mmodule: MModule */;
1413 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
1414 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1415 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1416 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0
];
1417 cltype
= type_struct
->color
;
1418 idtype
= type_struct
->id
;
1419 if(cltype
>= p1
->type
->table_size
) {
1422 var
= p1
->type
->type_table
[cltype
] == idtype
;
1425 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 234);
1429 var_poset_builder
= p1
;
1430 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingColorer[Object]>*/;
1431 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingColorer[Object]>*/;
1434 /* method layout_builders#TypingColorer#init for (self: Object, MModule, POSetBuilder[Object]) */
1435 void VIRTUAL_layout_builders__TypingColorer__init(val
* self
, val
* p0
, val
* p1
) {
1436 layout_builders__TypingColorer__init(self
, p0
, p1
);
1439 /* method layout_builders#TypingColorer#poset for (self: TypingColorer[Object]): nullable POSet[Object] */
1440 val
* layout_builders__TypingColorer__poset(val
* self
) {
1441 val
* var
/* : nullable POSet[Object] */;
1442 val
* var1
/* : nullable POSet[Object] */;
1443 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_cache
]))(self
) /* poset_cache on <self:TypingColorer[Object]>*/;
1449 /* method layout_builders#TypingColorer#poset for (self: Object): nullable POSet[Object] */
1450 val
* VIRTUAL_layout_builders__TypingColorer__poset(val
* self
) {
1451 val
* var
/* : nullable POSet[Object] */;
1452 val
* var1
/* : nullable POSet[Object] */;
1453 var1
= layout_builders__TypingColorer__poset(self
);
1458 /* method layout_builders#TypingColorer#build_layout for (self: TypingColorer[Object], Set[Object]): Layout[Object] */
1459 val
* layout_builders__TypingColorer__build_layout(val
* self
, val
* p0
) {
1460 val
* var
/* : Layout[Object] */;
1461 short int var1
/* : Bool */;
1464 const struct type
* type_struct
;
1465 val
* var_elements
/* var elements: Set[Object] */;
1466 val
* var2
/* : POSetBuilder[Object] */;
1467 val
* var3
/* : POSet[Object] */;
1468 val
* var4
/* : Layout[Object] */;
1469 val
* var_result
/* var result: Layout[Object] */;
1470 val
* var5
/* : Map[Object, Int] */;
1471 val
* var6
/* : Map[Object, Int] */;
1472 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1473 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1474 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1475 cltype
= type_struct
->color
;
1476 idtype
= type_struct
->id
;
1477 if(cltype
>= p0
->type
->table_size
) {
1480 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1483 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 241);
1487 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_builder
]))(self
) /* poset_builder on <self:TypingColorer[Object]>*/;
1488 var3
= ((val
* (*)(val
*, val
*))(var2
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var2
, var_elements
) /* build_poset on <var2:POSetBuilder[Object]>*/;
1489 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_cache_61d
]))(self
, var3
) /* poset_cache= on <self:TypingColorer[Object]>*/;
1490 var4
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__TypingColorer_FT0
]);
1491 ((void (*)(val
*))(var4
->class->vft
[COLOR_layout_builders__Layout__init
]))(var4
) /* init on <var4:Layout[Object]>*/;
1492 CHECK_NEW_layout_builders__Layout(var4
);
1494 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__compute_ids
]))(self
, var_elements
) /* compute_ids on <self:TypingColorer[Object]>*/;
1495 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var5
) /* ids= on <var_result:Layout[Object]>*/;
1496 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize
]))(self
, var_elements
) /* colorize on <self:TypingColorer[Object]>*/;
1497 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var6
) /* pos= on <var_result:Layout[Object]>*/;
1503 /* method layout_builders#TypingColorer#build_layout for (self: Object, Set[Object]): Layout[Object] */
1504 val
* VIRTUAL_layout_builders__TypingColorer__build_layout(val
* self
, val
* p0
) {
1505 val
* var
/* : Layout[Object] */;
1506 val
* var1
/* : Layout[Object] */;
1507 var1
= layout_builders__TypingColorer__build_layout(self
, p0
);
1512 /* method layout_builders#TypingColorer#compute_ids for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
1513 val
* layout_builders__TypingColorer__compute_ids(val
* self
, val
* p0
) {
1514 val
* var
/* : Map[Object, Int] */;
1515 short int var1
/* : Bool */;
1518 const struct type
* type_struct
;
1519 val
* var_elements
/* var elements: Set[Object] */;
1520 val
* var2
/* : HashMap[Object, Int] */;
1521 val
* var_ids
/* var ids: HashMap[Object, Int] */;
1522 val
* var3
/* : Array[Object] */;
1523 val
* var4
/* : Iterator[nullable Object] */;
1524 short int var5
/* : Bool */;
1525 val
* var6
/* : nullable Object */;
1526 val
* var_element
/* var element: Object */;
1527 long var7
/* : Int */;
1528 val
* var8
/* : nullable Object */;
1529 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1530 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1531 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1532 cltype
= type_struct
->color
;
1533 idtype
= type_struct
->id
;
1534 if(cltype
>= p0
->type
->table_size
) {
1537 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1540 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 250);
1544 var2
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0kernel__Int
]);
1545 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[Object, Int]>*/;
1546 CHECK_NEW_hash_collection__HashMap(var2
);
1548 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
1549 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var3
) /* iterator on <var3:Array[Object]>*/;
1551 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
1553 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
1555 var7
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
1556 var8
= BOX_kernel__Int(var7
); /* autobox from Int to nullable Object */
1557 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var8
) /* []= on <var_ids:HashMap[Object, Int]>*/;
1558 CONTINUE_label
: (void)0;
1559 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
1561 BREAK_label
: (void)0;
1567 /* method layout_builders#TypingColorer#compute_ids for (self: Object, Set[Object]): Map[Object, Int] */
1568 val
* VIRTUAL_layout_builders__TypingColorer__compute_ids(val
* self
, val
* p0
) {
1569 val
* var
/* : Map[Object, Int] */;
1570 val
* var1
/* : Map[Object, Int] */;
1571 var1
= layout_builders__TypingColorer__compute_ids(self
, p0
);
1576 /* method layout_builders#TypingColorer#colorize for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
1577 val
* layout_builders__TypingColorer__colorize(val
* self
, val
* p0
) {
1578 val
* var
/* : Map[Object, Int] */;
1579 short int var1
/* : Bool */;
1582 const struct type
* type_struct
;
1583 val
* var_elements
/* var elements: Set[Object] */;
1584 val
* var2
/* : Set[Object] */;
1585 val
* var3
/* : Set[Object] */;
1586 val
* var4
/* : Set[Object] */;
1587 val
* var5
/* : Map[Object, Int] */;
1588 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1589 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1590 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1591 cltype
= type_struct
->color
;
1592 idtype
= type_struct
->id
;
1593 if(cltype
>= p0
->type
->table_size
) {
1596 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1599 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 258);
1603 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__tag_elements
]))(self
, var_elements
) /* tag_elements on <self:TypingColorer[Object]>*/;
1604 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__build_conflicts_graph
]))(self
) /* build_conflicts_graph on <self:TypingColorer[Object]>*/;
1605 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
1606 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var2
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1607 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__border
]))(self
) /* border on <self:TypingColorer[Object]>*/;
1608 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var3
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1609 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(self
) /* crown on <self:TypingColorer[Object]>*/;
1610 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var4
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1611 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1617 /* method layout_builders#TypingColorer#colorize for (self: Object, Set[Object]): Map[Object, Int] */
1618 val
* VIRTUAL_layout_builders__TypingColorer__colorize(val
* self
, val
* p0
) {
1619 val
* var
/* : Map[Object, Int] */;
1620 val
* var1
/* : Map[Object, Int] */;
1621 var1
= layout_builders__TypingColorer__colorize(self
, p0
);
1626 /* method layout_builders#TypingColorer#colorize_elements for (self: TypingColorer[Object], Set[Object]) */
1627 void layout_builders__TypingColorer__colorize_elements(val
* self
, val
* p0
) {
1628 short int var
/* : Bool */;
1631 const struct type
* type_struct
;
1632 val
* var_elements
/* var elements: Set[Object] */;
1633 long var1
/* : Int */;
1634 long var_min_color
/* var min_color: Int */;
1635 val
* var2
/* : Array[Object] */;
1636 val
* var_lin
/* var lin: Array[Object] */;
1637 val
* var3
/* : Iterator[nullable Object] */;
1638 short int var4
/* : Bool */;
1639 val
* var5
/* : nullable Object */;
1640 val
* var_element
/* var element: Object */;
1641 long var_color
/* var color: Int */;
1642 short int var6
/* : Bool */;
1643 short int var7
/* : Bool */;
1644 long var8
/* : Int */;
1645 long var9
/* : Int */;
1646 long var11
/* : Int */;
1647 val
* var12
/* : Map[Object, Int] */;
1648 val
* var13
/* : nullable Object */;
1649 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1650 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1651 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1652 cltype
= type_struct
->color
;
1653 idtype
= type_struct
->id
;
1654 if(cltype
>= p0
->type
->table_size
) {
1657 var
= p0
->type
->type_table
[cltype
] == idtype
;
1660 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 267);
1665 var_min_color
= var1
;
1666 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
1668 var3
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
1670 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
1672 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
1674 var_color
= var_min_color
;
1676 var6
= ((short int (*)(val
*, val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__TypingColorer__is_color_free
]))(self
, var_element
, var_elements
, var_color
) /* is_color_free on <self:TypingColorer[Object]>*/;
1680 { /* Inline kernel#Int#+ (var_color,var8) */
1681 var11
= var_color
+ var8
;
1684 RET_LABEL10
:(void)0;
1687 CONTINUE_label
: (void)0;
1689 BREAK_label
: (void)0;
1690 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1691 var13
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
1692 ((void (*)(val
*, val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var12
, var_element
, var13
) /* []= on <var12:Map[Object, Int]>*/;
1693 var_color
= var_min_color
;
1694 CONTINUE_label14
: (void)0;
1695 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
1697 BREAK_label14
: (void)0;
1700 /* method layout_builders#TypingColorer#colorize_elements for (self: Object, Set[Object]) */
1701 void VIRTUAL_layout_builders__TypingColorer__colorize_elements(val
* self
, val
* p0
) {
1702 layout_builders__TypingColorer__colorize_elements(self
, p0
);
1705 /* method layout_builders#TypingColorer#is_color_free for (self: TypingColorer[Object], Object, Set[Object], Int): Bool */
1706 short int layout_builders__TypingColorer__is_color_free(val
* self
, val
* p0
, val
* p1
, long p2
) {
1707 short int var
/* : Bool */;
1708 short int var1
/* : Bool */;
1711 const struct type
* type_struct
;
1712 short int var2
/* : Bool */;
1715 const struct type
* type_struct5
;
1716 val
* var_element
/* var element: Object */;
1717 val
* var_elements
/* var elements: Set[Object] */;
1718 long var_color
/* var color: Int */;
1719 val
* var6
/* : nullable HashMap[Object, Set[Object]] */;
1720 short int var7
/* : Bool */;
1721 val
* var8
/* : nullable HashMap[Object, Set[Object]] */;
1722 val
* var9
/* : nullable Object */;
1723 val
* var10
/* : Iterator[nullable Object] */;
1724 short int var11
/* : Bool */;
1725 val
* var12
/* : nullable Object */;
1726 val
* var_st
/* var st: Object */;
1727 short int var13
/* : Bool */;
1728 val
* var14
/* : Map[Object, Int] */;
1729 short int var15
/* : Bool */;
1730 short int var_
/* var : Bool */;
1731 val
* var16
/* : Map[Object, Int] */;
1732 val
* var17
/* : nullable Object */;
1733 short int var18
/* : Bool */;
1734 short int var20
/* : Bool */;
1735 long var21
/* : Int */;
1736 short int var22
/* : Bool */;
1737 val
* var23
/* : nullable POSet[Object] */;
1738 val
* var24
/* : POSetElement[Object] */;
1739 val
* var25
/* : Collection[Object] */;
1740 val
* var26
/* : Iterator[nullable Object] */;
1741 short int var27
/* : Bool */;
1742 val
* var28
/* : nullable Object */;
1743 val
* var_st29
/* var st: Object */;
1744 short int var30
/* : Bool */;
1745 short int var32
/* : Bool */;
1746 val
* var33
/* : Map[Object, Int] */;
1747 short int var34
/* : Bool */;
1748 short int var_35
/* var : Bool */;
1749 val
* var36
/* : Map[Object, Int] */;
1750 val
* var37
/* : nullable Object */;
1751 short int var38
/* : Bool */;
1752 short int var40
/* : Bool */;
1753 long var41
/* : Int */;
1754 short int var42
/* : Bool */;
1755 short int var43
/* : Bool */;
1756 /* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
1757 /* <p0:Object> isa TypingColorer#0 */
1758 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__TypingColorer_FT0
];
1759 cltype
= type_struct
->color
;
1760 idtype
= type_struct
->id
;
1761 if(cltype
>= p0
->type
->table_size
) {
1764 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1767 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 282);
1770 /* Covariant cast for argument 1 (elements) <p1:Set[Object]> isa Set[TypingColorer#0] */
1771 /* <p1:Set[Object]> isa Set[TypingColorer#0] */
1772 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1773 cltype3
= type_struct5
->color
;
1774 idtype4
= type_struct5
->id
;
1775 if(cltype3
>= p1
->type
->table_size
) {
1778 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
1781 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 282);
1787 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
1789 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 284);
1792 var7
= ((short int (*)(val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var6
, var_element
) /* has_key on <var6:nullable HashMap[Object, Set[Object]]>*/;
1795 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
1797 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 285);
1800 var9
= ((val
* (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var8
, var_element
) /* [] on <var8:nullable HashMap[Object, Set[Object]]>*/;
1802 var10
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var9
) /* iterator on <var9:nullable Object(Set[Object])>*/;
1804 var11
= ((short int (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var10
) /* is_ok on <var10:Iterator[nullable Object]>*/;
1806 var12
= ((val
* (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var10
) /* item on <var10:Iterator[nullable Object]>*/;
1808 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1809 var15
= ((short int (*)(val
*, val
*))(var14
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var14
, var_st
) /* has_key on <var14:Map[Object, Int]>*/;
1812 var16
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1813 var17
= ((val
* (*)(val
*, val
*))(var16
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var16
, var_st
) /* [] on <var16:Map[Object, Int]>*/;
1814 { /* Inline kernel#Int#== (var17,var_color) */
1815 var20
= (var17
!= NULL
) && (var17
->class == &class_kernel__Int
);
1817 var21
= ((struct instance_kernel__Int
*)var17
)->value
; /* autounbox from nullable Object to Int */;
1818 var20
= (var21
== var_color
);
1822 RET_LABEL19
:(void)0;
1834 CONTINUE_label
: (void)0;
1835 ((void (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var10
) /* next on <var10:Iterator[nullable Object]>*/;
1837 BREAK_label
: (void)0;
1840 var23
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
1841 if (var23
== NULL
) {
1842 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 289);
1845 var24
= ((val
* (*)(val
*, val
*))(var23
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var23
, var_element
) /* [] on <var23:nullable POSet[Object]>*/;
1847 var25
= ((val
* (*)(val
*))(var24
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var24
) /* greaters on <var24:POSetElement[Object]>*/;
1848 var26
= ((val
* (*)(val
*))(var25
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var25
) /* iterator on <var25:Collection[Object]>*/;
1850 var27
= ((short int (*)(val
*))(var26
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var26
) /* is_ok on <var26:Iterator[nullable Object]>*/;
1852 var28
= ((val
* (*)(val
*))(var26
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var26
) /* item on <var26:Iterator[nullable Object]>*/;
1854 var30
= ((short int (*)(val
*, val
*))(var_st29
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_st29
, var_element
) /* == on <var_st29:Object>*/;
1856 goto CONTINUE_label31
;
1859 var33
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1860 var34
= ((short int (*)(val
*, val
*))(var33
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var33
, var_st29
) /* has_key on <var33:Map[Object, Int]>*/;
1863 var36
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1864 var37
= ((val
* (*)(val
*, val
*))(var36
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var36
, var_st29
) /* [] on <var36:Map[Object, Int]>*/;
1865 { /* Inline kernel#Int#== (var37,var_color) */
1866 var40
= (var37
!= NULL
) && (var37
->class == &class_kernel__Int
);
1868 var41
= ((struct instance_kernel__Int
*)var37
)->value
; /* autounbox from nullable Object to Int */;
1869 var40
= (var41
== var_color
);
1873 RET_LABEL39
:(void)0;
1885 CONTINUE_label31
: (void)0;
1886 ((void (*)(val
*))(var26
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var26
) /* next on <var26:Iterator[nullable Object]>*/;
1888 BREAK_label31
: (void)0;
1895 /* method layout_builders#TypingColorer#is_color_free for (self: Object, Object, Set[Object], Int): Bool */
1896 short int VIRTUAL_layout_builders__TypingColorer__is_color_free(val
* self
, val
* p0
, val
* p1
, long p2
) {
1897 short int var
/* : Bool */;
1898 short int var1
/* : Bool */;
1899 var1
= layout_builders__TypingColorer__is_color_free(self
, p0
, p1
, p2
);
1904 /* method layout_builders#TypingColorer#tag_elements for (self: TypingColorer[Object], Set[Object]) */
1905 void layout_builders__TypingColorer__tag_elements(val
* self
, val
* p0
) {
1906 short int var
/* : Bool */;
1909 const struct type
* type_struct
;
1910 val
* var_elements
/* var elements: Set[Object] */;
1911 val
* var1
/* : Iterator[nullable Object] */;
1912 short int var2
/* : Bool */;
1913 val
* var3
/* : nullable Object */;
1914 val
* var_element
/* var element: Object */;
1915 short int var4
/* : Bool */;
1916 short int var_all_subelements_si
/* var all_subelements_si: Bool */;
1917 val
* var5
/* : nullable POSet[Object] */;
1918 val
* var6
/* : POSetElement[Object] */;
1919 val
* var7
/* : Collection[Object] */;
1920 val
* var8
/* : Iterator[nullable Object] */;
1921 short int var9
/* : Bool */;
1922 val
* var10
/* : nullable Object */;
1923 val
* var_subelem
/* var subelem: Object */;
1924 val
* var11
/* : nullable POSet[Object] */;
1925 val
* var12
/* : POSetElement[Object] */;
1926 val
* var13
/* : Collection[Object] */;
1927 long var14
/* : Int */;
1928 long var15
/* : Int */;
1929 short int var16
/* : Bool */;
1930 short int var18
/* : Bool */;
1933 short int var21
/* : Bool */;
1934 short int var22
/* : Bool */;
1935 val
* var23
/* : nullable POSet[Object] */;
1936 val
* var24
/* : POSetElement[Object] */;
1937 val
* var25
/* : Collection[Object] */;
1938 long var26
/* : Int */;
1939 long var27
/* : Int */;
1940 short int var28
/* : Bool */;
1941 short int var30
/* : Bool */;
1944 short int var33
/* : Bool */;
1945 val
* var34
/* : Set[Object] */;
1946 val
* var35
/* : nullable POSet[Object] */;
1947 val
* var36
/* : POSetElement[Object] */;
1948 val
* var37
/* : Collection[Object] */;
1949 val
* var38
/* : Set[Object] */;
1950 short int var39
/* : Bool */;
1951 val
* var40
/* : Set[Object] */;
1952 val
* var41
/* : nullable POSet[Object] */;
1953 val
* var42
/* : POSetElement[Object] */;
1954 val
* var43
/* : Collection[Object] */;
1955 val
* var44
/* : Set[Object] */;
1956 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1957 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1958 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1959 cltype
= type_struct
->color
;
1960 idtype
= type_struct
->id
;
1961 if(cltype
>= p0
->type
->table_size
) {
1964 var
= p0
->type
->type_table
[cltype
] == idtype
;
1967 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 296);
1971 var1
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[Object]>*/;
1973 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
1975 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
1978 var_all_subelements_si
= var4
;
1979 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
1981 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 301);
1984 var6
= ((val
* (*)(val
*, val
*))(var5
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var5
, var_element
) /* [] on <var5:nullable POSet[Object]>*/;
1986 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_poset__POSetElement__smallers
]))(var6
) /* smallers on <var6:POSetElement[Object]>*/;
1987 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var7
) /* iterator on <var7:Collection[Object]>*/;
1989 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
1991 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
1992 var_subelem
= var10
;
1993 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
1994 if (var11
== NULL
) {
1995 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 302);
1998 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var11
, var_subelem
) /* [] on <var11:nullable POSet[Object]>*/;
2000 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var12
) /* direct_greaters on <var12:POSetElement[Object]>*/;
2001 var14
= ((long (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var13
) /* length on <var13:Collection[Object]>*/;
2003 { /* Inline kernel#Int#> (var14,var15) */
2004 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
2005 /* <var15:Int> isa OTHER */
2006 var18
= 1; /* easy <var15:Int> isa OTHER*/
2008 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2011 var21
= var14
> var15
;
2014 RET_LABEL17
:(void)0;
2018 var_all_subelements_si
= var22
;
2022 CONTINUE_label
: (void)0;
2023 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
2025 BREAK_label
: (void)0;
2026 var23
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2027 if (var23
== NULL
) {
2028 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 309);
2031 var24
= ((val
* (*)(val
*, val
*))(var23
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var23
, var_element
) /* [] on <var23:nullable POSet[Object]>*/;
2033 var25
= ((val
* (*)(val
*))(var24
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var24
) /* direct_greaters on <var24:POSetElement[Object]>*/;
2034 var26
= ((long (*)(val
*))(var25
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var25
) /* length on <var25:Collection[Object]>*/;
2036 { /* Inline kernel#Int#> (var26,var27) */
2037 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
2038 /* <var27:Int> isa OTHER */
2039 var30
= 1; /* easy <var27:Int> isa OTHER*/
2041 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2044 var33
= var26
> var27
;
2047 RET_LABEL29
:(void)0;
2050 var34
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2051 var35
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2052 if (var35
== NULL
) {
2053 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 310);
2056 var36
= ((val
* (*)(val
*, val
*))(var35
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var35
, var_element
) /* [] on <var35:nullable POSet[Object]>*/;
2058 var37
= ((val
* (*)(val
*))(var36
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var36
) /* greaters on <var36:POSetElement[Object]>*/;
2059 ((void (*)(val
*, val
*))(var34
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var34
, var37
) /* add_all on <var34:Set[Object]>*/;
2060 if (var_all_subelements_si
){
2061 var38
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__border
]))(self
) /* border on <self:TypingColorer[Object]>*/;
2062 ((void (*)(val
*, val
*))(var38
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var38
, var_element
) /* add on <var38:Set[Object]>*/;
2066 var39
= !var_all_subelements_si
;
2068 var40
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2069 var41
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2070 if (var41
== NULL
) {
2071 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 315);
2074 var42
= ((val
* (*)(val
*, val
*))(var41
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var41
, var_element
) /* [] on <var41:nullable POSet[Object]>*/;
2076 var43
= ((val
* (*)(val
*))(var42
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var42
) /* greaters on <var42:POSetElement[Object]>*/;
2077 ((void (*)(val
*, val
*))(var40
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var40
, var43
) /* add_all on <var40:Set[Object]>*/;
2079 var44
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(self
) /* crown on <self:TypingColorer[Object]>*/;
2080 ((void (*)(val
*, val
*))(var44
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var44
, var_element
) /* add on <var44:Set[Object]>*/;
2083 CONTINUE_label45
: (void)0;
2084 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
2086 BREAK_label45
: (void)0;
2089 /* method layout_builders#TypingColorer#tag_elements for (self: Object, Set[Object]) */
2090 void VIRTUAL_layout_builders__TypingColorer__tag_elements(val
* self
, val
* p0
) {
2091 layout_builders__TypingColorer__tag_elements(self
, p0
);
2094 /* method layout_builders#TypingColorer#build_conflicts_graph for (self: TypingColorer[Object]) */
2095 void layout_builders__TypingColorer__build_conflicts_graph(val
* self
) {
2096 val
* var
/* : HashMap[Object, HashSet[Object]] */;
2097 val
* var1
/* : Set[Object] */;
2098 val
* var2
/* : Array[Object] */;
2099 val
* var_core
/* var core: Array[Object] */;
2100 val
* var3
/* : Iterator[nullable Object] */;
2101 short int var4
/* : Bool */;
2102 val
* var5
/* : nullable Object */;
2103 val
* var_t
/* var t: Object */;
2104 val
* var6
/* : Array[Object] */;
2105 val
* var7
/* : Iterator[nullable Object] */;
2106 short int var8
/* : Bool */;
2107 val
* var9
/* : nullable Object */;
2108 val
* var_i
/* var i: Object */;
2109 short int var10
/* : Bool */;
2110 val
* var11
/* : Array[Object] */;
2111 val
* var_lin_i
/* var lin_i: Array[Object] */;
2112 val
* var12
/* : Array[Object] */;
2113 val
* var13
/* : Iterator[nullable Object] */;
2114 short int var14
/* : Bool */;
2115 val
* var15
/* : nullable Object */;
2116 val
* var_j
/* var j: Object */;
2117 short int var16
/* : Bool */;
2118 short int var17
/* : Bool */;
2119 short int var_
/* var : Bool */;
2120 short int var18
/* : Bool */;
2121 val
* var20
/* : Array[Object] */;
2122 val
* var_lin_j
/* var lin_j: Array[Object] */;
2123 val
* var21
/* : Array[nullable Object] */;
2124 val
* var_d_ij
/* var d_ij: Array[Object] */;
2125 val
* var22
/* : Array[nullable Object] */;
2126 val
* var_d_ji
/* var d_ji: Array[Object] */;
2127 val
* var23
/* : Iterator[nullable Object] */;
2128 short int var24
/* : Bool */;
2129 val
* var25
/* : nullable Object */;
2130 val
* var_ed1
/* var ed1: Object */;
2131 val
* var26
/* : nullable HashMap[Object, Set[Object]] */;
2132 short int var27
/* : Bool */;
2133 short int var28
/* : Bool */;
2134 val
* var29
/* : nullable HashMap[Object, Set[Object]] */;
2135 val
* var30
/* : HashSet[Object] */;
2136 val
* var31
/* : Iterator[nullable Object] */;
2137 short int var32
/* : Bool */;
2138 val
* var33
/* : nullable Object */;
2139 val
* var_ed2
/* var ed2: Object */;
2140 val
* var34
/* : nullable HashMap[Object, Set[Object]] */;
2141 val
* var35
/* : nullable Object */;
2142 val
* var38
/* : Iterator[nullable Object] */;
2143 short int var39
/* : Bool */;
2144 val
* var40
/* : nullable Object */;
2145 val
* var_ed141
/* var ed1: Object */;
2146 val
* var42
/* : nullable HashMap[Object, Set[Object]] */;
2147 short int var43
/* : Bool */;
2148 short int var44
/* : Bool */;
2149 val
* var45
/* : nullable HashMap[Object, Set[Object]] */;
2150 val
* var46
/* : HashSet[Object] */;
2151 val
* var47
/* : Iterator[nullable Object] */;
2152 short int var48
/* : Bool */;
2153 val
* var49
/* : nullable Object */;
2154 val
* var_ed250
/* var ed2: Object */;
2155 val
* var51
/* : nullable HashMap[Object, Set[Object]] */;
2156 val
* var52
/* : nullable Object */;
2157 var
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2158 ((void (*)(val
*))(var
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var
) /* init on <var:HashMap[Object, HashSet[Object]]>*/;
2159 CHECK_NEW_hash_collection__HashMap(var
);
2160 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph_61d
]))(self
, var
) /* conflicts_graph= on <self:TypingColorer[Object]>*/;
2161 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2162 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var1
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
2164 var3
= ((val
* (*)(val
*))(var_core
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_core
) /* iterator on <var_core:Array[Object]>*/;
2166 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
2168 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
2170 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_t
) /* linear_extension on <self:TypingColorer[Object]>*/;
2171 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var6
) /* iterator on <var6:Array[Object]>*/;
2173 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
2175 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
2177 var10
= ((short int (*)(val
*, val
*))(var_t
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_t
, var_i
) /* == on <var_t:Object>*/;
2179 goto CONTINUE_label
;
2182 var11
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_i
) /* linear_extension on <self:TypingColorer[Object]>*/;
2184 var12
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_t
) /* linear_extension on <self:TypingColorer[Object]>*/;
2185 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var12
) /* iterator on <var12:Array[Object]>*/;
2187 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var13
) /* is_ok on <var13:Iterator[nullable Object]>*/;
2189 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var13
) /* item on <var13:Iterator[nullable Object]>*/;
2191 var17
= ((short int (*)(val
*, val
*))(var_i
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_i
, var_j
) /* == on <var_i:Object>*/;
2196 var18
= ((short int (*)(val
*, val
*))(var_j
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_j
, var_t
) /* == on <var_j:Object>*/;
2200 goto CONTINUE_label19
;
2203 var20
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_j
) /* linear_extension on <self:TypingColorer[Object]>*/;
2205 var21
= ((val
* (*)(val
*, val
*))(var_lin_i
->class->vft
[COLOR_abstract_compiler__Array___45d
]))(var_lin_i
, var_lin_j
) /* - on <var_lin_i:Array[Object]>*/;
2207 var22
= ((val
* (*)(val
*, val
*))(var_lin_j
->class->vft
[COLOR_abstract_compiler__Array___45d
]))(var_lin_j
, var_lin_i
) /* - on <var_lin_j:Array[Object]>*/;
2209 var23
= ((val
* (*)(val
*))(var_d_ij
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ij
) /* iterator on <var_d_ij:Array[Object]>*/;
2211 var24
= ((short int (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var23
) /* is_ok on <var23:Iterator[nullable Object]>*/;
2213 var25
= ((val
* (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var23
) /* item on <var23:Iterator[nullable Object]>*/;
2215 var26
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2216 if (var26
== NULL
) {
2217 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 340);
2220 var27
= ((short int (*)(val
*, val
*))(var26
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var26
, var_ed1
) /* has_key on <var26:nullable HashMap[Object, Set[Object]]>*/;
2224 var29
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2225 var30
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2226 ((void (*)(val
*))(var30
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var30
) /* init on <var30:HashSet[Object]>*/;
2227 CHECK_NEW_hash_collection__HashSet(var30
);
2228 if (var29
== NULL
) {
2229 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 340);
2232 ((void (*)(val
*, val
*, val
*))(var29
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var29
, var_ed1
, var30
) /* []= on <var29:nullable HashMap[Object, Set[Object]]>*/;
2236 var31
= ((val
* (*)(val
*))(var_d_ji
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ji
) /* iterator on <var_d_ji:Array[Object]>*/;
2238 var32
= ((short int (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var31
) /* is_ok on <var31:Iterator[nullable Object]>*/;
2240 var33
= ((val
* (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var31
) /* item on <var31:Iterator[nullable Object]>*/;
2242 var34
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2243 if (var34
== NULL
) {
2244 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 342);
2247 var35
= ((val
* (*)(val
*, val
*))(var34
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var34
, var_ed1
) /* [] on <var34:nullable HashMap[Object, Set[Object]]>*/;
2249 ((void (*)(val
*, val
*))(var35
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var35
, var_ed2
) /* add on <var35:nullable Object(Set[Object])>*/;
2250 CONTINUE_label36
: (void)0;
2251 ((void (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var31
) /* next on <var31:Iterator[nullable Object]>*/;
2253 BREAK_label36
: (void)0;
2254 CONTINUE_label37
: (void)0;
2255 ((void (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var23
) /* next on <var23:Iterator[nullable Object]>*/;
2257 BREAK_label37
: (void)0;
2258 var38
= ((val
* (*)(val
*))(var_d_ij
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ij
) /* iterator on <var_d_ij:Array[Object]>*/;
2260 var39
= ((short int (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var38
) /* is_ok on <var38:Iterator[nullable Object]>*/;
2262 var40
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var38
) /* item on <var38:Iterator[nullable Object]>*/;
2264 var42
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2265 if (var42
== NULL
) {
2266 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 345);
2269 var43
= ((short int (*)(val
*, val
*))(var42
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var42
, var_ed141
) /* has_key on <var42:nullable HashMap[Object, Set[Object]]>*/;
2273 var45
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2274 var46
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2275 ((void (*)(val
*))(var46
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var46
) /* init on <var46:HashSet[Object]>*/;
2276 CHECK_NEW_hash_collection__HashSet(var46
);
2277 if (var45
== NULL
) {
2278 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 345);
2281 ((void (*)(val
*, val
*, val
*))(var45
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var45
, var_ed141
, var46
) /* []= on <var45:nullable HashMap[Object, Set[Object]]>*/;
2285 var47
= ((val
* (*)(val
*))(var_d_ji
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ji
) /* iterator on <var_d_ji:Array[Object]>*/;
2287 var48
= ((short int (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var47
) /* is_ok on <var47:Iterator[nullable Object]>*/;
2289 var49
= ((val
* (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var47
) /* item on <var47:Iterator[nullable Object]>*/;
2291 var51
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2292 if (var51
== NULL
) {
2293 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 347);
2296 var52
= ((val
* (*)(val
*, val
*))(var51
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var51
, var_ed141
) /* [] on <var51:nullable HashMap[Object, Set[Object]]>*/;
2298 ((void (*)(val
*, val
*))(var52
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var52
, var_ed250
) /* add on <var52:nullable Object(Set[Object])>*/;
2299 CONTINUE_label53
: (void)0;
2300 ((void (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var47
) /* next on <var47:Iterator[nullable Object]>*/;
2302 BREAK_label53
: (void)0;
2303 CONTINUE_label54
: (void)0;
2304 ((void (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var38
) /* next on <var38:Iterator[nullable Object]>*/;
2306 BREAK_label54
: (void)0;
2307 CONTINUE_label19
: (void)0;
2308 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var13
) /* next on <var13:Iterator[nullable Object]>*/;
2310 BREAK_label19
: (void)0;
2311 CONTINUE_label
: (void)0;
2312 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
2314 BREAK_label
: (void)0;
2315 CONTINUE_label55
: (void)0;
2316 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
2318 BREAK_label55
: (void)0;
2321 /* method layout_builders#TypingColorer#build_conflicts_graph for (self: Object) */
2322 void VIRTUAL_layout_builders__TypingColorer__build_conflicts_graph(val
* self
) {
2323 layout_builders__TypingColorer__build_conflicts_graph(self
);
2326 /* method layout_builders#TypingColorer#conflicts_graph for (self: TypingColorer[Object]): nullable HashMap[Object, Set[Object]] */
2327 val
* layout_builders__TypingColorer__conflicts_graph(val
* self
) {
2328 val
* var
/* : nullable HashMap[Object, Set[Object]] */;
2329 val
* var1
/* : nullable HashMap[Object, Set[Object]] */;
2330 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dconflicts_graph
].val
; /* @conflicts_graph on <self:TypingColorer[Object]> */
2335 /* method layout_builders#TypingColorer#conflicts_graph for (self: Object): nullable HashMap[Object, Set[Object]] */
2336 val
* VIRTUAL_layout_builders__TypingColorer__conflicts_graph(val
* self
) {
2337 val
* var
/* : nullable HashMap[Object, Set[Object]] */;
2338 val
* var1
/* : nullable HashMap[Object, Set[Object]] */;
2339 var1
= layout_builders__TypingColorer__conflicts_graph(self
);
2344 /* method layout_builders#TypingColorer#conflicts_graph= for (self: TypingColorer[Object], nullable HashMap[Object, Set[Object]]) */
2345 void layout_builders__TypingColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
2346 short int var
/* : Bool */;
2349 const struct type
* type_struct
;
2350 /* Covariant cast for argument 0 (conflicts_graph) <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
2351 /* <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
2352 type_struct
= self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2353 cltype
= type_struct
->color
;
2354 idtype
= type_struct
->id
;
2358 if(cltype
>= p0
->type
->table_size
) {
2361 var
= p0
->type
->type_table
[cltype
] == idtype
;
2365 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 354);
2368 self
->attrs
[COLOR_layout_builders__TypingColorer___64dconflicts_graph
].val
= p0
; /* @conflicts_graph on <self:TypingColorer[Object]> */
2371 /* method layout_builders#TypingColorer#conflicts_graph= for (self: Object, nullable HashMap[Object, Set[Object]]) */
2372 void VIRTUAL_layout_builders__TypingColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
2373 layout_builders__TypingColorer__conflicts_graph_61d(self
, p0
);
2376 /* method layout_builders#TypingColorer#linear_extensions_cache for (self: TypingColorer[Object]): Map[Object, Array[Object]] */
2377 val
* layout_builders__TypingColorer__linear_extensions_cache(val
* self
) {
2378 val
* var
/* : Map[Object, Array[Object]] */;
2379 val
* var1
/* : Map[Object, Array[Object]] */;
2380 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache
].val
; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
2382 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @linear_extensions_cache", "src/layout_builders.nit", 356);
2389 /* method layout_builders#TypingColorer#linear_extensions_cache for (self: Object): Map[Object, Array[Object]] */
2390 val
* VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache(val
* self
) {
2391 val
* var
/* : Map[Object, Array[Object]] */;
2392 val
* var1
/* : Map[Object, Array[Object]] */;
2393 var1
= layout_builders__TypingColorer__linear_extensions_cache(self
);
2398 /* method layout_builders#TypingColorer#linear_extensions_cache= for (self: TypingColorer[Object], Map[Object, Array[Object]]) */
2399 void layout_builders__TypingColorer__linear_extensions_cache_61d(val
* self
, val
* p0
) {
2400 short int var
/* : Bool */;
2403 const struct type
* type_struct
;
2404 /* Covariant cast for argument 0 (linear_extensions_cache) <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
2405 /* <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
2406 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0array__Arraylayout_builders__TypingColorer_FT0
];
2407 cltype
= type_struct
->color
;
2408 idtype
= type_struct
->id
;
2409 if(cltype
>= p0
->type
->table_size
) {
2412 var
= p0
->type
->type_table
[cltype
] == idtype
;
2415 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 356);
2418 self
->attrs
[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache
].val
= p0
; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
2421 /* method layout_builders#TypingColorer#linear_extensions_cache= for (self: Object, Map[Object, Array[Object]]) */
2422 void VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache_61d(val
* self
, val
* p0
) {
2423 layout_builders__TypingColorer__linear_extensions_cache_61d(self
, p0
);
2426 /* method layout_builders#TypingColorer#linear_extension for (self: TypingColorer[Object], Object): Array[Object] */
2427 val
* layout_builders__TypingColorer__linear_extension(val
* self
, val
* p0
) {
2428 val
* var
/* : Array[Object] */;
2429 short int var1
/* : Bool */;
2432 const struct type
* type_struct
;
2433 val
* var_element
/* var element: Object */;
2434 val
* var2
/* : Map[Object, Array[Object]] */;
2435 short int var3
/* : Bool */;
2436 short int var4
/* : Bool */;
2437 val
* var5
/* : HashSet[Object] */;
2438 val
* var_supers
/* var supers: HashSet[Object] */;
2439 val
* var6
/* : nullable POSet[Object] */;
2440 val
* var7
/* : POSetElement[Object] */;
2441 val
* var8
/* : Collection[Object] */;
2442 val
* var9
/* : Map[Object, Array[Object]] */;
2443 val
* var10
/* : Array[Object] */;
2444 val
* var11
/* : Map[Object, Array[Object]] */;
2445 val
* var12
/* : nullable Object */;
2446 /* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
2447 /* <p0:Object> isa TypingColorer#0 */
2448 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__TypingColorer_FT0
];
2449 cltype
= type_struct
->color
;
2450 idtype
= type_struct
->id
;
2451 if(cltype
>= p0
->type
->table_size
) {
2454 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2457 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 359);
2461 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2462 var3
= ((short int (*)(val
*, val
*))(var2
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var2
, var_element
) /* has_key on <var2:Map[Object, Array[Object]]>*/;
2465 var5
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2466 ((void (*)(val
*))(var5
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var5
) /* init on <var5:HashSet[Object]>*/;
2467 CHECK_NEW_hash_collection__HashSet(var5
);
2469 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2471 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 363);
2474 var7
= ((val
* (*)(val
*, val
*))(var6
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var6
, var_element
) /* [] on <var6:nullable POSet[Object]>*/;
2476 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var7
) /* greaters on <var7:POSetElement[Object]>*/;
2477 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_supers
, var8
) /* add_all on <var_supers:HashSet[Object]>*/;
2478 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2479 var10
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linearize
]))(self
, var_supers
) /* linearize on <self:TypingColorer[Object]>*/;
2480 ((void (*)(val
*, val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var9
, var_element
, var10
) /* []= on <var9:Map[Object, Array[Object]]>*/;
2483 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2484 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_element
) /* [] on <var11:Map[Object, Array[Object]]>*/;
2490 /* method layout_builders#TypingColorer#linear_extension for (self: Object, Object): Array[Object] */
2491 val
* VIRTUAL_layout_builders__TypingColorer__linear_extension(val
* self
, val
* p0
) {
2492 val
* var
/* : Array[Object] */;
2493 val
* var1
/* : Array[Object] */;
2494 var1
= layout_builders__TypingColorer__linear_extension(self
, p0
);
2499 /* method layout_builders#TypingColorer#reverse_linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
2500 val
* layout_builders__TypingColorer__reverse_linearize(val
* self
, val
* p0
) {
2501 val
* var
/* : Array[Object] */;
2502 short int var1
/* : Bool */;
2505 const struct type
* type_struct
;
2506 val
* var_elements
/* var elements: Set[Object] */;
2507 val
* var2
/* : Array[Object] */;
2508 val
* var_lin
/* var lin: Array[Object] */;
2509 val
* var3
/* : nullable POSet[Object] */;
2510 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
2511 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
2512 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2513 cltype
= type_struct
->color
;
2514 idtype
= type_struct
->id
;
2515 if(cltype
>= p0
->type
->table_size
) {
2518 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2521 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 369);
2525 var2
= NEW_array__Array(self
->type
->resolution_table
->types
[COLOR_array__Arraylayout_builders__TypingColorer_FT0
]);
2526 ((void (*)(val
*))(var2
->class->vft
[COLOR_array__Array__init
]))(var2
) /* init on <var2:Array[Object]>*/;
2527 CHECK_NEW_array__Array(var2
);
2529 ((void (*)(val
*, val
*))(var_lin
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_lin
, var_elements
) /* add_all on <var_lin:Array[Object]>*/;
2530 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2532 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 372);
2535 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var3
, var_lin
) /* sort on <var3:nullable POSet[Object]>*/;
2542 /* method layout_builders#TypingColorer#reverse_linearize for (self: Object, Set[Object]): Array[Object] */
2543 val
* VIRTUAL_layout_builders__TypingColorer__reverse_linearize(val
* self
, val
* p0
) {
2544 val
* var
/* : Array[Object] */;
2545 val
* var1
/* : Array[Object] */;
2546 var1
= layout_builders__TypingColorer__reverse_linearize(self
, p0
);
2551 /* method layout_builders#TypingColorer#linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
2552 val
* layout_builders__TypingColorer__linearize(val
* self
, val
* p0
) {
2553 val
* var
/* : Array[Object] */;
2554 short int var1
/* : Bool */;
2557 const struct type
* type_struct
;
2558 val
* var_elements
/* var elements: Set[Object] */;
2559 val
* var2
/* : Array[Object] */;
2560 val
* var3
/* : Array[nullable Object] */;
2561 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
2562 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
2563 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2564 cltype
= type_struct
->color
;
2565 idtype
= type_struct
->id
;
2566 if(cltype
>= p0
->type
->table_size
) {
2569 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2572 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 375);
2576 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
2577 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_array__AbstractArrayRead__reversed
]))(var2
) /* reversed on <var2:Array[Object]>*/;
2583 /* method layout_builders#TypingColorer#linearize for (self: Object, Set[Object]): Array[Object] */
2584 val
* VIRTUAL_layout_builders__TypingColorer__linearize(val
* self
, val
* p0
) {
2585 val
* var
/* : Array[Object] */;
2586 val
* var1
/* : Array[Object] */;
2587 var1
= layout_builders__TypingColorer__linearize(self
, p0
);
2592 /* method layout_builders#MTypeColorer#init for (self: MTypeColorer, MModule) */
2593 void layout_builders__MTypeColorer__init(val
* self
, val
* p0
) {
2594 val
* var_mmodule
/* var mmodule: MModule */;
2595 val
* var
/* : MTypePOSetBuilder */;
2597 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
2598 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
2599 CHECK_NEW_layout_builders__MTypePOSetBuilder(var
);
2600 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__init
]))(self
, var_mmodule
, var
) /* init on <self:MTypeColorer>*/;
2603 /* method layout_builders#MTypeColorer#init for (self: Object, MModule) */
2604 void VIRTUAL_layout_builders__MTypeColorer__init(val
* self
, val
* p0
) {
2605 layout_builders__MTypeColorer__init(self
, p0
);
2608 /* method layout_builders#MClassColorer#init for (self: MClassColorer, MModule) */
2609 void layout_builders__MClassColorer__init(val
* self
, val
* p0
) {
2610 val
* var_mmodule
/* var mmodule: MModule */;
2611 val
* var
/* : MClassPOSetBuilder */;
2613 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
2614 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
2615 CHECK_NEW_layout_builders__MClassPOSetBuilder(var
);
2616 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__init
]))(self
, var_mmodule
, var
) /* init on <self:MClassColorer>*/;
2619 /* method layout_builders#MClassColorer#init for (self: Object, MModule) */
2620 void VIRTUAL_layout_builders__MClassColorer__init(val
* self
, val
* p0
) {
2621 layout_builders__MClassColorer__init(self
, p0
);
2624 /* method layout_builders#MPropertyColorer#mmodule for (self: MPropertyColorer[PropertyLayoutElement]): MModule */
2625 val
* layout_builders__MPropertyColorer__mmodule(val
* self
) {
2626 val
* var
/* : MModule */;
2627 val
* var1
/* : MModule */;
2628 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dmmodule
].val
; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
2630 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 394);
2637 /* method layout_builders#MPropertyColorer#mmodule for (self: Object): MModule */
2638 val
* VIRTUAL_layout_builders__MPropertyColorer__mmodule(val
* self
) {
2639 val
* var
/* : MModule */;
2640 val
* var1
/* : MModule */;
2641 var1
= layout_builders__MPropertyColorer__mmodule(self
);
2646 /* method layout_builders#MPropertyColorer#mmodule= for (self: MPropertyColorer[PropertyLayoutElement], MModule) */
2647 void layout_builders__MPropertyColorer__mmodule_61d(val
* self
, val
* p0
) {
2648 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
2651 /* method layout_builders#MPropertyColorer#mmodule= for (self: Object, MModule) */
2652 void VIRTUAL_layout_builders__MPropertyColorer__mmodule_61d(val
* self
, val
* p0
) {
2653 layout_builders__MPropertyColorer__mmodule_61d(self
, p0
);
2656 /* method layout_builders#MPropertyColorer#class_colorer for (self: MPropertyColorer[PropertyLayoutElement]): MClassColorer */
2657 val
* layout_builders__MPropertyColorer__class_colorer(val
* self
) {
2658 val
* var
/* : MClassColorer */;
2659 val
* var1
/* : MClassColorer */;
2660 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dclass_colorer
].val
; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
2662 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @class_colorer", "src/layout_builders.nit", 395);
2669 /* method layout_builders#MPropertyColorer#class_colorer for (self: Object): MClassColorer */
2670 val
* VIRTUAL_layout_builders__MPropertyColorer__class_colorer(val
* self
) {
2671 val
* var
/* : MClassColorer */;
2672 val
* var1
/* : MClassColorer */;
2673 var1
= layout_builders__MPropertyColorer__class_colorer(self
);
2678 /* method layout_builders#MPropertyColorer#class_colorer= for (self: MPropertyColorer[PropertyLayoutElement], MClassColorer) */
2679 void layout_builders__MPropertyColorer__class_colorer_61d(val
* self
, val
* p0
) {
2680 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dclass_colorer
].val
= p0
; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
2683 /* method layout_builders#MPropertyColorer#class_colorer= for (self: Object, MClassColorer) */
2684 void VIRTUAL_layout_builders__MPropertyColorer__class_colorer_61d(val
* self
, val
* p0
) {
2685 layout_builders__MPropertyColorer__class_colorer_61d(self
, p0
);
2688 /* method layout_builders#MPropertyColorer#coloration_result for (self: MPropertyColorer[PropertyLayoutElement]): Map[PropertyLayoutElement, Int] */
2689 val
* layout_builders__MPropertyColorer__coloration_result(val
* self
) {
2690 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2691 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2692 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dcoloration_result
].val
; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
2694 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 396);
2701 /* method layout_builders#MPropertyColorer#coloration_result for (self: Object): Map[PropertyLayoutElement, Int] */
2702 val
* VIRTUAL_layout_builders__MPropertyColorer__coloration_result(val
* self
) {
2703 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2704 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2705 var1
= layout_builders__MPropertyColorer__coloration_result(self
);
2710 /* method layout_builders#MPropertyColorer#coloration_result= for (self: MPropertyColorer[PropertyLayoutElement], Map[PropertyLayoutElement, Int]) */
2711 void layout_builders__MPropertyColorer__coloration_result_61d(val
* self
, val
* p0
) {
2712 short int var
/* : Bool */;
2715 const struct type
* type_struct
;
2716 /* Covariant cast for argument 0 (coloration_result) <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
2717 /* <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
2718 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__MPropertyColorer_FT0kernel__Int
];
2719 cltype
= type_struct
->color
;
2720 idtype
= type_struct
->id
;
2721 if(cltype
>= p0
->type
->table_size
) {
2724 var
= p0
->type
->type_table
[cltype
] == idtype
;
2727 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 396);
2730 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
2733 /* method layout_builders#MPropertyColorer#coloration_result= for (self: Object, Map[PropertyLayoutElement, Int]) */
2734 void VIRTUAL_layout_builders__MPropertyColorer__coloration_result_61d(val
* self
, val
* p0
) {
2735 layout_builders__MPropertyColorer__coloration_result_61d(self
, p0
);
2738 /* method layout_builders#MPropertyColorer#init for (self: MPropertyColorer[PropertyLayoutElement], MModule, MClassColorer) */
2739 void layout_builders__MPropertyColorer__init(val
* self
, val
* p0
, val
* p1
) {
2740 val
* var_mmodule
/* var mmodule: MModule */;
2741 val
* var_class_colorer
/* var class_colorer: MClassColorer */;
2743 var_class_colorer
= p1
;
2744 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2745 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer_61d
]))(self
, var_class_colorer
) /* class_colorer= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2748 /* method layout_builders#MPropertyColorer#init for (self: Object, MModule, MClassColorer) */
2749 void VIRTUAL_layout_builders__MPropertyColorer__init(val
* self
, val
* p0
, val
* p1
) {
2750 layout_builders__MPropertyColorer__init(self
, p0
, p1
);
2753 /* method layout_builders#MPropertyColorer#build_layout for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
2754 val
* layout_builders__MPropertyColorer__build_layout(val
* self
, val
* p0
) {
2755 val
* var
/* : Layout[PropertyLayoutElement] */;
2756 short int var1
/* : Bool */;
2759 const struct type
* type_struct
;
2760 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2761 val
* var2
/* : Layout[PropertyLayoutElement] */;
2762 val
* var_result
/* var result: Layout[PropertyLayoutElement] */;
2763 val
* var3
/* : Map[PropertyLayoutElement, Int] */;
2764 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2765 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2766 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2767 cltype
= type_struct
->color
;
2768 idtype
= type_struct
->id
;
2769 if(cltype
>= p0
->type
->table_size
) {
2772 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2775 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 403);
2779 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__MPropertyColorer_FT0
]);
2780 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[PropertyLayoutElement]>*/;
2781 CHECK_NEW_layout_builders__Layout(var2
);
2783 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize
]))(self
, var_elements
) /* colorize on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2784 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var3
) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
2790 /* method layout_builders#MPropertyColorer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
2791 val
* VIRTUAL_layout_builders__MPropertyColorer__build_layout(val
* self
, val
* p0
) {
2792 val
* var
/* : Layout[PropertyLayoutElement] */;
2793 val
* var1
/* : Layout[PropertyLayoutElement] */;
2794 var1
= layout_builders__MPropertyColorer__build_layout(self
, p0
);
2799 /* method layout_builders#MPropertyColorer#colorize for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
2800 val
* layout_builders__MPropertyColorer__colorize(val
* self
, val
* p0
) {
2801 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2802 short int var1
/* : Bool */;
2805 const struct type
* type_struct
;
2806 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2807 val
* var2
/* : Map[PropertyLayoutElement, Int] */;
2808 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2809 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2810 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2811 cltype
= type_struct
->color
;
2812 idtype
= type_struct
->id
;
2813 if(cltype
>= p0
->type
->table_size
) {
2816 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2819 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 410);
2823 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_core
]))(self
, var_elements
) /* colorize_core on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2824 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_crown
]))(self
, var_elements
) /* colorize_crown on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2825 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2831 /* method layout_builders#MPropertyColorer#colorize for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
2832 val
* VIRTUAL_layout_builders__MPropertyColorer__colorize(val
* self
, val
* p0
) {
2833 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2834 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2835 var1
= layout_builders__MPropertyColorer__colorize(self
, p0
);
2840 /* method layout_builders#MPropertyColorer#colorize_core for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
2841 void layout_builders__MPropertyColorer__colorize_core(val
* self
, val
* p0
) {
2842 short int var
/* : Bool */;
2845 const struct type
* type_struct
;
2846 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2847 long var1
/* : Int */;
2848 long var_min_color
/* var min_color: Int */;
2849 val
* var2
/* : MClassColorer */;
2850 val
* var3
/* : Set[Object] */;
2851 val
* var4
/* : Iterator[nullable Object] */;
2852 short int var5
/* : Bool */;
2853 val
* var6
/* : nullable Object */;
2854 val
* var_mclass
/* var mclass: MClass */;
2855 long var_color
/* var color: Int */;
2856 val
* var7
/* : MModule */;
2857 val
* var8
/* : POSetElement[MClass] */;
2858 val
* var9
/* : Collection[Object] */;
2859 long var10
/* : Int */;
2860 val
* var11
/* : MClassColorer */;
2861 val
* var12
/* : nullable HashMap[Object, Set[Object]] */;
2862 short int var13
/* : Bool */;
2863 val
* var14
/* : MClassColorer */;
2864 val
* var15
/* : nullable HashMap[Object, Set[Object]] */;
2865 val
* var16
/* : nullable Object */;
2866 long var17
/* : Int */;
2867 val
* var18
/* : nullable Object */;
2868 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2869 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2870 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2871 cltype
= type_struct
->color
;
2872 idtype
= type_struct
->id
;
2873 if(cltype
>= p0
->type
->table_size
) {
2876 var
= p0
->type
->type_table
[cltype
] == idtype
;
2879 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 416);
2884 var_min_color
= var1
;
2885 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2886 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(var2
) /* core on <var2:MClassColorer>*/;
2887 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var3
) /* iterator on <var3:Set[Object](Set[MClass])>*/;
2889 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
2891 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
2893 var_color
= var_min_color
;
2894 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2895 var8
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var7
) /* in_hierarchy on <var_mclass:MClass>*/;
2896 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var8
) /* direct_greaters on <var8:POSetElement[MClass]>*/;
2897 var10
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var_color
, var9
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2899 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2900 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(var11
) /* conflicts_graph on <var11:MClassColorer>*/;
2901 if (var12
== NULL
) {
2902 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 424);
2905 var13
= ((short int (*)(val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var12
, var_mclass
) /* has_key on <var12:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
2908 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2909 var15
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(var14
) /* conflicts_graph on <var14:MClassColorer>*/;
2910 if (var15
== NULL
) {
2911 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 425);
2914 var16
= ((val
* (*)(val
*, val
*))(var15
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var15
, var_mclass
) /* [] on <var15:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
2916 var17
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var_color
, var16
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2920 var18
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
2921 ((void (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_elements
]))(self
, var18
, var_color
) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2922 CONTINUE_label
: (void)0;
2923 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
2925 BREAK_label
: (void)0;
2928 /* method layout_builders#MPropertyColorer#colorize_core for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
2929 void VIRTUAL_layout_builders__MPropertyColorer__colorize_core(val
* self
, val
* p0
) {
2930 layout_builders__MPropertyColorer__colorize_core(self
, p0
);
2933 /* method layout_builders#MPropertyColorer#colorize_crown for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
2934 void layout_builders__MPropertyColorer__colorize_crown(val
* self
, val
* p0
) {
2935 short int var
/* : Bool */;
2938 const struct type
* type_struct
;
2939 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2940 val
* var1
/* : MClassColorer */;
2941 val
* var2
/* : Set[Object] */;
2942 val
* var3
/* : Iterator[nullable Object] */;
2943 short int var4
/* : Bool */;
2944 val
* var5
/* : nullable Object */;
2945 val
* var_mclass
/* var mclass: MClass */;
2946 val
* var6
/* : HashSet[MClass] */;
2947 val
* var_parents
/* var parents: HashSet[MClass] */;
2948 val
* var7
/* : MModule */;
2949 val
* var8
/* : POSet[MClass] */;
2950 short int var9
/* : Bool */;
2951 val
* var10
/* : MModule */;
2952 val
* var11
/* : POSetElement[MClass] */;
2953 val
* var12
/* : Collection[Object] */;
2954 val
* var13
/* : nullable Object */;
2955 long var14
/* : Int */;
2956 long var15
/* : Int */;
2957 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2958 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2959 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2960 cltype
= type_struct
->color
;
2961 idtype
= type_struct
->id
;
2962 if(cltype
>= p0
->type
->table_size
) {
2965 var
= p0
->type
->type_table
[cltype
] == idtype
;
2968 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 431);
2972 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2973 var2
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(var1
) /* crown on <var1:MClassColorer>*/;
2974 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var2
) /* iterator on <var2:Set[Object](Set[MClass])>*/;
2976 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
2978 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
2980 var6
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
2981 ((void (*)(val
*))(var6
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var6
) /* init on <var6:HashSet[MClass]>*/;
2982 CHECK_NEW_hash_collection__HashSet(var6
);
2984 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2985 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var7
) /* flatten_mclass_hierarchy on <var7:MModule>*/;
2986 var9
= ((short int (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var8
, var_mclass
) /* has on <var8:POSet[MClass]>*/;
2988 var10
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2989 var11
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var10
) /* in_hierarchy on <var_mclass:MClass>*/;
2990 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var11
) /* direct_greaters on <var11:POSetElement[MClass]>*/;
2991 ((void (*)(val
*, val
*))(var_parents
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_parents
, var12
) /* add_all on <var_parents:HashSet[MClass]>*/;
2994 var13
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
2996 var15
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var14
, var_parents
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2997 ((void (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_elements
]))(self
, var13
, var15
) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2998 CONTINUE_label
: (void)0;
2999 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
3001 BREAK_label
: (void)0;
3004 /* method layout_builders#MPropertyColorer#colorize_crown for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
3005 void VIRTUAL_layout_builders__MPropertyColorer__colorize_crown(val
* self
, val
* p0
) {
3006 layout_builders__MPropertyColorer__colorize_crown(self
, p0
);
3009 /* method layout_builders#MPropertyColorer#colorize_elements for (self: MPropertyColorer[PropertyLayoutElement], Collection[PropertyLayoutElement], Int) */
3010 void layout_builders__MPropertyColorer__colorize_elements(val
* self
, val
* p0
, long p1
) {
3011 short int var
/* : Bool */;
3014 const struct type
* type_struct
;
3015 val
* var_elements
/* var elements: Collection[PropertyLayoutElement] */;
3016 long var_start_color
/* var start_color: Int */;
3017 val
* var1
/* : Iterator[nullable Object] */;
3018 short int var2
/* : Bool */;
3019 val
* var3
/* : nullable Object */;
3020 val
* var_element
/* var element: PropertyLayoutElement */;
3021 val
* var4
/* : Map[PropertyLayoutElement, Int] */;
3022 short int var5
/* : Bool */;
3023 val
* var6
/* : Map[PropertyLayoutElement, Int] */;
3024 val
* var7
/* : nullable Object */;
3025 long var8
/* : Int */;
3026 long var9
/* : Int */;
3027 long var11
/* : Int */;
3028 /* Covariant cast for argument 0 (elements) <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
3029 /* <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
3030 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Collectionlayout_builders__MPropertyColorer_FT0
];
3031 cltype
= type_struct
->color
;
3032 idtype
= type_struct
->id
;
3033 if(cltype
>= p0
->type
->table_size
) {
3036 var
= p0
->type
->type_table
[cltype
] == idtype
;
3039 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 442);
3043 var_start_color
= p1
;
3044 var1
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Collection[PropertyLayoutElement]>*/;
3046 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
3048 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
3050 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3051 var5
= ((short int (*)(val
*, val
*))(var4
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var4
, var_element
) /* has_key on <var4:Map[PropertyLayoutElement, Int]>*/;
3053 goto CONTINUE_label
;
3056 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3057 var7
= BOX_kernel__Int(var_start_color
); /* autobox from Int to nullable Object */
3058 ((void (*)(val
*, val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var6
, var_element
, var7
) /* []= on <var6:Map[PropertyLayoutElement, Int]>*/;
3060 { /* Inline kernel#Int#+ (var_start_color,var8) */
3061 var11
= var_start_color
+ var8
;
3064 RET_LABEL10
:(void)0;
3066 var_start_color
= var9
;
3067 CONTINUE_label
: (void)0;
3068 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
3070 BREAK_label
: (void)0;
3073 /* method layout_builders#MPropertyColorer#colorize_elements for (self: Object, Collection[PropertyLayoutElement], Int) */
3074 void VIRTUAL_layout_builders__MPropertyColorer__colorize_elements(val
* self
, val
* p0
, long p1
) {
3075 layout_builders__MPropertyColorer__colorize_elements(self
, p0
, p1
);
3078 /* method layout_builders#MPropertyColorer#max_color for (self: MPropertyColorer[PropertyLayoutElement], Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
3079 long layout_builders__MPropertyColorer__max_color(val
* self
, long p0
, val
* p1
, val
* p2
) {
3080 long var
/* : Int */;
3081 short int var1
/* : Bool */;
3084 const struct type
* type_struct
;
3085 long var_min_color
/* var min_color: Int */;
3086 val
* var_mclasses
/* var mclasses: Collection[MClass] */;
3087 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
3088 long var_max_color
/* var max_color: Int */;
3089 val
* var2
/* : Iterator[nullable Object] */;
3090 short int var3
/* : Bool */;
3091 val
* var4
/* : nullable Object */;
3092 val
* var_mclass
/* var mclass: MClass */;
3093 val
* var5
/* : nullable Object */;
3094 val
* var6
/* : Iterator[nullable Object] */;
3095 short int var7
/* : Bool */;
3096 val
* var8
/* : nullable Object */;
3097 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
3098 long var_color
/* var color: Int */;
3099 val
* var9
/* : Map[PropertyLayoutElement, Int] */;
3100 short int var10
/* : Bool */;
3101 val
* var11
/* : Map[PropertyLayoutElement, Int] */;
3102 val
* var12
/* : nullable Object */;
3103 long var13
/* : Int */;
3104 short int var14
/* : Bool */;
3105 short int var16
/* : Bool */;
3108 short int var19
/* : Bool */;
3109 long var20
/* : Int */;
3110 long var21
/* : Int */;
3111 long var23
/* : Int */;
3112 /* Covariant cast for argument 2 (elements) <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3113 /* <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3114 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
3115 cltype
= type_struct
->color
;
3116 idtype
= type_struct
->id
;
3117 if(cltype
>= p2
->type
->table_size
) {
3120 var1
= p2
->type
->type_table
[cltype
] == idtype
;
3123 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 451);
3129 var_max_color
= var_min_color
;
3130 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Collection[MClass]>*/;
3132 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
3134 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
3136 var5
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
3137 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var5
) /* iterator on <var5:nullable Object(Set[PropertyLayoutElement])>*/;
3139 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
3141 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
3142 var_mproperty
= var8
;
3143 var_color
= var_min_color
;
3144 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3145 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_mproperty
) /* has_key on <var9:Map[PropertyLayoutElement, Int]>*/;
3147 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3148 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_mproperty
) /* [] on <var11:Map[PropertyLayoutElement, Int]>*/;
3149 var13
= ((struct instance_kernel__Int
*)var12
)->value
; /* autounbox from nullable Object to Int */;
3151 { /* Inline kernel#Int#>= (var_color,var_max_color) */
3152 /* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
3153 /* <var_max_color:Int> isa OTHER */
3154 var16
= 1; /* easy <var_max_color:Int> isa OTHER*/
3156 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
3159 var19
= var_color
>= var_max_color
;
3162 RET_LABEL15
:(void)0;
3166 { /* Inline kernel#Int#+ (var_color,var20) */
3167 var23
= var_color
+ var20
;
3170 RET_LABEL22
:(void)0;
3172 var_max_color
= var21
;
3177 CONTINUE_label
: (void)0;
3178 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
3180 BREAK_label
: (void)0;
3181 CONTINUE_label24
: (void)0;
3182 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
3184 BREAK_label24
: (void)0;
3185 var
= var_max_color
;
3190 /* method layout_builders#MPropertyColorer#max_color for (self: Object, Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
3191 long VIRTUAL_layout_builders__MPropertyColorer__max_color(val
* self
, long p0
, val
* p1
, val
* p2
) {
3192 long var
/* : Int */;
3193 long var1
/* : Int */;
3194 var1
= layout_builders__MPropertyColorer__max_color(self
, p0
, p1
, p2
);
3199 /* method layout_builders#ResolutionColorer#coloration_result for (self: ResolutionColorer): Map[MType, Int] */
3200 val
* layout_builders__ResolutionColorer__coloration_result(val
* self
) {
3201 val
* var
/* : Map[MType, Int] */;
3202 val
* var1
/* : Map[MType, Int] */;
3203 var1
= self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dcoloration_result
].val
; /* @coloration_result on <self:ResolutionColorer> */
3205 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 471);
3212 /* method layout_builders#ResolutionColorer#coloration_result for (self: Object): Map[MType, Int] */
3213 val
* VIRTUAL_layout_builders__ResolutionColorer__coloration_result(val
* self
) {
3214 val
* var
/* : Map[MType, Int] */;
3215 val
* var1
/* : Map[MType, Int] */;
3216 var1
= layout_builders__ResolutionColorer__coloration_result(self
);
3221 /* method layout_builders#ResolutionColorer#coloration_result= for (self: ResolutionColorer, Map[MType, Int]) */
3222 void layout_builders__ResolutionColorer__coloration_result_61d(val
* self
, val
* p0
) {
3223 self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:ResolutionColorer> */
3226 /* method layout_builders#ResolutionColorer#coloration_result= for (self: Object, Map[MType, Int]) */
3227 void VIRTUAL_layout_builders__ResolutionColorer__coloration_result_61d(val
* self
, val
* p0
) {
3228 layout_builders__ResolutionColorer__coloration_result_61d(self
, p0
);
3231 /* method layout_builders#ResolutionColorer#init for (self: ResolutionColorer) */
3232 void layout_builders__ResolutionColorer__init(val
* self
) {
3235 /* method layout_builders#ResolutionColorer#init for (self: Object) */
3236 void VIRTUAL_layout_builders__ResolutionColorer__init(val
* self
) {
3237 layout_builders__ResolutionColorer__init(self
);
3240 /* method layout_builders#ResolutionColorer#build_layout for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Layout[MType] */
3241 val
* layout_builders__ResolutionColorer__build_layout(val
* self
, val
* p0
) {
3242 val
* var
/* : Layout[MType] */;
3243 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3244 val
* var1
/* : Layout[MType] */;
3245 val
* var_result
/* var result: Layout[MType] */;
3246 val
* var2
/* : Map[MType, Int] */;
3247 val
* var3
/* : Map[MType, Int] */;
3249 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__build_conflicts_graph
]))(self
, var_elements
) /* build_conflicts_graph on <self:ResolutionColorer>*/;
3250 var1
= NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType
);
3251 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__Layout__init
]))(var1
) /* init on <var1:Layout[MType]>*/;
3252 CHECK_NEW_layout_builders__Layout(var1
);
3254 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__compute_ids
]))(self
, var_elements
) /* compute_ids on <self:ResolutionColorer>*/;
3255 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var2
) /* ids= on <var_result:Layout[MType]>*/;
3256 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__colorize_elements
]))(self
, var_elements
) /* colorize_elements on <self:ResolutionColorer>*/;
3257 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var3
) /* pos= on <var_result:Layout[MType]>*/;
3263 /* method layout_builders#ResolutionColorer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
3264 val
* VIRTUAL_layout_builders__ResolutionColorer__build_layout(val
* self
, val
* p0
) {
3265 val
* var
/* : Layout[MType] */;
3266 val
* var1
/* : Layout[MType] */;
3267 var1
= layout_builders__ResolutionColorer__build_layout(self
, p0
);
3272 /* method layout_builders#ResolutionColorer#compute_ids for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
3273 val
* layout_builders__ResolutionColorer__compute_ids(val
* self
, val
* p0
) {
3274 val
* var
/* : Map[MType, Int] */;
3275 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3276 val
* var1
/* : HashMap[MType, Int] */;
3277 val
* var_ids
/* var ids: HashMap[MType, Int] */;
3278 long var2
/* : Int */;
3279 long var_color
/* var color: Int */;
3280 val
* var3
/* : MapIterator[Object, nullable Object] */;
3281 short int var4
/* : Bool */;
3282 val
* var5
/* : Object */;
3283 val
* var_mclasstype
/* var mclasstype: MClassType */;
3284 val
* var6
/* : nullable Object */;
3285 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
3286 val
* var7
/* : Iterator[nullable Object] */;
3287 short int var8
/* : Bool */;
3288 val
* var9
/* : nullable Object */;
3289 val
* var_element
/* var element: MType */;
3290 short int var10
/* : Bool */;
3291 val
* var11
/* : nullable Object */;
3292 long var12
/* : Int */;
3293 long var13
/* : Int */;
3294 long var15
/* : Int */;
3296 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
3297 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[MType, Int]>*/;
3298 CHECK_NEW_hash_collection__HashMap(var1
);
3302 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3304 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var3
) /* is_ok on <var3:MapIterator[Object, nullable Object]>*/;
3306 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var3
) /* key on <var3:MapIterator[Object, nullable Object]>*/;
3307 var_mclasstype
= var5
;
3308 var6
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var3
) /* item on <var3:MapIterator[Object, nullable Object]>*/;
3309 var_mclasstypes
= var6
;
3310 var7
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
3312 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
3314 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
3316 var10
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
3318 goto CONTINUE_label
;
3321 var11
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
3322 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var11
) /* []= on <var_ids:HashMap[MType, Int]>*/;
3324 { /* Inline kernel#Int#+ (var_color,var12) */
3325 var15
= var_color
+ var12
;
3328 RET_LABEL14
:(void)0;
3331 CONTINUE_label
: (void)0;
3332 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
3334 BREAK_label
: (void)0;
3335 CONTINUE_label16
: (void)0;
3336 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var3
) /* next on <var3:MapIterator[Object, nullable Object]>*/;
3338 BREAK_label16
: (void)0;
3344 /* method layout_builders#ResolutionColorer#compute_ids for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
3345 val
* VIRTUAL_layout_builders__ResolutionColorer__compute_ids(val
* self
, val
* p0
) {
3346 val
* var
/* : Map[MType, Int] */;
3347 val
* var1
/* : Map[MType, Int] */;
3348 var1
= layout_builders__ResolutionColorer__compute_ids(self
, p0
);
3353 /* method layout_builders#ResolutionColorer#colorize_elements for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
3354 val
* layout_builders__ResolutionColorer__colorize_elements(val
* self
, val
* p0
) {
3355 val
* var
/* : Map[MType, Int] */;
3356 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3357 long var1
/* : Int */;
3358 long var_min_color
/* var min_color: Int */;
3359 val
* var2
/* : MapIterator[Object, nullable Object] */;
3360 short int var3
/* : Bool */;
3361 val
* var4
/* : Object */;
3362 val
* var_mclasstype
/* var mclasstype: MClassType */;
3363 val
* var5
/* : nullable Object */;
3364 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
3365 val
* var6
/* : Iterator[nullable Object] */;
3366 short int var7
/* : Bool */;
3367 val
* var8
/* : nullable Object */;
3368 val
* var_element
/* var element: MType */;
3369 val
* var9
/* : Map[MType, Int] */;
3370 short int var10
/* : Bool */;
3371 long var_color
/* var color: Int */;
3372 short int var11
/* : Bool */;
3373 short int var12
/* : Bool */;
3374 long var13
/* : Int */;
3375 long var14
/* : Int */;
3376 long var16
/* : Int */;
3377 val
* var18
/* : Map[MType, Int] */;
3378 val
* var19
/* : nullable Object */;
3379 val
* var21
/* : Map[MType, Int] */;
3382 var_min_color
= var1
;
3383 var2
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3385 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var2
) /* is_ok on <var2:MapIterator[Object, nullable Object]>*/;
3387 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var2
) /* key on <var2:MapIterator[Object, nullable Object]>*/;
3388 var_mclasstype
= var4
;
3389 var5
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var2
) /* item on <var2:MapIterator[Object, nullable Object]>*/;
3390 var_mclasstypes
= var5
;
3391 var6
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
3393 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
3395 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
3397 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3398 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_element
) /* has_key on <var9:Map[MType, Int]>*/;
3400 goto CONTINUE_label
;
3403 var_color
= var_min_color
;
3405 var11
= ((short int (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__is_color_free
]))(self
, var_element
, var_color
) /* is_color_free on <self:ResolutionColorer>*/;
3409 { /* Inline kernel#Int#+ (var_color,var13) */
3410 var16
= var_color
+ var13
;
3413 RET_LABEL15
:(void)0;
3416 CONTINUE_label17
: (void)0;
3418 BREAK_label17
: (void)0;
3419 var18
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3420 var19
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
3421 ((void (*)(val
*, val
*, val
*))(var18
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var18
, var_element
, var19
) /* []= on <var18:Map[MType, Int]>*/;
3422 var_color
= var_min_color
;
3423 CONTINUE_label
: (void)0;
3424 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
3426 BREAK_label
: (void)0;
3427 CONTINUE_label20
: (void)0;
3428 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var2
) /* next on <var2:MapIterator[Object, nullable Object]>*/;
3430 BREAK_label20
: (void)0;
3431 var21
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3437 /* method layout_builders#ResolutionColorer#colorize_elements for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
3438 val
* VIRTUAL_layout_builders__ResolutionColorer__colorize_elements(val
* self
, val
* p0
) {
3439 val
* var
/* : Map[MType, Int] */;
3440 val
* var1
/* : Map[MType, Int] */;
3441 var1
= layout_builders__ResolutionColorer__colorize_elements(self
, p0
);
3446 /* method layout_builders#ResolutionColorer#is_color_free for (self: ResolutionColorer, MType, Int): Bool */
3447 short int layout_builders__ResolutionColorer__is_color_free(val
* self
, val
* p0
, long p1
) {
3448 short int var
/* : Bool */;
3449 val
* var_element
/* var element: MType */;
3450 long var_color
/* var color: Int */;
3451 val
* var1
/* : Map[MType, Set[MType]] */;
3452 short int var2
/* : Bool */;
3453 val
* var3
/* : Map[MType, Set[MType]] */;
3454 val
* var4
/* : nullable Object */;
3455 val
* var5
/* : Iterator[nullable Object] */;
3456 short int var6
/* : Bool */;
3457 val
* var7
/* : nullable Object */;
3458 val
* var_st
/* var st: MType */;
3459 short int var8
/* : Bool */;
3460 val
* var9
/* : Map[MType, Int] */;
3461 short int var10
/* : Bool */;
3462 short int var_
/* var : Bool */;
3463 val
* var11
/* : Map[MType, Int] */;
3464 val
* var12
/* : nullable Object */;
3465 short int var13
/* : Bool */;
3466 short int var15
/* : Bool */;
3467 long var16
/* : Int */;
3468 short int var17
/* : Bool */;
3469 short int var18
/* : Bool */;
3472 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3473 var2
= ((short int (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var1
, var_element
) /* has_key on <var1:Map[MType, Set[MType]]>*/;
3475 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3476 var4
= ((val
* (*)(val
*, val
*))(var3
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var3
, var_element
) /* [] on <var3:Map[MType, Set[MType]]>*/;
3477 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var4
) /* iterator on <var4:nullable Object(Set[MType])>*/;
3479 var6
= ((short int (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var5
) /* is_ok on <var5:Iterator[nullable Object]>*/;
3481 var7
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var5
) /* item on <var5:Iterator[nullable Object]>*/;
3483 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3484 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_st
) /* has_key on <var9:Map[MType, Int]>*/;
3487 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3488 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_st
) /* [] on <var11:Map[MType, Int]>*/;
3489 { /* Inline kernel#Int#== (var12,var_color) */
3490 var15
= (var12
!= NULL
) && (var12
->class == &class_kernel__Int
);
3492 var16
= ((struct instance_kernel__Int
*)var12
)->value
; /* autounbox from nullable Object to Int */;
3493 var15
= (var16
== var_color
);
3497 RET_LABEL14
:(void)0;
3509 CONTINUE_label
: (void)0;
3510 ((void (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var5
) /* next on <var5:Iterator[nullable Object]>*/;
3512 BREAK_label
: (void)0;
3521 /* method layout_builders#ResolutionColorer#is_color_free for (self: Object, MType, Int): Bool */
3522 short int VIRTUAL_layout_builders__ResolutionColorer__is_color_free(val
* self
, val
* p0
, long p1
) {
3523 short int var
/* : Bool */;
3524 short int var1
/* : Bool */;
3525 var1
= layout_builders__ResolutionColorer__is_color_free(self
, p0
, p1
);
3530 /* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: ResolutionColorer, Map[MClassType, Set[MType]]) */
3531 void layout_builders__ResolutionColorer__build_conflicts_graph(val
* self
, val
* p0
) {
3532 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3533 val
* var
/* : MapIterator[Object, nullable Object] */;
3534 short int var1
/* : Bool */;
3535 val
* var2
/* : Object */;
3536 val
* var_mclasstype
/* var mclasstype: MClassType */;
3537 val
* var3
/* : nullable Object */;
3538 val
* var_mtypes
/* var mtypes: Set[MType] */;
3539 val
* var4
/* : Iterator[nullable Object] */;
3540 short int var5
/* : Bool */;
3541 val
* var6
/* : nullable Object */;
3542 val
* var_mtype
/* var mtype: MType */;
3543 val
* var7
/* : Iterator[nullable Object] */;
3544 short int var8
/* : Bool */;
3545 val
* var9
/* : nullable Object */;
3546 val
* var_otype
/* var otype: MType */;
3547 short int var10
/* : Bool */;
3549 var
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3551 var1
= ((short int (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var
) /* is_ok on <var:MapIterator[Object, nullable Object]>*/;
3553 var2
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var
) /* key on <var:MapIterator[Object, nullable Object]>*/;
3554 var_mclasstype
= var2
;
3555 var3
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var
) /* item on <var:MapIterator[Object, nullable Object]>*/;
3557 var4
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[MType]>*/;
3559 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
3561 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
3563 var7
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[MType]>*/;
3565 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
3567 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
3569 var10
= ((short int (*)(val
*, val
*))(var_otype
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_otype
, var_mtype
) /* == on <var_otype:MType>*/;
3571 goto CONTINUE_label
;
3574 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__add_conflict
]))(self
, var_mtype
, var_otype
) /* add_conflict on <self:ResolutionColorer>*/;
3575 CONTINUE_label
: (void)0;
3576 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
3578 BREAK_label
: (void)0;
3579 CONTINUE_label11
: (void)0;
3580 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
3582 BREAK_label11
: (void)0;
3583 CONTINUE_label12
: (void)0;
3584 ((void (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var
) /* next on <var:MapIterator[Object, nullable Object]>*/;
3586 BREAK_label12
: (void)0;
3589 /* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: Object, Map[MClassType, Set[MType]]) */
3590 void VIRTUAL_layout_builders__ResolutionColorer__build_conflicts_graph(val
* self
, val
* p0
) {
3591 layout_builders__ResolutionColorer__build_conflicts_graph(self
, p0
);
3594 /* method layout_builders#ResolutionColorer#conflicts_graph for (self: ResolutionColorer): Map[MType, Set[MType]] */
3595 val
* layout_builders__ResolutionColorer__conflicts_graph(val
* self
) {
3596 val
* var
/* : Map[MType, Set[MType]] */;
3597 val
* var1
/* : Map[MType, Set[MType]] */;
3598 var1
= self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph
].val
; /* @conflicts_graph on <self:ResolutionColorer> */
3600 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @conflicts_graph", "src/layout_builders.nit", 536);
3607 /* method layout_builders#ResolutionColorer#conflicts_graph for (self: Object): Map[MType, Set[MType]] */
3608 val
* VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph(val
* self
) {
3609 val
* var
/* : Map[MType, Set[MType]] */;
3610 val
* var1
/* : Map[MType, Set[MType]] */;
3611 var1
= layout_builders__ResolutionColorer__conflicts_graph(self
);
3616 /* method layout_builders#ResolutionColorer#conflicts_graph= for (self: ResolutionColorer, Map[MType, Set[MType]]) */
3617 void layout_builders__ResolutionColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
3618 self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph
].val
= p0
; /* @conflicts_graph on <self:ResolutionColorer> */
3621 /* method layout_builders#ResolutionColorer#conflicts_graph= for (self: Object, Map[MType, Set[MType]]) */
3622 void VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
3623 layout_builders__ResolutionColorer__conflicts_graph_61d(self
, p0
);
3626 /* method layout_builders#ResolutionColorer#add_conflict for (self: ResolutionColorer, MType, MType) */
3627 void layout_builders__ResolutionColorer__add_conflict(val
* self
, val
* p0
, val
* p1
) {
3628 val
* var_mtype
/* var mtype: MType */;
3629 val
* var_otype
/* var otype: MType */;
3630 short int var
/* : Bool */;
3631 val
* var1
/* : Map[MType, Set[MType]] */;
3632 short int var2
/* : Bool */;
3633 short int var3
/* : Bool */;
3634 val
* var4
/* : Map[MType, Set[MType]] */;
3635 val
* var5
/* : HashSet[MType] */;
3636 val
* var6
/* : Map[MType, Set[MType]] */;
3637 val
* var7
/* : nullable Object */;
3638 val
* var8
/* : Map[MType, Set[MType]] */;
3639 short int var9
/* : Bool */;
3640 short int var10
/* : Bool */;
3641 val
* var11
/* : Map[MType, Set[MType]] */;
3642 val
* var12
/* : HashSet[MType] */;
3643 val
* var13
/* : Map[MType, Set[MType]] */;
3644 val
* var14
/* : nullable Object */;
3647 var
= ((short int (*)(val
*, val
*))(var_mtype
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_mtype
, var_otype
) /* == on <var_mtype:MType>*/;
3652 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3653 var2
= ((short int (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var1
, var_mtype
) /* has_key on <var1:Map[MType, Set[MType]]>*/;
3656 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3657 var5
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType
);
3658 ((void (*)(val
*))(var5
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var5
) /* init on <var5:HashSet[MType]>*/;
3659 CHECK_NEW_hash_collection__HashSet(var5
);
3660 ((void (*)(val
*, val
*, val
*))(var4
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var4
, var_mtype
, var5
) /* []= on <var4:Map[MType, Set[MType]]>*/;
3663 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3664 var7
= ((val
* (*)(val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var6
, var_mtype
) /* [] on <var6:Map[MType, Set[MType]]>*/;
3665 ((void (*)(val
*, val
*))(var7
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var7
, var_otype
) /* add on <var7:nullable Object(Set[MType])>*/;
3666 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3667 var9
= ((short int (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var8
, var_otype
) /* has_key on <var8:Map[MType, Set[MType]]>*/;
3670 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3671 var12
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType
);
3672 ((void (*)(val
*))(var12
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var12
) /* init on <var12:HashSet[MType]>*/;
3673 CHECK_NEW_hash_collection__HashSet(var12
);
3674 ((void (*)(val
*, val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var11
, var_otype
, var12
) /* []= on <var11:Map[MType, Set[MType]]>*/;
3677 var13
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3678 var14
= ((val
* (*)(val
*, val
*))(var13
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var13
, var_otype
) /* [] on <var13:Map[MType, Set[MType]]>*/;
3679 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var14
, var_mtype
) /* add on <var14:nullable Object(Set[MType])>*/;
3682 /* method layout_builders#ResolutionColorer#add_conflict for (self: Object, MType, MType) */
3683 void VIRTUAL_layout_builders__ResolutionColorer__add_conflict(val
* self
, val
* p0
, val
* p1
) {
3684 layout_builders__ResolutionColorer__add_conflict(self
, p0
, p1
);
3687 /* method layout_builders#PerfectHasher#operator for (self: PerfectHasher[Object, Object]): PHOperator */
3688 val
* layout_builders__PerfectHasher__operator(val
* self
) {
3689 val
* var
/* : PHOperator */;
3690 val
* var1
/* : PHOperator */;
3691 var1
= self
->attrs
[COLOR_layout_builders__PerfectHasher___64doperator
].val
; /* @operator on <self:PerfectHasher[Object, Object]> */
3693 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @operator", "src/layout_builders.nit", 552);
3700 /* method layout_builders#PerfectHasher#operator for (self: Object): PHOperator */
3701 val
* VIRTUAL_layout_builders__PerfectHasher__operator(val
* self
) {
3702 val
* var
/* : PHOperator */;
3703 val
* var1
/* : PHOperator */;
3704 var1
= layout_builders__PerfectHasher__operator(self
);
3709 /* method layout_builders#PerfectHasher#operator= for (self: PerfectHasher[Object, Object], PHOperator) */
3710 void layout_builders__PerfectHasher__operator_61d(val
* self
, val
* p0
) {
3711 self
->attrs
[COLOR_layout_builders__PerfectHasher___64doperator
].val
= p0
; /* @operator on <self:PerfectHasher[Object, Object]> */
3714 /* method layout_builders#PerfectHasher#operator= for (self: Object, PHOperator) */
3715 void VIRTUAL_layout_builders__PerfectHasher__operator_61d(val
* self
, val
* p0
) {
3716 layout_builders__PerfectHasher__operator_61d(self
, p0
);
3719 /* method layout_builders#PerfectHasher#init for (self: PerfectHasher[Object, Object]) */
3720 void layout_builders__PerfectHasher__init(val
* self
) {
3723 /* method layout_builders#PerfectHasher#init for (self: Object) */
3724 void VIRTUAL_layout_builders__PerfectHasher__init(val
* self
) {
3725 layout_builders__PerfectHasher__init(self
);
3728 /* method layout_builders#PerfectHasher#compute_masks for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
3729 val
* layout_builders__PerfectHasher__compute_masks(val
* self
, val
* p0
, val
* p1
) {
3730 val
* var
/* : Map[Object, Int] */;
3731 short int var1
/* : Bool */;
3734 const struct type
* type_struct
;
3735 short int var2
/* : Bool */;
3738 const struct type
* type_struct5
;
3739 val
* var_conflicts
/* var conflicts: Map[Object, Set[Object]] */;
3740 val
* var_ids
/* var ids: Map[Object, Int] */;
3741 val
* var6
/* : HashMap[Object, Int] */;
3742 val
* var_masks
/* var masks: HashMap[Object, Int] */;
3743 val
* var7
/* : MapIterator[Object, nullable Object] */;
3744 short int var8
/* : Bool */;
3745 val
* var9
/* : Object */;
3746 val
* var_mclasstype
/* var mclasstype: Object */;
3747 val
* var10
/* : nullable Object */;
3748 val
* var_mtypes
/* var mtypes: Set[Object] */;
3749 long var11
/* : Int */;
3750 val
* var12
/* : nullable Object */;
3751 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3752 /* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3753 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
3754 cltype
= type_struct
->color
;
3755 idtype
= type_struct
->id
;
3756 if(cltype
>= p0
->type
->table_size
) {
3759 var1
= p0
->type
->type_table
[cltype
] == idtype
;
3762 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 556);
3765 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3766 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3767 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
3768 cltype3
= type_struct5
->color
;
3769 idtype4
= type_struct5
->id
;
3770 if(cltype3
>= p1
->type
->table_size
) {
3773 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
3776 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 556);
3781 var6
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0kernel__Int
]);
3782 ((void (*)(val
*))(var6
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var6
) /* init on <var6:HashMap[Object, Int]>*/;
3783 CHECK_NEW_hash_collection__HashMap(var6
);
3785 var7
= ((val
* (*)(val
*))(var_conflicts
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_conflicts
) /* iterator on <var_conflicts:Map[Object, Set[Object]]>*/;
3787 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var7
) /* is_ok on <var7:MapIterator[Object, nullable Object]>*/;
3789 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var7
) /* key on <var7:MapIterator[Object, nullable Object]>*/;
3790 var_mclasstype
= var9
;
3791 var10
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var7
) /* item on <var7:MapIterator[Object, nullable Object]>*/;
3793 var11
= ((long (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_mask
]))(self
, var_mtypes
, var_ids
) /* compute_mask on <self:PerfectHasher[Object, Object]>*/;
3794 var12
= BOX_kernel__Int(var11
); /* autobox from Int to nullable Object */
3795 ((void (*)(val
*, val
*, val
*))(var_masks
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_masks
, var_mclasstype
, var12
) /* []= on <var_masks:HashMap[Object, Int]>*/;
3796 CONTINUE_label
: (void)0;
3797 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var7
) /* next on <var7:MapIterator[Object, nullable Object]>*/;
3799 BREAK_label
: (void)0;
3805 /* method layout_builders#PerfectHasher#compute_masks for (self: Object, Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
3806 val
* VIRTUAL_layout_builders__PerfectHasher__compute_masks(val
* self
, val
* p0
, val
* p1
) {
3807 val
* var
/* : Map[Object, Int] */;
3808 val
* var1
/* : Map[Object, Int] */;
3809 var1
= layout_builders__PerfectHasher__compute_masks(self
, p0
, p1
);
3814 /* method layout_builders#PerfectHasher#compute_mask for (self: PerfectHasher[Object, Object], Set[Object], Map[Object, Int]): Int */
3815 long layout_builders__PerfectHasher__compute_mask(val
* self
, val
* p0
, val
* p1
) {
3816 long var
/* : Int */;
3817 short int var1
/* : Bool */;
3820 const struct type
* type_struct
;
3821 short int var2
/* : Bool */;
3824 const struct type
* type_struct5
;
3825 val
* var_mtypes
/* var mtypes: Set[Object] */;
3826 val
* var_ids
/* var ids: Map[Object, Int] */;
3827 long var6
/* : Int */;
3828 long var_mask
/* var mask: Int */;
3829 val
* var7
/* : List[Int] */;
3830 val
* var_used
/* var used: List[Int] */;
3831 val
* var8
/* : Iterator[nullable Object] */;
3832 short int var9
/* : Bool */;
3833 val
* var10
/* : nullable Object */;
3834 val
* var_mtype
/* var mtype: Object */;
3835 val
* var11
/* : PHOperator */;
3836 val
* var12
/* : nullable Object */;
3837 long var13
/* : Int */;
3838 long var14
/* : Int */;
3839 long var_res
/* var res: Int */;
3840 short int var15
/* : Bool */;
3841 val
* var16
/* : nullable Object */;
3842 val
* var17
/* : nullable Object */;
3843 long var18
/* : Int */;
3844 long var19
/* : Int */;
3845 short int var20
/* : Bool */;
3846 short int var22
/* : Bool */;
3847 long var24
/* : Int */;
3848 long var25
/* : Int */;
3849 long var27
/* : Int */;
3850 /* Covariant cast for argument 0 (mtypes) <p0:Set[Object]> isa Set[PerfectHasher#1] */
3851 /* <p0:Set[Object]> isa Set[PerfectHasher#1] */
3852 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
3853 cltype
= type_struct
->color
;
3854 idtype
= type_struct
->id
;
3855 if(cltype
>= p0
->type
->table_size
) {
3858 var1
= p0
->type
->type_table
[cltype
] == idtype
;
3861 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 565);
3864 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3865 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3866 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
3867 cltype3
= type_struct5
->color
;
3868 idtype4
= type_struct5
->id
;
3869 if(cltype3
>= p1
->type
->table_size
) {
3872 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
3875 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 565);
3883 var7
= NEW_list__List(&type_list__Listkernel__Int
);
3884 ((void (*)(val
*))(var7
->class->vft
[COLOR_list__List__init
]))(var7
) /* init on <var7:List[Int]>*/;
3885 CHECK_NEW_list__List(var7
);
3887 var8
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[Object]>*/;
3889 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
3891 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
3893 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator
]))(self
) /* operator on <self:PerfectHasher[Object, Object]>*/;
3894 var12
= ((val
* (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_ids
, var_mtype
) /* [] on <var_ids:Map[Object, Int]>*/;
3895 var14
= ((struct instance_kernel__Int
*)var12
)->value
; /* autounbox from nullable Object to Int */;
3896 var13
= ((long (*)(val
*, long, long))(var11
->class->vft
[COLOR_layout_builders__PHOperator__op
]))(var11
, var_mask
, var14
) /* op on <var11:PHOperator>*/;
3898 var16
= BOX_kernel__Int(var_res
); /* autobox from Int to nullable Object */
3899 var15
= ((short int (*)(val
*, val
*))(var_used
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var_used
, var16
) /* has on <var_used:List[Int]>*/;
3903 var17
= BOX_kernel__Int(var_res
); /* autobox from Int to nullable Object */
3904 ((void (*)(val
*, val
*))(var_used
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_used
, var17
) /* add on <var_used:List[Int]>*/;
3906 CONTINUE_label
: (void)0;
3907 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
3909 BREAK_label
: (void)0;
3910 var18
= ((long (*)(val
*))(var_used
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_used
) /* length on <var_used:List[Int]>*/;
3911 var19
= ((long (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_mtypes
) /* length on <var_mtypes:Set[Object]>*/;
3912 { /* Inline kernel#Int#== (var18,var19) */
3913 var22
= var18
== var19
;
3916 RET_LABEL21
:(void)0;
3923 { /* Inline kernel#Int#+ (var_mask,var24) */
3924 var27
= var_mask
+ var24
;
3927 RET_LABEL26
:(void)0;
3930 CONTINUE_label23
: (void)0;
3932 BREAK_label23
: (void)0;
3938 /* method layout_builders#PerfectHasher#compute_mask for (self: Object, Set[Object], Map[Object, Int]): Int */
3939 long VIRTUAL_layout_builders__PerfectHasher__compute_mask(val
* self
, val
* p0
, val
* p1
) {
3940 long var
/* : Int */;
3941 long var1
/* : Int */;
3942 var1
= layout_builders__PerfectHasher__compute_mask(self
, p0
, p1
);
3947 /* method layout_builders#PerfectHasher#compute_hashes for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
3948 val
* layout_builders__PerfectHasher__compute_hashes(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
3949 val
* var
/* : Map[Object, Map[Object, Int]] */;
3950 short int var1
/* : Bool */;
3953 const struct type
* type_struct
;
3954 short int var2
/* : Bool */;
3957 const struct type
* type_struct5
;
3958 short int var6
/* : Bool */;
3961 const struct type
* type_struct9
;
3962 val
* var_elements
/* var elements: Map[Object, Set[Object]] */;
3963 val
* var_ids
/* var ids: Map[Object, Int] */;
3964 val
* var_masks
/* var masks: Map[Object, Int] */;
3965 val
* var10
/* : HashMap[Object, Map[Object, Int]] */;
3966 val
* var_hashes
/* var hashes: HashMap[Object, Map[Object, Int]] */;
3967 val
* var11
/* : MapIterator[Object, nullable Object] */;
3968 short int var12
/* : Bool */;
3969 val
* var13
/* : Object */;
3970 val
* var_mclasstype
/* var mclasstype: Object */;
3971 val
* var14
/* : nullable Object */;
3972 val
* var_mtypes
/* var mtypes: Set[Object] */;
3973 val
* var15
/* : nullable Object */;
3974 long var16
/* : Int */;
3975 long var_mask
/* var mask: Int */;
3976 val
* var17
/* : HashMap[Object, Int] */;
3977 val
* var_inhashes
/* var inhashes: HashMap[Object, Int] */;
3978 val
* var18
/* : Iterator[nullable Object] */;
3979 short int var19
/* : Bool */;
3980 val
* var20
/* : nullable Object */;
3981 val
* var_mtype
/* var mtype: Object */;
3982 val
* var21
/* : PHOperator */;
3983 val
* var22
/* : nullable Object */;
3984 long var23
/* : Int */;
3985 long var24
/* : Int */;
3986 val
* var25
/* : nullable Object */;
3987 /* Covariant cast for argument 0 (elements) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3988 /* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3989 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
3990 cltype
= type_struct
->color
;
3991 idtype
= type_struct
->id
;
3992 if(cltype
>= p0
->type
->table_size
) {
3995 var1
= p0
->type
->type_table
[cltype
] == idtype
;
3998 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
4001 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4002 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4003 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
4004 cltype3
= type_struct5
->color
;
4005 idtype4
= type_struct5
->id
;
4006 if(cltype3
>= p1
->type
->table_size
) {
4009 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
4012 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
4015 /* Covariant cast for argument 2 (masks) <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
4016 /* <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
4017 type_struct9
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0kernel__Int
];
4018 cltype7
= type_struct9
->color
;
4019 idtype8
= type_struct9
->id
;
4020 if(cltype7
>= p2
->type
->table_size
) {
4023 var6
= p2
->type
->type_table
[cltype7
] == idtype8
;
4026 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
4032 var10
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
]);
4033 ((void (*)(val
*))(var10
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var10
) /* init on <var10:HashMap[Object, Map[Object, Int]]>*/;
4034 CHECK_NEW_hash_collection__HashMap(var10
);
4036 var11
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[Object, Set[Object]]>*/;
4038 var12
= ((short int (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var11
) /* is_ok on <var11:MapIterator[Object, nullable Object]>*/;
4040 var13
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var11
) /* key on <var11:MapIterator[Object, nullable Object]>*/;
4041 var_mclasstype
= var13
;
4042 var14
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var11
) /* item on <var11:MapIterator[Object, nullable Object]>*/;
4044 var15
= ((val
* (*)(val
*, val
*))(var_masks
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_masks
, var_mclasstype
) /* [] on <var_masks:Map[Object, Int]>*/;
4045 var16
= ((struct instance_kernel__Int
*)var15
)->value
; /* autounbox from nullable Object to Int */;
4047 var17
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT1kernel__Int
]);
4048 ((void (*)(val
*))(var17
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var17
) /* init on <var17:HashMap[Object, Int]>*/;
4049 CHECK_NEW_hash_collection__HashMap(var17
);
4050 var_inhashes
= var17
;
4051 var18
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[Object]>*/;
4053 var19
= ((short int (*)(val
*))(var18
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var18
) /* is_ok on <var18:Iterator[nullable Object]>*/;
4055 var20
= ((val
* (*)(val
*))(var18
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var18
) /* item on <var18:Iterator[nullable Object]>*/;
4057 var21
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator
]))(self
) /* operator on <self:PerfectHasher[Object, Object]>*/;
4058 var22
= ((val
* (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_ids
, var_mtype
) /* [] on <var_ids:Map[Object, Int]>*/;
4059 var24
= ((struct instance_kernel__Int
*)var22
)->value
; /* autounbox from nullable Object to Int */;
4060 var23
= ((long (*)(val
*, long, long))(var21
->class->vft
[COLOR_layout_builders__PHOperator__op
]))(var21
, var_mask
, var24
) /* op on <var21:PHOperator>*/;
4061 var25
= BOX_kernel__Int(var23
); /* autobox from Int to nullable Object */
4062 ((void (*)(val
*, val
*, val
*))(var_inhashes
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_inhashes
, var_mtype
, var25
) /* []= on <var_inhashes:HashMap[Object, Int]>*/;
4063 CONTINUE_label
: (void)0;
4064 ((void (*)(val
*))(var18
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var18
) /* next on <var18:Iterator[nullable Object]>*/;
4066 BREAK_label
: (void)0;
4067 ((void (*)(val
*, val
*, val
*))(var_hashes
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_hashes
, var_mclasstype
, var_inhashes
) /* []= on <var_hashes:HashMap[Object, Map[Object, Int]]>*/;
4068 CONTINUE_label26
: (void)0;
4069 ((void (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var11
) /* next on <var11:MapIterator[Object, nullable Object]>*/;
4071 BREAK_label26
: (void)0;
4077 /* method layout_builders#PerfectHasher#compute_hashes for (self: Object, Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
4078 val
* VIRTUAL_layout_builders__PerfectHasher__compute_hashes(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4079 val
* var
/* : Map[Object, Map[Object, Int]] */;
4080 val
* var1
/* : Map[Object, Map[Object, Int]] */;
4081 var1
= layout_builders__PerfectHasher__compute_hashes(self
, p0
, p1
, p2
);
4086 /* method layout_builders#PHOperator#op for (self: PHOperator, Int, Int): Int */
4087 long layout_builders__PHOperator__op(val
* self
, long p0
, long p1
) {
4088 long var
/* : Int */;
4089 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 600);
4094 /* method layout_builders#PHOperator#op for (self: Object, Int, Int): Int */
4095 long VIRTUAL_layout_builders__PHOperator__op(val
* self
, long p0
, long p1
) {
4096 long var
/* : Int */;
4097 long var1
/* : Int */;
4098 var1
= layout_builders__PHOperator__op(self
, p0
, p1
);
4103 /* method layout_builders#PHOperator#init for (self: PHOperator) */
4104 void layout_builders__PHOperator__init(val
* self
) {
4107 /* method layout_builders#PHOperator#init for (self: Object) */
4108 void VIRTUAL_layout_builders__PHOperator__init(val
* self
) {
4109 layout_builders__PHOperator__init(self
);
4112 /* method layout_builders#PHModOperator#init for (self: PHModOperator) */
4113 void layout_builders__PHModOperator__init(val
* self
) {
4114 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PHOperator__init
]))(self
) /* init on <self:PHModOperator>*/;
4117 /* method layout_builders#PHModOperator#init for (self: Object) */
4118 void VIRTUAL_layout_builders__PHModOperator__init(val
* self
) {
4119 layout_builders__PHModOperator__init(self
);
4122 /* method layout_builders#PHModOperator#op for (self: PHModOperator, Int, Int): Int */
4123 long layout_builders__PHModOperator__op(val
* self
, long p0
, long p1
) {
4124 long var
/* : Int */;
4125 long var_mask
/* var mask: Int */;
4126 long var_id
/* var id: Int */;
4127 long var1
/* : Int */;
4128 long var3
/* : Int */;
4131 { /* Inline kernel#Int#% (var_mask,var_id) */
4132 var3
= var_mask
% var_id
;
4142 /* method layout_builders#PHModOperator#op for (self: Object, Int, Int): Int */
4143 long VIRTUAL_layout_builders__PHModOperator__op(val
* self
, long p0
, long p1
) {
4144 long var
/* : Int */;
4145 long var1
/* : Int */;
4146 var1
= layout_builders__PHModOperator__op(self
, p0
, p1
);
4151 /* method layout_builders#PHAndOperator#init for (self: PHAndOperator) */
4152 void layout_builders__PHAndOperator__init(val
* self
) {
4153 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PHOperator__init
]))(self
) /* init on <self:PHAndOperator>*/;
4156 /* method layout_builders#PHAndOperator#init for (self: Object) */
4157 void VIRTUAL_layout_builders__PHAndOperator__init(val
* self
) {
4158 layout_builders__PHAndOperator__init(self
);
4161 /* method layout_builders#PHAndOperator#op for (self: PHAndOperator, Int, Int): Int */
4162 long layout_builders__PHAndOperator__op(val
* self
, long p0
, long p1
) {
4163 long var
/* : Int */;
4164 long var_mask
/* var mask: Int */;
4165 long var_id
/* var id: Int */;
4166 long var1
/* : Int */;
4169 var1
= math__Int__bin_and(var_mask
, var_id
);
4175 /* method layout_builders#PHAndOperator#op for (self: Object, Int, Int): Int */
4176 long VIRTUAL_layout_builders__PHAndOperator__op(val
* self
, long p0
, long p1
) {
4177 long var
/* : Int */;
4178 long var1
/* : Int */;
4179 var1
= layout_builders__PHAndOperator__op(self
, p0
, p1
);
4184 /* method layout_builders#TypingHasher#mmodule for (self: TypingHasher[Object]): MModule */
4185 val
* layout_builders__TypingHasher__mmodule(val
* self
) {
4186 val
* var
/* : MModule */;
4187 val
* var1
/* : MModule */;
4188 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dmmodule
].val
; /* @mmodule on <self:TypingHasher[Object]> */
4190 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 625);
4197 /* method layout_builders#TypingHasher#mmodule for (self: Object): MModule */
4198 val
* VIRTUAL_layout_builders__TypingHasher__mmodule(val
* self
) {
4199 val
* var
/* : MModule */;
4200 val
* var1
/* : MModule */;
4201 var1
= layout_builders__TypingHasher__mmodule(self
);
4206 /* method layout_builders#TypingHasher#mmodule= for (self: TypingHasher[Object], MModule) */
4207 void layout_builders__TypingHasher__mmodule_61d(val
* self
, val
* p0
) {
4208 self
->attrs
[COLOR_layout_builders__TypingHasher___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingHasher[Object]> */
4211 /* method layout_builders#TypingHasher#mmodule= for (self: Object, MModule) */
4212 void VIRTUAL_layout_builders__TypingHasher__mmodule_61d(val
* self
, val
* p0
) {
4213 layout_builders__TypingHasher__mmodule_61d(self
, p0
);
4216 /* method layout_builders#TypingHasher#poset_builder for (self: TypingHasher[Object]): POSetBuilder[Object] */
4217 val
* layout_builders__TypingHasher__poset_builder(val
* self
) {
4218 val
* var
/* : POSetBuilder[Object] */;
4219 val
* var1
/* : POSetBuilder[Object] */;
4220 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_builder
].val
; /* @poset_builder on <self:TypingHasher[Object]> */
4222 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 626);
4229 /* method layout_builders#TypingHasher#poset_builder for (self: Object): POSetBuilder[Object] */
4230 val
* VIRTUAL_layout_builders__TypingHasher__poset_builder(val
* self
) {
4231 val
* var
/* : POSetBuilder[Object] */;
4232 val
* var1
/* : POSetBuilder[Object] */;
4233 var1
= layout_builders__TypingHasher__poset_builder(self
);
4238 /* method layout_builders#TypingHasher#poset_builder= for (self: TypingHasher[Object], POSetBuilder[Object]) */
4239 void layout_builders__TypingHasher__poset_builder_61d(val
* self
, val
* p0
) {
4240 short int var
/* : Bool */;
4243 const struct type
* type_struct
;
4244 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4245 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4246 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0
];
4247 cltype
= type_struct
->color
;
4248 idtype
= type_struct
->id
;
4249 if(cltype
>= p0
->type
->table_size
) {
4252 var
= p0
->type
->type_table
[cltype
] == idtype
;
4255 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 626);
4258 self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingHasher[Object]> */
4261 /* method layout_builders#TypingHasher#poset_builder= for (self: Object, POSetBuilder[Object]) */
4262 void VIRTUAL_layout_builders__TypingHasher__poset_builder_61d(val
* self
, val
* p0
) {
4263 layout_builders__TypingHasher__poset_builder_61d(self
, p0
);
4266 /* method layout_builders#TypingHasher#poset_cache for (self: TypingHasher[Object]): nullable POSet[Object] */
4267 val
* layout_builders__TypingHasher__poset_cache(val
* self
) {
4268 val
* var
/* : nullable POSet[Object] */;
4269 val
* var1
/* : nullable POSet[Object] */;
4270 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_cache
].val
; /* @poset_cache on <self:TypingHasher[Object]> */
4275 /* method layout_builders#TypingHasher#poset_cache for (self: Object): nullable POSet[Object] */
4276 val
* VIRTUAL_layout_builders__TypingHasher__poset_cache(val
* self
) {
4277 val
* var
/* : nullable POSet[Object] */;
4278 val
* var1
/* : nullable POSet[Object] */;
4279 var1
= layout_builders__TypingHasher__poset_cache(self
);
4284 /* method layout_builders#TypingHasher#poset_cache= for (self: TypingHasher[Object], nullable POSet[Object]) */
4285 void layout_builders__TypingHasher__poset_cache_61d(val
* self
, val
* p0
) {
4286 short int var
/* : Bool */;
4289 const struct type
* type_struct
;
4290 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
4291 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
4292 type_struct
= self
->type
->resolution_table
->types
[COLOR_poset__POSetlayout_builders__TypingHasher_FT0
];
4293 cltype
= type_struct
->color
;
4294 idtype
= type_struct
->id
;
4298 if(cltype
>= p0
->type
->table_size
) {
4301 var
= p0
->type
->type_table
[cltype
] == idtype
;
4305 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 627);
4308 self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingHasher[Object]> */
4311 /* method layout_builders#TypingHasher#poset_cache= for (self: Object, nullable POSet[Object]) */
4312 void VIRTUAL_layout_builders__TypingHasher__poset_cache_61d(val
* self
, val
* p0
) {
4313 layout_builders__TypingHasher__poset_cache_61d(self
, p0
);
4316 /* method layout_builders#TypingHasher#init for (self: TypingHasher[Object], MModule, POSetBuilder[Object], PHOperator) */
4317 void layout_builders__TypingHasher__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4318 short int var
/* : Bool */;
4321 const struct type
* type_struct
;
4322 val
* var_mmodule
/* var mmodule: MModule */;
4323 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
4324 val
* var_operator
/* var operator: PHOperator */;
4325 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4326 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4327 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0
];
4328 cltype
= type_struct
->color
;
4329 idtype
= type_struct
->id
;
4330 if(cltype
>= p1
->type
->table_size
) {
4333 var
= p1
->type
->type_table
[cltype
] == idtype
;
4336 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 629);
4340 var_poset_builder
= p1
;
4342 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:TypingHasher[Object]>*/;
4343 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:TypingHasher[Object]>*/;
4344 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingHasher[Object]>*/;
4345 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingHasher[Object]>*/;
4348 /* method layout_builders#TypingHasher#init for (self: Object, MModule, POSetBuilder[Object], PHOperator) */
4349 void VIRTUAL_layout_builders__TypingHasher__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4350 layout_builders__TypingHasher__init(self
, p0
, p1
, p2
);
4353 /* method layout_builders#TypingHasher#build_layout for (self: TypingHasher[Object], Set[Object]): PHLayout[Object, Object] */
4354 val
* layout_builders__TypingHasher__build_layout(val
* self
, val
* p0
) {
4355 val
* var
/* : PHLayout[Object, Object] */;
4356 short int var1
/* : Bool */;
4359 const struct type
* type_struct
;
4360 val
* var_elements
/* var elements: Set[Object] */;
4361 val
* var2
/* : POSetBuilder[Object] */;
4362 val
* var3
/* : POSet[Object] */;
4363 val
* var4
/* : PHLayout[Object, Object] */;
4364 val
* var_result
/* var result: PHLayout[Object, Object] */;
4365 val
* var5
/* : Map[Object, Set[Object]] */;
4366 val
* var_conflicts
/* var conflicts: Map[Object, Set[Object]] */;
4367 val
* var6
/* : Map[Object, Int] */;
4368 val
* var7
/* : Map[Object, Int] */;
4369 val
* var8
/* : Map[Object, Int] */;
4370 val
* var9
/* : Map[Object, Int] */;
4371 val
* var10
/* : Map[Object, Int] */;
4372 val
* var11
/* : Map[Object, Map[Object, Int]] */;
4373 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
4374 /* <p0:Set[Object]> isa Set[TypingHasher#0] */
4375 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0
];
4376 cltype
= type_struct
->color
;
4377 idtype
= type_struct
->id
;
4378 if(cltype
>= p0
->type
->table_size
) {
4381 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4384 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 635);
4388 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_builder
]))(self
) /* poset_builder on <self:TypingHasher[Object]>*/;
4389 var3
= ((val
* (*)(val
*, val
*))(var2
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var2
, var_elements
) /* build_poset on <var2:POSetBuilder[Object]>*/;
4390 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_cache_61d
]))(self
, var3
) /* poset_cache= on <self:TypingHasher[Object]>*/;
4391 var4
= NEW_layout_builders__PHLayout(self
->type
->resolution_table
->types
[COLOR_layout_builders__PHLayoutlayout_builders__TypingHasher_FT0layout_builders__TypingHasher_FT0
]);
4392 ((void (*)(val
*))(var4
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var4
) /* init on <var4:PHLayout[Object, Object]>*/;
4393 CHECK_NEW_layout_builders__PHLayout(var4
);
4395 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__build_conflicts
]))(self
, var_elements
) /* build_conflicts on <self:TypingHasher[Object]>*/;
4396 var_conflicts
= var5
;
4397 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__compute_ids
]))(self
) /* compute_ids on <self:TypingHasher[Object]>*/;
4398 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var6
) /* ids= on <var_result:PHLayout[Object, Object]>*/;
4399 var7
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var_result
) /* ids on <var_result:PHLayout[Object, Object]>*/;
4400 var8
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_conflicts
, var7
) /* compute_masks on <self:TypingHasher[Object]>*/;
4401 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var8
) /* masks= on <var_result:PHLayout[Object, Object]>*/;
4402 var9
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var_result
) /* ids on <var_result:PHLayout[Object, Object]>*/;
4403 var10
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[Object, Object]>*/;
4404 var11
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_conflicts
, var9
, var10
) /* compute_hashes on <self:TypingHasher[Object]>*/;
4405 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var11
) /* hashes= on <var_result:PHLayout[Object, Object]>*/;
4411 /* method layout_builders#TypingHasher#build_layout for (self: Object, Set[Object]): Layout[Object] */
4412 val
* VIRTUAL_layout_builders__TypingHasher__build_layout(val
* self
, val
* p0
) {
4413 val
* var
/* : Layout[Object] */;
4414 val
* var1
/* : PHLayout[Object, Object] */;
4415 var1
= layout_builders__TypingHasher__build_layout(self
, p0
);
4420 /* method layout_builders#TypingHasher#compute_ids for (self: TypingHasher[Object]): Map[Object, Int] */
4421 val
* layout_builders__TypingHasher__compute_ids(val
* self
) {
4422 val
* var
/* : Map[Object, Int] */;
4423 val
* var1
/* : HashMap[Object, Int] */;
4424 val
* var_ids
/* var ids: HashMap[Object, Int] */;
4425 val
* var2
/* : nullable POSet[Object] */;
4426 val
* var3
/* : Array[nullable Object] */;
4427 val
* var_lin
/* var lin: Array[Object] */;
4428 val
* var4
/* : nullable POSet[Object] */;
4429 val
* var5
/* : Iterator[nullable Object] */;
4430 short int var6
/* : Bool */;
4431 val
* var7
/* : nullable Object */;
4432 val
* var_e
/* var e: Object */;
4433 long var8
/* : Int */;
4434 long var9
/* : Int */;
4435 long var10
/* : Int */;
4436 long var12
/* : Int */;
4437 val
* var13
/* : nullable Object */;
4438 var1
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0kernel__Int
]);
4439 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[Object, Int]>*/;
4440 CHECK_NEW_hash_collection__HashMap(var1
);
4442 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4444 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 648);
4447 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_array__Collection__to_a
]))(var2
) /* to_a on <var2:nullable POSet[Object]>*/;
4450 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4452 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 649);
4455 ((void (*)(val
*, val
*))(var4
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var4
, var_lin
) /* sort on <var4:nullable POSet[Object]>*/;
4457 var5
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
4459 var6
= ((short int (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var5
) /* is_ok on <var5:Iterator[nullable Object]>*/;
4461 var7
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var5
) /* item on <var5:Iterator[nullable Object]>*/;
4463 var8
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
4465 { /* Inline kernel#Int#+ (var8,var9) */
4466 var12
= var8
+ var9
;
4469 RET_LABEL11
:(void)0;
4471 var13
= BOX_kernel__Int(var10
); /* autobox from Int to nullable Object */
4472 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_e
, var13
) /* []= on <var_ids:HashMap[Object, Int]>*/;
4473 CONTINUE_label
: (void)0;
4474 ((void (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var5
) /* next on <var5:Iterator[nullable Object]>*/;
4476 BREAK_label
: (void)0;
4482 /* method layout_builders#TypingHasher#compute_ids for (self: Object): Map[Object, Int] */
4483 val
* VIRTUAL_layout_builders__TypingHasher__compute_ids(val
* self
) {
4484 val
* var
/* : Map[Object, Int] */;
4485 val
* var1
/* : Map[Object, Int] */;
4486 var1
= layout_builders__TypingHasher__compute_ids(self
);
4491 /* method layout_builders#TypingHasher#build_conflicts for (self: TypingHasher[Object], Set[Object]): Map[Object, Set[Object]] */
4492 val
* layout_builders__TypingHasher__build_conflicts(val
* self
, val
* p0
) {
4493 val
* var
/* : Map[Object, Set[Object]] */;
4494 short int var1
/* : Bool */;
4497 const struct type
* type_struct
;
4498 val
* var_elements
/* var elements: Set[Object] */;
4499 val
* var2
/* : HashMap[Object, Set[Object]] */;
4500 val
* var_conflicts
/* var conflicts: HashMap[Object, Set[Object]] */;
4501 val
* var3
/* : Iterator[nullable Object] */;
4502 short int var4
/* : Bool */;
4503 val
* var5
/* : nullable Object */;
4504 val
* var_e
/* var e: Object */;
4505 val
* var6
/* : HashSet[Object] */;
4506 val
* var_supers
/* var supers: HashSet[Object] */;
4507 val
* var7
/* : nullable POSet[Object] */;
4508 val
* var8
/* : POSetElement[Object] */;
4509 val
* var9
/* : Collection[Object] */;
4510 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
4511 /* <p0:Set[Object]> isa Set[TypingHasher#0] */
4512 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0
];
4513 cltype
= type_struct
->color
;
4514 idtype
= type_struct
->id
;
4515 if(cltype
>= p0
->type
->table_size
) {
4518 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4521 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 656);
4525 var2
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0abstract_collection__Setlayout_builders__TypingHasher_FT0
]);
4526 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[Object, Set[Object]]>*/;
4527 CHECK_NEW_hash_collection__HashMap(var2
);
4528 var_conflicts
= var2
;
4529 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[Object]>*/;
4531 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
4533 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
4535 var6
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingHasher_FT0
]);
4536 ((void (*)(val
*))(var6
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var6
) /* init on <var6:HashSet[Object]>*/;
4537 CHECK_NEW_hash_collection__HashSet(var6
);
4539 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4541 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 660);
4544 var8
= ((val
* (*)(val
*, val
*))(var7
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var7
, var_e
) /* [] on <var7:nullable POSet[Object]>*/;
4546 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var8
) /* greaters on <var8:POSetElement[Object]>*/;
4547 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_supers
, var9
) /* add_all on <var_supers:HashSet[Object]>*/;
4548 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_supers
, var_e
) /* add on <var_supers:HashSet[Object]>*/;
4549 ((void (*)(val
*, val
*, val
*))(var_conflicts
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_conflicts
, var_e
, var_supers
) /* []= on <var_conflicts:HashMap[Object, Set[Object]]>*/;
4550 CONTINUE_label
: (void)0;
4551 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
4553 BREAK_label
: (void)0;
4554 var
= var_conflicts
;
4559 /* method layout_builders#TypingHasher#build_conflicts for (self: Object, Set[Object]): Map[Object, Set[Object]] */
4560 val
* VIRTUAL_layout_builders__TypingHasher__build_conflicts(val
* self
, val
* p0
) {
4561 val
* var
/* : Map[Object, Set[Object]] */;
4562 val
* var1
/* : Map[Object, Set[Object]] */;
4563 var1
= layout_builders__TypingHasher__build_conflicts(self
, p0
);
4568 /* method layout_builders#MTypeHasher#init for (self: MTypeHasher, PHOperator, MModule) */
4569 void layout_builders__MTypeHasher__init(val
* self
, val
* p0
, val
* p1
) {
4570 val
* var_operator
/* var operator: PHOperator */;
4571 val
* var_mmodule
/* var mmodule: MModule */;
4572 val
* var
/* : MTypePOSetBuilder */;
4575 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
4576 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
4577 CHECK_NEW_layout_builders__MTypePOSetBuilder(var
);
4578 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__init
]))(self
, var_mmodule
, var
, var_operator
) /* init on <self:MTypeHasher>*/;
4581 /* method layout_builders#MTypeHasher#init for (self: Object, PHOperator, MModule) */
4582 void VIRTUAL_layout_builders__MTypeHasher__init(val
* self
, val
* p0
, val
* p1
) {
4583 layout_builders__MTypeHasher__init(self
, p0
, p1
);
4586 /* method layout_builders#MClassHasher#init for (self: MClassHasher, PHOperator, MModule) */
4587 void layout_builders__MClassHasher__init(val
* self
, val
* p0
, val
* p1
) {
4588 val
* var_operator
/* var operator: PHOperator */;
4589 val
* var_mmodule
/* var mmodule: MModule */;
4590 val
* var
/* : MClassPOSetBuilder */;
4593 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
4594 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
4595 CHECK_NEW_layout_builders__MClassPOSetBuilder(var
);
4596 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__init
]))(self
, var_mmodule
, var
, var_operator
) /* init on <self:MClassHasher>*/;
4599 /* method layout_builders#MClassHasher#init for (self: Object, PHOperator, MModule) */
4600 void VIRTUAL_layout_builders__MClassHasher__init(val
* self
, val
* p0
, val
* p1
) {
4601 layout_builders__MClassHasher__init(self
, p0
, p1
);
4604 /* method layout_builders#MPropertyHasher#mmodule for (self: MPropertyHasher[PropertyLayoutElement]): MModule */
4605 val
* layout_builders__MPropertyHasher__mmodule(val
* self
) {
4606 val
* var
/* : MModule */;
4607 val
* var1
/* : MModule */;
4608 var1
= self
->attrs
[COLOR_layout_builders__MPropertyHasher___64dmmodule
].val
; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
4610 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 685);
4617 /* method layout_builders#MPropertyHasher#mmodule for (self: Object): MModule */
4618 val
* VIRTUAL_layout_builders__MPropertyHasher__mmodule(val
* self
) {
4619 val
* var
/* : MModule */;
4620 val
* var1
/* : MModule */;
4621 var1
= layout_builders__MPropertyHasher__mmodule(self
);
4626 /* method layout_builders#MPropertyHasher#mmodule= for (self: MPropertyHasher[PropertyLayoutElement], MModule) */
4627 void layout_builders__MPropertyHasher__mmodule_61d(val
* self
, val
* p0
) {
4628 self
->attrs
[COLOR_layout_builders__MPropertyHasher___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
4631 /* method layout_builders#MPropertyHasher#mmodule= for (self: Object, MModule) */
4632 void VIRTUAL_layout_builders__MPropertyHasher__mmodule_61d(val
* self
, val
* p0
) {
4633 layout_builders__MPropertyHasher__mmodule_61d(self
, p0
);
4636 /* method layout_builders#MPropertyHasher#init for (self: MPropertyHasher[PropertyLayoutElement], PHOperator, MModule) */
4637 void layout_builders__MPropertyHasher__init(val
* self
, val
* p0
, val
* p1
) {
4638 val
* var_operator
/* var operator: PHOperator */;
4639 val
* var_mmodule
/* var mmodule: MModule */;
4642 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4643 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4644 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4647 /* method layout_builders#MPropertyHasher#init for (self: Object, PHOperator, MModule) */
4648 void VIRTUAL_layout_builders__MPropertyHasher__init(val
* self
, val
* p0
, val
* p1
) {
4649 layout_builders__MPropertyHasher__init(self
, p0
, p1
);
4652 /* method layout_builders#MPropertyHasher#build_poset for (self: MPropertyHasher[PropertyLayoutElement], Set[MClass]): POSet[MClass] */
4653 val
* layout_builders__MPropertyHasher__build_poset(val
* self
, val
* p0
) {
4654 val
* var
/* : POSet[MClass] */;
4655 val
* var_mclasses
/* var mclasses: Set[MClass] */;
4656 val
* var1
/* : POSet[MClass] */;
4657 val
* var_poset
/* var poset: POSet[MClass] */;
4658 val
* var2
/* : Iterator[nullable Object] */;
4659 short int var3
/* : Bool */;
4660 val
* var4
/* : nullable Object */;
4661 val
* var_e
/* var e: MClass */;
4662 val
* var5
/* : POSetElement[Object] */;
4663 val
* var6
/* : Iterator[nullable Object] */;
4664 short int var7
/* : Bool */;
4665 val
* var8
/* : nullable Object */;
4666 val
* var_o
/* var o: MClass */;
4667 short int var9
/* : Bool */;
4668 short int var10
/* : Bool */;
4669 short int var_
/* var : Bool */;
4670 val
* var11
/* : MModule */;
4671 val
* var12
/* : POSet[MClass] */;
4672 short int var13
/* : Bool */;
4673 short int var14
/* : Bool */;
4674 val
* var15
/* : MModule */;
4675 val
* var16
/* : POSetElement[MClass] */;
4676 short int var17
/* : Bool */;
4678 var1
= NEW_poset__POSet(&type_poset__POSetmodel__MClass
);
4679 ((void (*)(val
*))(var1
->class->vft
[COLOR_poset__POSet__init
]))(var1
) /* init on <var1:POSet[MClass]>*/;
4680 CHECK_NEW_poset__POSet(var1
);
4682 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
4684 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
4686 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
4688 var5
= ((val
* (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_node
]))(var_poset
, var_e
) /* add_node on <var_poset:POSet[MClass]>*/;
4690 var6
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
4692 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
4694 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
4696 var10
= ((short int (*)(val
*, val
*))(var_e
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_e
, var_o
) /* == on <var_e:MClass>*/;
4701 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule
]))(self
) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4702 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var11
) /* flatten_mclass_hierarchy on <var11:MModule>*/;
4703 var13
= ((short int (*)(val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var12
, var_e
) /* has on <var12:POSet[MClass]>*/;
4708 goto CONTINUE_label
;
4711 var15
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule
]))(self
) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4712 var16
= ((val
* (*)(val
*, val
*))(var_e
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_e
, var15
) /* in_hierarchy on <var_e:MClass>*/;
4713 var17
= ((short int (*)(val
*, val
*))(var16
->class->vft
[COLOR_poset__POSetElement___60d
]))(var16
, var_o
) /* < on <var16:POSetElement[MClass]>*/;
4715 ((void (*)(val
*, val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_edge
]))(var_poset
, var_e
, var_o
) /* add_edge on <var_poset:POSet[MClass]>*/;
4718 CONTINUE_label
: (void)0;
4719 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
4721 BREAK_label
: (void)0;
4722 CONTINUE_label18
: (void)0;
4723 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
4725 BREAK_label18
: (void)0;
4731 /* method layout_builders#MPropertyHasher#build_poset for (self: Object, Set[MClass]): POSet[MClass] */
4732 val
* VIRTUAL_layout_builders__MPropertyHasher__build_poset(val
* self
, val
* p0
) {
4733 val
* var
/* : POSet[MClass] */;
4734 val
* var1
/* : POSet[MClass] */;
4735 var1
= layout_builders__MPropertyHasher__build_poset(self
, p0
);
4740 /* method layout_builders#MPropertyHasher#build_layout for (self: MPropertyHasher[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
4741 val
* layout_builders__MPropertyHasher__build_layout(val
* self
, val
* p0
) {
4742 val
* var
/* : Layout[PropertyLayoutElement] */;
4743 short int var1
/* : Bool */;
4746 const struct type
* type_struct
;
4747 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
4748 val
* var2
/* : PHLayout[MClass, PropertyLayoutElement] */;
4749 val
* var_result
/* var result: PHLayout[MClass, PropertyLayoutElement] */;
4750 val
* var3
/* : HashMap[PropertyLayoutElement, Int] */;
4751 val
* var_ids
/* var ids: HashMap[PropertyLayoutElement, Int] */;
4752 val
* var4
/* : HashSet[MClass] */;
4753 val
* var_mclasses
/* var mclasses: HashSet[MClass] */;
4754 val
* var5
/* : Collection[Object] */;
4755 val
* var6
/* : POSet[MClass] */;
4756 val
* var_poset
/* var poset: POSet[MClass] */;
4757 val
* var7
/* : Array[nullable Object] */;
4758 val
* var_lin
/* var lin: Array[MClass] */;
4759 val
* var8
/* : Array[nullable Object] */;
4760 val
* var9
/* : Iterator[nullable Object] */;
4761 short int var10
/* : Bool */;
4762 val
* var11
/* : nullable Object */;
4763 val
* var_mclass
/* var mclass: MClass */;
4764 val
* var12
/* : nullable Object */;
4765 val
* var13
/* : Iterator[nullable Object] */;
4766 short int var14
/* : Bool */;
4767 val
* var15
/* : nullable Object */;
4768 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
4769 short int var16
/* : Bool */;
4770 long var17
/* : Int */;
4771 long var18
/* : Int */;
4772 long var19
/* : Int */;
4773 long var21
/* : Int */;
4774 val
* var22
/* : nullable Object */;
4775 val
* var24
/* : Map[Object, Int] */;
4776 val
* var25
/* : Map[Object, Int] */;
4777 val
* var26
/* : Map[Object, Map[Object, Int]] */;
4778 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
4779 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
4780 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
4781 cltype
= type_struct
->color
;
4782 idtype
= type_struct
->id
;
4783 if(cltype
>= p0
->type
->table_size
) {
4786 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4789 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 704);
4793 var2
= NEW_layout_builders__PHLayout(self
->type
->resolution_table
->types
[COLOR_layout_builders__PHLayoutmodel__MClasslayout_builders__MPropertyHasher_FT0
]);
4794 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var2
) /* init on <var2:PHLayout[MClass, PropertyLayoutElement]>*/;
4795 CHECK_NEW_layout_builders__PHLayout(var2
);
4797 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__MPropertyHasher_FT0kernel__Int
]);
4798 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
4799 CHECK_NEW_hash_collection__HashMap(var3
);
4801 var4
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
4802 ((void (*)(val
*))(var4
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var4
) /* init on <var4:HashSet[MClass]>*/;
4803 CHECK_NEW_hash_collection__HashSet(var4
);
4804 var_mclasses
= var4
;
4805 var5
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__keys
]))(var_elements
) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
4806 ((void (*)(val
*, val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_mclasses
, var5
) /* add_all on <var_mclasses:HashSet[MClass]>*/;
4807 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__build_poset
]))(self
, var_mclasses
) /* build_poset on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4809 var7
= ((val
* (*)(val
*))(var_poset
->class->vft
[COLOR_array__Collection__to_a
]))(var_poset
) /* to_a on <var_poset:POSet[MClass]>*/;
4811 ((void (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var_poset
, var_lin
) /* sort on <var_poset:POSet[MClass]>*/;
4812 var8
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_array__AbstractArrayRead__reversed
]))(var_lin
) /* reversed on <var_lin:Array[MClass]>*/;
4813 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var8
) /* iterator on <var8:Array[nullable Object](Array[MClass])>*/;
4815 var10
= ((short int (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var9
) /* is_ok on <var9:Iterator[nullable Object]>*/;
4817 var11
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var9
) /* item on <var9:Iterator[nullable Object]>*/;
4819 var12
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
4820 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var12
) /* iterator on <var12:nullable Object(Set[PropertyLayoutElement])>*/;
4822 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var13
) /* is_ok on <var13:Iterator[nullable Object]>*/;
4824 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var13
) /* item on <var13:Iterator[nullable Object]>*/;
4825 var_mproperty
= var15
;
4826 var16
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_mproperty
) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
4828 goto CONTINUE_label
;
4831 var17
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
4833 { /* Inline kernel#Int#+ (var17,var18) */
4834 var21
= var17
+ var18
;
4837 RET_LABEL20
:(void)0;
4839 var22
= BOX_kernel__Int(var19
); /* autobox from Int to nullable Object */
4840 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_mproperty
, var22
) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
4841 CONTINUE_label
: (void)0;
4842 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var13
) /* next on <var13:Iterator[nullable Object]>*/;
4844 BREAK_label
: (void)0;
4845 CONTINUE_label23
: (void)0;
4846 ((void (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var9
) /* next on <var9:Iterator[nullable Object]>*/;
4848 BREAK_label23
: (void)0;
4849 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
4850 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
4851 var24
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_elements
, var_ids
) /* compute_masks on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4852 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var24
) /* masks= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
4853 var25
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
4854 var26
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_elements
, var_ids
, var25
) /* compute_hashes on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4855 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var26
) /* hashes= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
4861 /* method layout_builders#MPropertyHasher#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
4862 val
* VIRTUAL_layout_builders__MPropertyHasher__build_layout(val
* self
, val
* p0
) {
4863 val
* var
/* : Layout[PropertyLayoutElement] */;
4864 val
* var1
/* : Layout[PropertyLayoutElement] */;
4865 var1
= layout_builders__MPropertyHasher__build_layout(self
, p0
);
4870 /* method layout_builders#ResolutionHasher#init for (self: ResolutionHasher, PHOperator) */
4871 void layout_builders__ResolutionHasher__init(val
* self
, val
* p0
) {
4872 val
* var_operator
/* var operator: PHOperator */;
4874 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:ResolutionHasher>*/;
4875 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:ResolutionHasher>*/;
4878 /* method layout_builders#ResolutionHasher#init for (self: Object, PHOperator) */
4879 void VIRTUAL_layout_builders__ResolutionHasher__init(val
* self
, val
* p0
) {
4880 layout_builders__ResolutionHasher__init(self
, p0
);
4883 /* method layout_builders#ResolutionHasher#build_layout for (self: ResolutionHasher, Map[MClassType, Set[MType]]): Layout[MType] */
4884 val
* layout_builders__ResolutionHasher__build_layout(val
* self
, val
* p0
) {
4885 val
* var
/* : Layout[MType] */;
4886 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
4887 val
* var1
/* : PHLayout[MClassType, MType] */;
4888 val
* var_result
/* var result: PHLayout[MClassType, MType] */;
4889 val
* var2
/* : HashMap[MType, Int] */;
4890 val
* var_ids
/* var ids: HashMap[MType, Int] */;
4891 long var3
/* : Int */;
4892 long var_color
/* var color: Int */;
4893 val
* var4
/* : MapIterator[Object, nullable Object] */;
4894 short int var5
/* : Bool */;
4895 val
* var6
/* : Object */;
4896 val
* var_mclasstype
/* var mclasstype: MClassType */;
4897 val
* var7
/* : nullable Object */;
4898 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
4899 val
* var8
/* : Iterator[nullable Object] */;
4900 short int var9
/* : Bool */;
4901 val
* var10
/* : nullable Object */;
4902 val
* var_element
/* var element: MType */;
4903 short int var11
/* : Bool */;
4904 val
* var12
/* : nullable Object */;
4905 long var13
/* : Int */;
4906 long var14
/* : Int */;
4907 long var16
/* : Int */;
4908 val
* var18
/* : Map[Object, Int] */;
4909 val
* var19
/* : Map[Object, Int] */;
4910 val
* var20
/* : Map[Object, Map[Object, Int]] */;
4912 var1
= NEW_layout_builders__PHLayout(&type_layout_builders__PHLayoutmodel__MClassTypemodel__MType
);
4913 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var1
) /* init on <var1:PHLayout[MClassType, MType]>*/;
4914 CHECK_NEW_layout_builders__PHLayout(var1
);
4916 var2
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
4917 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[MType, Int]>*/;
4918 CHECK_NEW_hash_collection__HashMap(var2
);
4922 var4
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
4924 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var4
) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
4926 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var4
) /* key on <var4:MapIterator[Object, nullable Object]>*/;
4927 var_mclasstype
= var6
;
4928 var7
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var4
) /* item on <var4:MapIterator[Object, nullable Object]>*/;
4929 var_mclasstypes
= var7
;
4930 var8
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
4932 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
4934 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
4935 var_element
= var10
;
4936 var11
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
4938 goto CONTINUE_label
;
4941 var12
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
4942 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var12
) /* []= on <var_ids:HashMap[MType, Int]>*/;
4944 { /* Inline kernel#Int#+ (var_color,var13) */
4945 var16
= var_color
+ var13
;
4948 RET_LABEL15
:(void)0;
4951 CONTINUE_label
: (void)0;
4952 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
4954 BREAK_label
: (void)0;
4955 CONTINUE_label17
: (void)0;
4956 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var4
) /* next on <var4:MapIterator[Object, nullable Object]>*/;
4958 BREAK_label17
: (void)0;
4959 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:PHLayout[MClassType, MType]>*/;
4960 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:PHLayout[MClassType, MType]>*/;
4961 var18
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_elements
, var_ids
) /* compute_masks on <self:ResolutionHasher>*/;
4962 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var18
) /* masks= on <var_result:PHLayout[MClassType, MType]>*/;
4963 var19
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[MClassType, MType]>*/;
4964 var20
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_elements
, var_ids
, var19
) /* compute_hashes on <self:ResolutionHasher>*/;
4965 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var20
) /* hashes= on <var_result:PHLayout[MClassType, MType]>*/;
4971 /* method layout_builders#ResolutionHasher#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
4972 val
* VIRTUAL_layout_builders__ResolutionHasher__build_layout(val
* self
, val
* p0
) {
4973 val
* var
/* : Layout[MType] */;
4974 val
* var1
/* : Layout[MType] */;
4975 var1
= layout_builders__ResolutionHasher__build_layout(self
, p0
);