gc: default to nitgc when boehm is not available
[nit.git] / c_src / partial_order._sep.c
1 /* This C file is generated by NIT to compile module partial_order. */
2 #include "partial_order._sep.h"
3 val_t partial_order___PartialOrder___iterator(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_partial_order;
9 fra.me.line = 54;
10 fra.me.meth = LOCATE_partial_order___PartialOrder___iterator;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
16 /* ./metamodel//partial_order.nit:54 */
17 if (UNTAG_Bool(REGB0)) {
18 } else {
19 fprintf(stderr, "Uninitialized attribute %s", "_elements_list");
20 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 54);
21 nit_exit(1);
22 }
23 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0]);
24 fra.me.REG[0] = CALL_abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
25 goto label1;
26 label1: while(0);
27 stack_frame_head = fra.me.prev;
28 return fra.me.REG[0];
29 }
30 val_t partial_order___PartialOrder___is_empty(val_t p0){
31 struct {struct stack_frame_t me;} fra;
32 val_t REGB0;
33 val_t tmp;
34 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
35 fra.me.file = LOCATE_partial_order;
36 fra.me.line = 35;
37 fra.me.meth = LOCATE_partial_order___PartialOrder___is_empty;
38 fra.me.has_broke = 0;
39 fra.me.REG_size = 1;
40 fra.me.REG[0] = NIT_NULL;
41 fra.me.REG[0] = p0;
42 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
43 /* ./metamodel//partial_order.nit:35 */
44 if (UNTAG_Bool(REGB0)) {
45 } else {
46 fprintf(stderr, "Uninitialized attribute %s", "_elements");
47 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 35);
48 nit_exit(1);
49 }
50 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
51 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
52 goto label1;
53 label1: while(0);
54 stack_frame_head = fra.me.prev;
55 return REGB0;
56 }
57 val_t partial_order___PartialOrder___length(val_t p0){
58 struct {struct stack_frame_t me;} fra;
59 val_t REGB0;
60 val_t tmp;
61 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
62 fra.me.file = LOCATE_partial_order;
63 fra.me.line = 37;
64 fra.me.meth = LOCATE_partial_order___PartialOrder___length;
65 fra.me.has_broke = 0;
66 fra.me.REG_size = 1;
67 fra.me.REG[0] = NIT_NULL;
68 fra.me.REG[0] = p0;
69 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
70 /* ./metamodel//partial_order.nit:37 */
71 if (UNTAG_Bool(REGB0)) {
72 } else {
73 fprintf(stderr, "Uninitialized attribute %s", "_elements");
74 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 37);
75 nit_exit(1);
76 }
77 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
78 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
79 goto label1;
80 label1: while(0);
81 stack_frame_head = fra.me.prev;
82 return REGB0;
83 }
84 val_t partial_order___PartialOrder___has(val_t p0, val_t p1){
85 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
86 val_t REGB0;
87 val_t tmp;
88 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
89 fra.me.file = LOCATE_partial_order;
90 fra.me.line = 41;
91 fra.me.meth = LOCATE_partial_order___PartialOrder___has;
92 fra.me.has_broke = 0;
93 fra.me.REG_size = 2;
94 fra.me.REG[0] = NIT_NULL;
95 fra.me.REG[1] = NIT_NULL;
96 fra.me.REG[0] = p0;
97 fra.me.REG[1] = p1;
98 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
99 /* ./metamodel//partial_order.nit:41 */
100 if (UNTAG_Bool(REGB0)) {
101 } else {
102 fprintf(stderr, "Uninitialized attribute %s", "_elements");
103 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 41);
104 nit_exit(1);
105 }
106 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
107 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
108 goto label1;
109 label1: while(0);
110 stack_frame_head = fra.me.prev;
111 return REGB0;
112 }
113 val_t partial_order___PartialOrder___has_only(val_t p0, val_t p1){
114 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
115 val_t REGB0;
116 val_t REGB1;
117 val_t REGB2;
118 val_t tmp;
119 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
120 fra.me.file = LOCATE_partial_order;
121 fra.me.line = 43;
122 fra.me.meth = LOCATE_partial_order___PartialOrder___has_only;
123 fra.me.has_broke = 0;
124 fra.me.REG_size = 3;
125 fra.me.REG[0] = NIT_NULL;
126 fra.me.REG[1] = NIT_NULL;
127 fra.me.REG[2] = NIT_NULL;
128 fra.me.REG[0] = p0;
129 fra.me.REG[1] = p1;
130 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
131 /* ./metamodel//partial_order.nit:43 */
132 if (UNTAG_Bool(REGB0)) {
133 } else {
134 fprintf(stderr, "Uninitialized attribute %s", "_elements");
135 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 43);
136 nit_exit(1);
137 }
138 fra.me.REG[2] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
139 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
140 REGB1 = TAG_Int(1);
141 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
142 if (UNTAG_Bool(REGB2)) {
143 } else {
144 REGB1 = TAG_Bool((REGB0)==(REGB1));
145 REGB2 = REGB1;
146 /* ./metamodel//partial_order.nit:43 */
147 }
148 if (UNTAG_Bool(REGB2)) {
149 REGB2 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
150 if (UNTAG_Bool(REGB2)) {
151 } else {
152 fprintf(stderr, "Uninitialized attribute %s", "_elements");
153 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 43);
154 nit_exit(1);
155 }
156 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
157 fra.me.REG[0] = CALL_abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
158 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[0],fra.me.REG[1]));
159 if (UNTAG_Bool(REGB2)) {
160 } else {
161 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
162 if (UNTAG_Bool(REGB1)) {
163 REGB1 = TAG_Bool(false);
164 REGB2 = REGB1;
165 } else {
166 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
167 REGB2 = REGB1;
168 }
169 }
170 } else {
171 REGB1 = TAG_Bool(false);
172 REGB2 = REGB1;
173 }
174 goto label1;
175 label1: while(0);
176 stack_frame_head = fra.me.prev;
177 return REGB2;
178 }
179 val_t partial_order___PartialOrder___count(val_t p0, val_t p1){
180 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
181 val_t REGB0;
182 val_t REGB1;
183 val_t tmp;
184 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
185 fra.me.file = LOCATE_partial_order;
186 fra.me.line = 45;
187 fra.me.meth = LOCATE_partial_order___PartialOrder___count;
188 fra.me.has_broke = 0;
189 fra.me.REG_size = 2;
190 fra.me.REG[0] = NIT_NULL;
191 fra.me.REG[1] = NIT_NULL;
192 fra.me.REG[0] = p0;
193 fra.me.REG[1] = p1;
194 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
195 /* ./metamodel//partial_order.nit:47 */
196 if (UNTAG_Bool(REGB0)) {
197 REGB0 = TAG_Int(1);
198 /* ./metamodel//partial_order.nit:48 */
199 goto label1;
200 } else {
201 REGB1 = TAG_Int(0);
202 REGB0 = REGB1;
203 /* ./metamodel//partial_order.nit:50 */
204 goto label1;
205 }
206 label1: while(0);
207 stack_frame_head = fra.me.prev;
208 return REGB0;
209 }
210 val_t partial_order___PartialOrder___first(val_t p0){
211 struct {struct stack_frame_t me;} fra;
212 val_t REGB0;
213 val_t tmp;
214 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
215 fra.me.file = LOCATE_partial_order;
216 fra.me.line = 39;
217 fra.me.meth = LOCATE_partial_order___PartialOrder___first;
218 fra.me.has_broke = 0;
219 fra.me.REG_size = 1;
220 fra.me.REG[0] = NIT_NULL;
221 fra.me.REG[0] = p0;
222 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
223 /* ./metamodel//partial_order.nit:39 */
224 if (UNTAG_Bool(REGB0)) {
225 } else {
226 fprintf(stderr, "Uninitialized attribute %s", "_elements_list");
227 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 39);
228 nit_exit(1);
229 }
230 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0]);
231 fra.me.REG[0] = CALL_abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
232 goto label1;
233 label1: while(0);
234 stack_frame_head = fra.me.prev;
235 return fra.me.REG[0];
236 }
237 val_t partial_order___PartialOrder___roots(val_t p0){
238 struct {struct stack_frame_t me;} fra;
239 val_t REGB0;
240 val_t tmp;
241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
242 fra.me.file = LOCATE_partial_order;
243 fra.me.line = 30;
244 fra.me.meth = LOCATE_partial_order___PartialOrder___roots;
245 fra.me.has_broke = 0;
246 fra.me.REG_size = 1;
247 fra.me.REG[0] = NIT_NULL;
248 fra.me.REG[0] = p0;
249 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
250 /* ./metamodel//partial_order.nit:30 */
251 if (UNTAG_Bool(REGB0)) {
252 } else {
253 fprintf(stderr, "Uninitialized attribute %s", "_roots");
254 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 30);
255 nit_exit(1);
256 }
257 fra.me.REG[0] = ATTR_partial_order___PartialOrder____roots(fra.me.REG[0]);
258 stack_frame_head = fra.me.prev;
259 return fra.me.REG[0];
260 }
261 val_t partial_order___PartialOrder_____bra(val_t p0, val_t p1){
262 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
263 val_t REGB0;
264 val_t tmp;
265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
266 fra.me.file = LOCATE_partial_order;
267 fra.me.line = 58;
268 fra.me.meth = LOCATE_partial_order___PartialOrder_____bra;
269 fra.me.has_broke = 0;
270 fra.me.REG_size = 2;
271 fra.me.REG[0] = NIT_NULL;
272 fra.me.REG[1] = NIT_NULL;
273 fra.me.REG[0] = p0;
274 fra.me.REG[1] = p1;
275 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
276 /* ./metamodel//partial_order.nit:61 */
277 if (UNTAG_Bool(REGB0)) {
278 } else {
279 fprintf(stderr, "Uninitialized attribute %s", "_elements");
280 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 61);
281 nit_exit(1);
282 }
283 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
284 fra.me.REG[1] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
285 goto label1;
286 label1: while(0);
287 stack_frame_head = fra.me.prev;
288 return fra.me.REG[1];
289 }
290 val_t partial_order___PartialOrder___to_dot(val_t p0){
291 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
292 val_t REGB0;
293 val_t tmp;
294 static val_t once_value_3; /* Once value */
295 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
296 fra.me.file = LOCATE_partial_order;
297 fra.me.line = 64;
298 fra.me.meth = LOCATE_partial_order___PartialOrder___to_dot;
299 fra.me.has_broke = 0;
300 fra.me.REG_size = 7;
301 fra.me.REG[0] = NIT_NULL;
302 fra.me.REG[1] = NIT_NULL;
303 fra.me.REG[2] = NIT_NULL;
304 fra.me.REG[3] = NIT_NULL;
305 fra.me.REG[4] = NIT_NULL;
306 fra.me.REG[5] = NIT_NULL;
307 fra.me.REG[6] = NIT_NULL;
308 fra.me.REG[0] = p0;
309 fra.me.REG[1] = NEW_Buffer_string___Buffer___init();
310 fra.me.REG[2] = CALL_partial_order___PartialOrder___to_dot_header(fra.me.REG[0])(fra.me.REG[0]);
311 /* ./metamodel//partial_order.nit:68 */
312 CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
313 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
314 /* ./metamodel//partial_order.nit:69 */
315 if (UNTAG_Bool(REGB0)) {
316 } else {
317 fprintf(stderr, "Uninitialized attribute %s", "_elements");
318 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 69);
319 nit_exit(1);
320 }
321 fra.me.REG[2] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
322 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
323 while(1) {
324 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
325 if (UNTAG_Bool(REGB0)) {
326 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
327 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[3])(fra.me.REG[3]);
328 fra.me.REG[4] = CALL_partial_order___PartialOrder___to_dot_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
329 /* ./metamodel//partial_order.nit:70 */
330 CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
331 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
332 fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
333 /* ./metamodel//partial_order.nit:71 */
334 while(1) {
335 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
336 if (UNTAG_Bool(REGB0)) {
337 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
338 fra.me.REG[6] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[3])(fra.me.REG[3]);
339 fra.me.REG[5] = CALL_partial_order___PartialOrder___to_dot_edge(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
340 /* ./metamodel//partial_order.nit:72 */
341 CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
342 } else {
343 /* ./metamodel//partial_order.nit:71 */
344 goto label1;
345 }
346 CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
347 }
348 label1: while(0);
349 } else {
350 /* ./metamodel//partial_order.nit:69 */
351 goto label2;
352 }
353 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
354 }
355 label2: while(0);
356 /* ./metamodel//partial_order.nit:75 */
357 if (!once_value_3) {
358 fra.me.REG[2] = BOX_NativeString("}\n");
359 REGB0 = TAG_Int(2);
360 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
361 once_value_3 = fra.me.REG[2];
362 register_static_object(&once_value_3);
363 } else fra.me.REG[2] = once_value_3;
364 CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
365 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
366 /* ./metamodel//partial_order.nit:76 */
367 goto label4;
368 label4: while(0);
369 stack_frame_head = fra.me.prev;
370 return fra.me.REG[1];
371 }
372 val_t partial_order___PartialOrder___to_dot_header(val_t p0){
373 struct {struct stack_frame_t me;} fra;
374 val_t REGB0;
375 val_t tmp;
376 static val_t once_value_1; /* Once value */
377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
378 fra.me.file = LOCATE_partial_order;
379 fra.me.line = 79;
380 fra.me.meth = LOCATE_partial_order___PartialOrder___to_dot_header;
381 fra.me.has_broke = 0;
382 fra.me.REG_size = 1;
383 fra.me.REG[0] = NIT_NULL;
384 fra.me.REG[0] = p0;
385 /* ./metamodel//partial_order.nit:82 */
386 if (!once_value_1) {
387 fra.me.REG[0] = BOX_NativeString("digraph G {\ngraph [rankdir=BT];\n");
388 REGB0 = TAG_Int(32);
389 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
390 once_value_1 = fra.me.REG[0];
391 register_static_object(&once_value_1);
392 } else fra.me.REG[0] = once_value_1;
393 goto label2;
394 label2: while(0);
395 stack_frame_head = fra.me.prev;
396 return fra.me.REG[0];
397 }
398 val_t partial_order___PartialOrder___to_dot_node(val_t p0, val_t p1){
399 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
400 val_t REGB0;
401 val_t tmp;
402 static val_t once_value_1; /* Once value */
403 static val_t once_value_2; /* Once value */
404 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
405 fra.me.file = LOCATE_partial_order;
406 fra.me.line = 85;
407 fra.me.meth = LOCATE_partial_order___PartialOrder___to_dot_node;
408 fra.me.has_broke = 0;
409 fra.me.REG_size = 3;
410 fra.me.REG[0] = NIT_NULL;
411 fra.me.REG[1] = NIT_NULL;
412 fra.me.REG[2] = NIT_NULL;
413 fra.me.REG[0] = p0;
414 fra.me.REG[1] = p1;
415 REGB0 = TAG_Int(3);
416 fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
417 /* ./metamodel//partial_order.nit:88 */
418 if (!once_value_1) {
419 fra.me.REG[2] = BOX_NativeString("\"");
420 REGB0 = TAG_Int(1);
421 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
422 once_value_1 = fra.me.REG[2];
423 register_static_object(&once_value_1);
424 } else fra.me.REG[2] = once_value_1;
425 array___Array___add(fra.me.REG[0], fra.me.REG[2]);
426 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
427 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
428 if (!once_value_2) {
429 fra.me.REG[1] = BOX_NativeString("\";\n");
430 REGB0 = TAG_Int(3);
431 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
432 once_value_2 = fra.me.REG[1];
433 register_static_object(&once_value_2);
434 } else fra.me.REG[1] = once_value_2;
435 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
436 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
437 goto label3;
438 label3: while(0);
439 stack_frame_head = fra.me.prev;
440 return fra.me.REG[0];
441 }
442 val_t partial_order___PartialOrder___to_dot_edge(val_t p0, val_t p1, val_t p2){
443 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
444 val_t REGB0;
445 val_t tmp;
446 static val_t once_value_1; /* Once value */
447 static val_t once_value_2; /* Once value */
448 static val_t once_value_3; /* Once value */
449 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
450 fra.me.file = LOCATE_partial_order;
451 fra.me.line = 91;
452 fra.me.meth = LOCATE_partial_order___PartialOrder___to_dot_edge;
453 fra.me.has_broke = 0;
454 fra.me.REG_size = 4;
455 fra.me.REG[0] = NIT_NULL;
456 fra.me.REG[1] = NIT_NULL;
457 fra.me.REG[2] = NIT_NULL;
458 fra.me.REG[3] = NIT_NULL;
459 fra.me.REG[0] = p0;
460 fra.me.REG[1] = p1;
461 fra.me.REG[2] = p2;
462 REGB0 = TAG_Int(5);
463 fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
464 /* ./metamodel//partial_order.nit:94 */
465 if (!once_value_1) {
466 fra.me.REG[3] = BOX_NativeString("\"");
467 REGB0 = TAG_Int(1);
468 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
469 once_value_1 = fra.me.REG[3];
470 register_static_object(&once_value_1);
471 } else fra.me.REG[3] = once_value_1;
472 array___Array___add(fra.me.REG[0], fra.me.REG[3]);
473 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
474 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
475 if (!once_value_2) {
476 fra.me.REG[1] = BOX_NativeString("\" -> \"");
477 REGB0 = TAG_Int(6);
478 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
479 once_value_2 = fra.me.REG[1];
480 register_static_object(&once_value_2);
481 } else fra.me.REG[1] = once_value_2;
482 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
483 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
484 array___Array___add(fra.me.REG[0], fra.me.REG[2]);
485 if (!once_value_3) {
486 fra.me.REG[2] = BOX_NativeString("\";\n");
487 REGB0 = TAG_Int(3);
488 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
489 once_value_3 = fra.me.REG[2];
490 register_static_object(&once_value_3);
491 } else fra.me.REG[2] = once_value_3;
492 array___Array___add(fra.me.REG[0], fra.me.REG[2]);
493 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
494 goto label4;
495 label4: while(0);
496 stack_frame_head = fra.me.prev;
497 return fra.me.REG[0];
498 }
499 val_t partial_order___PartialOrder___select_smallests(val_t p0, val_t p1){
500 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
501 val_t REGB0;
502 val_t REGB1;
503 val_t tmp;
504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
505 fra.me.file = LOCATE_partial_order;
506 fra.me.line = 97;
507 fra.me.meth = LOCATE_partial_order___PartialOrder___select_smallests;
508 fra.me.has_broke = 0;
509 fra.me.REG_size = 6;
510 fra.me.REG[0] = NIT_NULL;
511 fra.me.REG[1] = NIT_NULL;
512 fra.me.REG[2] = NIT_NULL;
513 fra.me.REG[3] = NIT_NULL;
514 fra.me.REG[4] = NIT_NULL;
515 fra.me.REG[5] = NIT_NULL;
516 fra.me.REG[0] = p0;
517 fra.me.REG[1] = p1;
518 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
519 /* ./metamodel//partial_order.nit:100 */
520 if (UNTAG_Bool(REGB0)) {
521 } else {
522 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
523 if (UNTAG_Bool(REGB1)) {
524 REGB1 = TAG_Bool(false);
525 REGB0 = REGB1;
526 } else {
527 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
528 REGB0 = REGB1;
529 }
530 }
531 if (UNTAG_Bool(REGB0)) {
532 fra.me.REG[2] = NEW_Array_array___Array___init();
533 goto label1;
534 }
535 REGB0 = CALL_partial_order___PartialOrder___has_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
536 /* ./metamodel//partial_order.nit:101 */
537 if (UNTAG_Bool(REGB0)) {
538 } else {
539 fprintf(stderr, "Assert failed");
540 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 101);
541 nit_exit(1);
542 }
543 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
544 /* ./metamodel//partial_order.nit:102 */
545 if (UNTAG_Bool(REGB0)) {
546 fprintf(stderr, "Reciever is null");
547 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 102);
548 nit_exit(1);
549 }
550 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
551 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
552 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
553 /* ./metamodel//partial_order.nit:103 */
554 if (UNTAG_Bool(REGB0)) {
555 fprintf(stderr, "Reciever is null");
556 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 103);
557 nit_exit(1);
558 }
559 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
560 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
561 fra.me.REG[1] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
562 /* ./metamodel//partial_order.nit:104 */
563 while(1) {
564 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
565 if (UNTAG_Bool(REGB0)) {
566 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
567 REGB0 = CALL_partial_order___PartialOrder___add_to_smallests(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
568 /* ./metamodel//partial_order.nit:107 */
569 if (UNTAG_Bool(REGB0)) {
570 fra.me.REG[5] = fra.me.REG[4];
571 fra.me.REG[4] = fra.me.REG[3];
572 fra.me.REG[3] = fra.me.REG[5];
573 /* ./metamodel//partial_order.nit:112 */
574 }
575 } else {
576 /* ./metamodel//partial_order.nit:104 */
577 goto label2;
578 }
579 CALL_abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
580 }
581 label2: while(0);
582 fra.me.REG[2] = fra.me.REG[3];
583 /* ./metamodel//partial_order.nit:115 */
584 goto label1;
585 label1: while(0);
586 stack_frame_head = fra.me.prev;
587 return fra.me.REG[2];
588 }
589 val_t partial_order___PartialOrder___add(val_t p0, val_t p1, val_t p2){
590 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
591 val_t REGB0;
592 val_t REGB1;
593 val_t tmp;
594 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
595 fra.me.file = LOCATE_partial_order;
596 fra.me.line = 118;
597 fra.me.meth = LOCATE_partial_order___PartialOrder___add;
598 fra.me.has_broke = 0;
599 fra.me.REG_size = 5;
600 fra.me.REG[0] = NIT_NULL;
601 fra.me.REG[1] = NIT_NULL;
602 fra.me.REG[2] = NIT_NULL;
603 fra.me.REG[3] = NIT_NULL;
604 fra.me.REG[4] = NIT_NULL;
605 fra.me.REG[0] = p0;
606 fra.me.REG[1] = p1;
607 fra.me.REG[2] = p2;
608 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
609 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
610 /* ./metamodel//partial_order.nit:121 */
611 if (UNTAG_Bool(REGB0)) {
612 } else {
613 fprintf(stderr, "Assert failed");
614 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 121);
615 nit_exit(1);
616 }
617 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
618 /* ./metamodel//partial_order.nit:122 */
619 if (UNTAG_Bool(REGB0)) {
620 } else {
621 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
622 if (UNTAG_Bool(REGB1)) {
623 REGB1 = TAG_Bool(false);
624 REGB0 = REGB1;
625 } else {
626 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
627 REGB0 = REGB1;
628 }
629 }
630 if (UNTAG_Bool(REGB0)) {
631 REGB0 = TAG_Bool(true);
632 } else {
633 REGB1 = CALL_partial_order___PartialOrder___has_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
634 REGB0 = REGB1;
635 }
636 if (UNTAG_Bool(REGB0)) {
637 } else {
638 fprintf(stderr, "Assert failed");
639 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 122);
640 nit_exit(1);
641 }
642 fra.me.REG[3] = CALL_partial_order___PartialOrder___select_smallests(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
643 fra.me.REG[3] = CALL_partial_order___PartialOrder___new_poe(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
644 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
645 /* ./metamodel//partial_order.nit:125 */
646 if (UNTAG_Bool(REGB0)) {
647 } else {
648 fprintf(stderr, "Uninitialized attribute %s", "_elements");
649 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 125);
650 nit_exit(1);
651 }
652 fra.me.REG[4] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
653 CALL_abstract_collection___Map_____braeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[3]);
654 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
655 /* ./metamodel//partial_order.nit:126 */
656 if (UNTAG_Bool(REGB0)) {
657 } else {
658 fprintf(stderr, "Uninitialized attribute %s", "_elements_list");
659 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 126);
660 nit_exit(1);
661 }
662 fra.me.REG[4] = ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0]);
663 array___Array___add(fra.me.REG[4], fra.me.REG[1]);
664 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
665 /* ./metamodel//partial_order.nit:127 */
666 if (UNTAG_Bool(REGB0)) {
667 } else {
668 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
669 if (UNTAG_Bool(REGB1)) {
670 REGB1 = TAG_Bool(false);
671 REGB0 = REGB1;
672 } else {
673 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
674 REGB0 = REGB1;
675 }
676 }
677 if (UNTAG_Bool(REGB0)) {
678 REGB0 = TAG_Bool(true);
679 } else {
680 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
681 if (UNTAG_Bool(REGB1)) {
682 fprintf(stderr, "Reciever is null");
683 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 127);
684 nit_exit(1);
685 }
686 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
687 REGB0 = REGB1;
688 }
689 if (UNTAG_Bool(REGB0)) {
690 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
691 /* ./metamodel//partial_order.nit:128 */
692 if (UNTAG_Bool(REGB0)) {
693 } else {
694 fprintf(stderr, "Uninitialized attribute %s", "_roots");
695 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 128);
696 nit_exit(1);
697 }
698 fra.me.REG[0] = ATTR_partial_order___PartialOrder____roots(fra.me.REG[0]);
699 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
700 }
701 /* ./metamodel//partial_order.nit:130 */
702 goto label1;
703 label1: while(0);
704 stack_frame_head = fra.me.prev;
705 return fra.me.REG[3];
706 }
707 val_t partial_order___PartialOrder___has_all(val_t p0, val_t p1){
708 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
709 val_t REGB0;
710 val_t REGB1;
711 val_t tmp;
712 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
713 fra.me.file = LOCATE_partial_order;
714 fra.me.line = 133;
715 fra.me.meth = LOCATE_partial_order___PartialOrder___has_all;
716 fra.me.has_broke = 0;
717 fra.me.REG_size = 3;
718 fra.me.REG[0] = NIT_NULL;
719 fra.me.REG[1] = NIT_NULL;
720 fra.me.REG[2] = NIT_NULL;
721 fra.me.REG[0] = p0;
722 fra.me.REG[1] = p1;
723 fra.me.REG[1] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
724 /* ./metamodel//partial_order.nit:136 */
725 while(1) {
726 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
727 if (UNTAG_Bool(REGB0)) {
728 fra.me.REG[2] = CALL_abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
729 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
730 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
731 /* ./metamodel//partial_order.nit:137 */
732 if (UNTAG_Bool(REGB0)) {
733 REGB0 = TAG_Bool(false);
734 /* ./metamodel//partial_order.nit:138 */
735 goto label1;
736 }
737 } else {
738 /* ./metamodel//partial_order.nit:136 */
739 goto label2;
740 }
741 CALL_abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
742 }
743 label2: while(0);
744 REGB1 = TAG_Bool(true);
745 REGB0 = REGB1;
746 /* ./metamodel//partial_order.nit:141 */
747 goto label1;
748 label1: while(0);
749 stack_frame_head = fra.me.prev;
750 return REGB0;
751 }
752 val_t partial_order___PartialOrder___new_poe(val_t p0, val_t p1, val_t p2){
753 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
754 val_t tmp;
755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
756 fra.me.file = LOCATE_partial_order;
757 fra.me.line = 144;
758 fra.me.meth = LOCATE_partial_order___PartialOrder___new_poe;
759 fra.me.has_broke = 0;
760 fra.me.REG_size = 3;
761 fra.me.REG[0] = NIT_NULL;
762 fra.me.REG[1] = NIT_NULL;
763 fra.me.REG[2] = NIT_NULL;
764 fra.me.REG[0] = p0;
765 fra.me.REG[1] = p1;
766 fra.me.REG[2] = p2;
767 fra.me.REG[2] = NEW_PartialOrderElement_partial_order___PartialOrderElement___init(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
768 /* ./metamodel//partial_order.nit:147 */
769 goto label1;
770 label1: while(0);
771 stack_frame_head = fra.me.prev;
772 return fra.me.REG[2];
773 }
774 val_t partial_order___PartialOrder___add_to_smallests(val_t p0, val_t p1, val_t p2, val_t p3){
775 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
776 val_t REGB0;
777 val_t REGB1;
778 val_t tmp;
779 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
780 fra.me.file = LOCATE_partial_order;
781 fra.me.line = 150;
782 fra.me.meth = LOCATE_partial_order___PartialOrder___add_to_smallests;
783 fra.me.has_broke = 0;
784 fra.me.REG_size = 5;
785 fra.me.REG[0] = NIT_NULL;
786 fra.me.REG[1] = NIT_NULL;
787 fra.me.REG[2] = NIT_NULL;
788 fra.me.REG[3] = NIT_NULL;
789 fra.me.REG[4] = NIT_NULL;
790 fra.me.REG[0] = p0;
791 fra.me.REG[1] = p1;
792 fra.me.REG[2] = p2;
793 fra.me.REG[3] = p3;
794 /* ./metamodel//partial_order.nit:157 */
795 CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
796 fra.me.REG[0] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
797 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
798 /* ./metamodel//partial_order.nit:159 */
799 while(1) {
800 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
801 if (UNTAG_Bool(REGB0)) {
802 fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
803 REGB0 = CALL_partial_order___PartialOrderElement_____g(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
804 /* ./metamodel//partial_order.nit:160 */
805 if (UNTAG_Bool(REGB0)) {
806 REGB0 = TAG_Bool(false);
807 /* ./metamodel//partial_order.nit:161 */
808 goto label1;
809 }
810 REGB1 = CALL_partial_order___PartialOrderElement_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
811 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
812 /* ./metamodel//partial_order.nit:163 */
813 if (UNTAG_Bool(REGB1)) {
814 /* ./metamodel//partial_order.nit:164 */
815 array___Array___add(fra.me.REG[3], fra.me.REG[4]);
816 }
817 } else {
818 /* ./metamodel//partial_order.nit:159 */
819 goto label2;
820 }
821 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
822 }
823 label2: while(0);
824 /* ./metamodel//partial_order.nit:167 */
825 array___Array___add(fra.me.REG[3], fra.me.REG[1]);
826 REGB1 = TAG_Bool(true);
827 REGB0 = REGB1;
828 /* ./metamodel//partial_order.nit:168 */
829 goto label1;
830 label1: while(0);
831 stack_frame_head = fra.me.prev;
832 return REGB0;
833 }
834 void partial_order___PartialOrder___compute_smallers_for(val_t p0, val_t p1, val_t p2){
835 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
836 val_t REGB0;
837 val_t tmp;
838 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
839 fra.me.file = LOCATE_partial_order;
840 fra.me.line = 171;
841 fra.me.meth = LOCATE_partial_order___PartialOrder___compute_smallers_for;
842 fra.me.has_broke = 0;
843 fra.me.REG_size = 4;
844 fra.me.REG[0] = NIT_NULL;
845 fra.me.REG[1] = NIT_NULL;
846 fra.me.REG[2] = NIT_NULL;
847 fra.me.REG[3] = NIT_NULL;
848 fra.me.REG[0] = p0;
849 fra.me.REG[1] = p1;
850 fra.me.REG[2] = p2;
851 fra.me.REG[1] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
852 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
853 /* ./metamodel//partial_order.nit:174 */
854 if (UNTAG_Bool(REGB0)) {
855 } else {
856 fprintf(stderr, "Uninitialized attribute %s", "_elements");
857 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 174);
858 nit_exit(1);
859 }
860 fra.me.REG[0] = ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]);
861 fra.me.REG[0] = CALL_abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
862 while(1) {
863 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
864 if (UNTAG_Bool(REGB0)) {
865 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
866 REGB0 = CALL_partial_order___PartialOrderElement_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
867 /* ./metamodel//partial_order.nit:175 */
868 if (UNTAG_Bool(REGB0)) {
869 fra.me.REG[3] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[3])(fra.me.REG[3]);
870 /* ./metamodel//partial_order.nit:176 */
871 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
872 }
873 } else {
874 /* ./metamodel//partial_order.nit:174 */
875 goto label1;
876 }
877 CALL_abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
878 }
879 label1: while(0);
880 stack_frame_head = fra.me.prev;
881 return;
882 }
883 void partial_order___PartialOrder___init(val_t p0, int* init_table){
884 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_PartialOrder].i;
885 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
886 val_t tmp;
887 if (init_table[itpos0]) return;
888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
889 fra.me.file = LOCATE_partial_order;
890 fra.me.line = 181;
891 fra.me.meth = LOCATE_partial_order___PartialOrder___init;
892 fra.me.has_broke = 0;
893 fra.me.REG_size = 2;
894 fra.me.REG[0] = NIT_NULL;
895 fra.me.REG[1] = NIT_NULL;
896 fra.me.REG[0] = p0;
897 fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
898 /* ./metamodel//partial_order.nit:183 */
899 ATTR_partial_order___PartialOrder____elements(fra.me.REG[0]) = fra.me.REG[1];
900 fra.me.REG[1] = NEW_Array_array___Array___init();
901 /* ./metamodel//partial_order.nit:184 */
902 ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0]) = fra.me.REG[1];
903 fra.me.REG[1] = NEW_Array_array___Array___init();
904 /* ./metamodel//partial_order.nit:185 */
905 ATTR_partial_order___PartialOrder____roots(fra.me.REG[0]) = fra.me.REG[1];
906 stack_frame_head = fra.me.prev;
907 init_table[itpos0] = 1;
908 return;
909 }
910 val_t partial_order___PartialOrderElement___order(val_t p0){
911 struct {struct stack_frame_t me;} fra;
912 val_t REGB0;
913 val_t tmp;
914 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
915 fra.me.file = LOCATE_partial_order;
916 fra.me.line = 190;
917 fra.me.meth = LOCATE_partial_order___PartialOrderElement___order;
918 fra.me.has_broke = 0;
919 fra.me.REG_size = 1;
920 fra.me.REG[0] = NIT_NULL;
921 fra.me.REG[0] = p0;
922 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
923 /* ./metamodel//partial_order.nit:190 */
924 if (UNTAG_Bool(REGB0)) {
925 } else {
926 fprintf(stderr, "Uninitialized attribute %s", "_order");
927 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 190);
928 nit_exit(1);
929 }
930 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
931 stack_frame_head = fra.me.prev;
932 return fra.me.REG[0];
933 }
934 val_t partial_order___PartialOrderElement___value(val_t p0){
935 struct {struct stack_frame_t me;} fra;
936 val_t tmp;
937 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
938 fra.me.file = LOCATE_partial_order;
939 fra.me.line = 193;
940 fra.me.meth = LOCATE_partial_order___PartialOrderElement___value;
941 fra.me.has_broke = 0;
942 fra.me.REG_size = 1;
943 fra.me.REG[0] = NIT_NULL;
944 fra.me.REG[0] = p0;
945 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
946 /* ./metamodel//partial_order.nit:193 */
947 stack_frame_head = fra.me.prev;
948 return fra.me.REG[0];
949 }
950 val_t partial_order___PartialOrderElement___rank(val_t p0){
951 struct {struct stack_frame_t me;} fra;
952 val_t REGB0;
953 val_t tmp;
954 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
955 fra.me.file = LOCATE_partial_order;
956 fra.me.line = 196;
957 fra.me.meth = LOCATE_partial_order___PartialOrderElement___rank;
958 fra.me.has_broke = 0;
959 fra.me.REG_size = 1;
960 fra.me.REG[0] = NIT_NULL;
961 fra.me.REG[0] = p0;
962 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____rank(fra.me.REG[0])!=NIT_NULL);
963 /* ./metamodel//partial_order.nit:196 */
964 if (UNTAG_Bool(REGB0)) {
965 } else {
966 fprintf(stderr, "Uninitialized attribute %s", "_rank");
967 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 196);
968 nit_exit(1);
969 }
970 REGB0 = ATTR_partial_order___PartialOrderElement____rank(fra.me.REG[0]);
971 stack_frame_head = fra.me.prev;
972 return REGB0;
973 }
974 val_t partial_order___PartialOrderElement___direct_greaters(val_t p0){
975 struct {struct stack_frame_t me;} fra;
976 val_t REGB0;
977 val_t tmp;
978 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
979 fra.me.file = LOCATE_partial_order;
980 fra.me.line = 202;
981 fra.me.meth = LOCATE_partial_order___PartialOrderElement___direct_greaters;
982 fra.me.has_broke = 0;
983 fra.me.REG_size = 1;
984 fra.me.REG[0] = NIT_NULL;
985 fra.me.REG[0] = p0;
986 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0])!=NIT_NULL);
987 /* ./metamodel//partial_order.nit:202 */
988 if (UNTAG_Bool(REGB0)) {
989 } else {
990 fprintf(stderr, "Uninitialized attribute %s", "_direct_greaters");
991 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 202);
992 nit_exit(1);
993 }
994 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0]);
995 stack_frame_head = fra.me.prev;
996 return fra.me.REG[0];
997 }
998 val_t partial_order___PartialOrderElement___direct_smallers(val_t p0){
999 struct {struct stack_frame_t me;} fra;
1000 val_t REGB0;
1001 val_t tmp;
1002 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1003 fra.me.file = LOCATE_partial_order;
1004 fra.me.line = 205;
1005 fra.me.meth = LOCATE_partial_order___PartialOrderElement___direct_smallers;
1006 fra.me.has_broke = 0;
1007 fra.me.REG_size = 1;
1008 fra.me.REG[0] = NIT_NULL;
1009 fra.me.REG[0] = p0;
1010 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0])!=NIT_NULL);
1011 /* ./metamodel//partial_order.nit:205 */
1012 if (UNTAG_Bool(REGB0)) {
1013 } else {
1014 fprintf(stderr, "Uninitialized attribute %s", "_direct_smallers");
1015 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 205);
1016 nit_exit(1);
1017 }
1018 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]);
1019 stack_frame_head = fra.me.prev;
1020 return fra.me.REG[0];
1021 }
1022 val_t partial_order___PartialOrderElement___greaters(val_t p0){
1023 struct {struct stack_frame_t me;} fra;
1024 val_t REGB0;
1025 val_t tmp;
1026 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1027 fra.me.file = LOCATE_partial_order;
1028 fra.me.line = 208;
1029 fra.me.meth = LOCATE_partial_order___PartialOrderElement___greaters;
1030 fra.me.has_broke = 0;
1031 fra.me.REG_size = 1;
1032 fra.me.REG[0] = NIT_NULL;
1033 fra.me.REG[0] = p0;
1034 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1035 /* ./metamodel//partial_order.nit:208 */
1036 if (UNTAG_Bool(REGB0)) {
1037 } else {
1038 fprintf(stderr, "Uninitialized attribute %s", "_greaters");
1039 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 208);
1040 nit_exit(1);
1041 }
1042 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1043 stack_frame_head = fra.me.prev;
1044 return fra.me.REG[0];
1045 }
1046 val_t partial_order___PartialOrderElement___greaters_and_self(val_t p0){
1047 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1048 val_t REGB0;
1049 val_t REGB1;
1050 val_t tmp;
1051 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1052 fra.me.file = LOCATE_partial_order;
1053 fra.me.line = 214;
1054 fra.me.meth = LOCATE_partial_order___PartialOrderElement___greaters_and_self;
1055 fra.me.has_broke = 0;
1056 fra.me.REG_size = 3;
1057 fra.me.REG[0] = NIT_NULL;
1058 fra.me.REG[1] = NIT_NULL;
1059 fra.me.REG[2] = NIT_NULL;
1060 fra.me.REG[0] = p0;
1061 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
1062 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1063 /* ./metamodel//partial_order.nit:217 */
1064 if (UNTAG_Bool(REGB0)) {
1065 } else {
1066 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1067 if (UNTAG_Bool(REGB1)) {
1068 REGB1 = TAG_Bool(false);
1069 REGB0 = REGB1;
1070 } else {
1071 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1072 REGB0 = REGB1;
1073 }
1074 }
1075 if (UNTAG_Bool(REGB0)) {
1076 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1077 /* ./metamodel//partial_order.nit:218 */
1078 if (UNTAG_Bool(REGB0)) {
1079 } else {
1080 fprintf(stderr, "Uninitialized attribute %s", "_greaters");
1081 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 218);
1082 nit_exit(1);
1083 }
1084 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1085 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
1086 ATTR_partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]) = fra.me.REG[1];
1087 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
1088 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
1089 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1090 /* ./metamodel//partial_order.nit:219 */
1091 if (UNTAG_Bool(REGB0)) {
1092 fprintf(stderr, "Reciever is null");
1093 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 219);
1094 nit_exit(1);
1095 }
1096 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
1097 }
1098 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
1099 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1100 /* ./metamodel//partial_order.nit:221 */
1101 if (UNTAG_Bool(REGB0)) {
1102 } else {
1103 fprintf(stderr, "Cast failed");
1104 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 221);
1105 nit_exit(1);
1106 }
1107 goto label1;
1108 label1: while(0);
1109 stack_frame_head = fra.me.prev;
1110 return fra.me.REG[0];
1111 }
1112 val_t partial_order___PartialOrderElement___smallers(val_t p0){
1113 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1114 val_t REGB0;
1115 val_t REGB1;
1116 val_t tmp;
1117 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1118 fra.me.file = LOCATE_partial_order;
1119 fra.me.line = 230;
1120 fra.me.meth = LOCATE_partial_order___PartialOrderElement___smallers;
1121 fra.me.has_broke = 0;
1122 fra.me.REG_size = 3;
1123 fra.me.REG[0] = NIT_NULL;
1124 fra.me.REG[1] = NIT_NULL;
1125 fra.me.REG[2] = NIT_NULL;
1126 fra.me.REG[0] = p0;
1127 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0])!=NIT_NULL);
1128 /* ./metamodel//partial_order.nit:233 */
1129 if (UNTAG_Bool(REGB0)) {
1130 } else {
1131 fprintf(stderr, "Uninitialized attribute %s", "_smallers_last_length");
1132 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 233);
1133 nit_exit(1);
1134 }
1135 REGB0 = ATTR_partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]);
1136 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1137 if (UNTAG_Bool(REGB1)) {
1138 } else {
1139 fprintf(stderr, "Uninitialized attribute %s", "_order");
1140 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 233);
1141 nit_exit(1);
1142 }
1143 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1144 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
1145 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1146 /* ./metamodel//partial_order.nit:233 */
1147 if (UNTAG_Bool(REGB1)) {
1148 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1149 /* ./metamodel//partial_order.nit:234 */
1150 if (UNTAG_Bool(REGB1)) {
1151 } else {
1152 fprintf(stderr, "Uninitialized attribute %s", "_order");
1153 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 234);
1154 nit_exit(1);
1155 }
1156 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1157 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
1158 if (UNTAG_Bool(REGB1)) {
1159 } else {
1160 fprintf(stderr, "Uninitialized attribute %s", "_smallers_cache");
1161 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 234);
1162 nit_exit(1);
1163 }
1164 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]);
1165 CALL_partial_order___PartialOrder___compute_smallers_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1166 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1167 /* ./metamodel//partial_order.nit:235 */
1168 if (UNTAG_Bool(REGB1)) {
1169 } else {
1170 fprintf(stderr, "Uninitialized attribute %s", "_order");
1171 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 235);
1172 nit_exit(1);
1173 }
1174 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1175 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1176 ATTR_partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]) = REGB1;
1177 }
1178 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
1179 /* ./metamodel//partial_order.nit:237 */
1180 if (UNTAG_Bool(REGB1)) {
1181 } else {
1182 fprintf(stderr, "Uninitialized attribute %s", "_smallers_cache");
1183 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 237);
1184 nit_exit(1);
1185 }
1186 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]);
1187 goto label1;
1188 label1: while(0);
1189 stack_frame_head = fra.me.prev;
1190 return fra.me.REG[0];
1191 }
1192 val_t partial_order___PartialOrderElement___linear_extension(val_t p0){
1193 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1194 val_t REGB0;
1195 val_t REGB1;
1196 val_t tmp;
1197 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1198 fra.me.file = LOCATE_partial_order;
1199 fra.me.line = 243;
1200 fra.me.meth = LOCATE_partial_order___PartialOrderElement___linear_extension;
1201 fra.me.has_broke = 0;
1202 fra.me.REG_size = 7;
1203 fra.me.REG[0] = NIT_NULL;
1204 fra.me.REG[1] = NIT_NULL;
1205 fra.me.REG[2] = NIT_NULL;
1206 fra.me.REG[3] = NIT_NULL;
1207 fra.me.REG[4] = NIT_NULL;
1208 fra.me.REG[5] = NIT_NULL;
1209 fra.me.REG[6] = NIT_NULL;
1210 fra.me.REG[0] = p0;
1211 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
1212 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1213 /* ./metamodel//partial_order.nit:247 */
1214 if (UNTAG_Bool(REGB0)) {
1215 } else {
1216 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1217 if (UNTAG_Bool(REGB1)) {
1218 REGB1 = TAG_Bool(false);
1219 REGB0 = REGB1;
1220 } else {
1221 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1222 REGB0 = REGB1;
1223 }
1224 }
1225 if (UNTAG_Bool(REGB0)) {
1226 fra.me.REG[1] = NEW_Array_array___Array___init();
1227 fra.me.REG[2] = NEW_Array_array___Array___init();
1228 fra.me.REG[3] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
1229 /* ./metamodel//partial_order.nit:250 */
1230 array___Array___add(fra.me.REG[1], fra.me.REG[3]);
1231 fra.me.REG[3] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
1232 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
1233 /* ./metamodel//partial_order.nit:251 */
1234 while(1) {
1235 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
1236 if (UNTAG_Bool(REGB0)) {
1237 fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
1238 fra.me.REG[5] = CALL_partial_order___PartialOrderElement___order(fra.me.REG[0])(fra.me.REG[0]);
1239 fra.me.REG[4] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1240 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___linear_extension(fra.me.REG[4])(fra.me.REG[4]);
1241 /* ./metamodel//partial_order.nit:253 */
1242 CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
1243 fra.me.REG[5] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
1244 /* ./metamodel//partial_order.nit:254 */
1245 while(1) {
1246 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[5])(fra.me.REG[5]);
1247 if (UNTAG_Bool(REGB0)) {
1248 fra.me.REG[6] = CALL_abstract_collection___Iterator___item(fra.me.REG[5])(fra.me.REG[5]);
1249 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
1250 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1251 /* ./metamodel//partial_order.nit:255 */
1252 if (UNTAG_Bool(REGB0)) {
1253 array___Array___add(fra.me.REG[2], fra.me.REG[6]);
1254 }
1255 } else {
1256 /* ./metamodel//partial_order.nit:254 */
1257 goto label1;
1258 }
1259 CALL_abstract_collection___Iterator___next(fra.me.REG[5])(fra.me.REG[5]);
1260 }
1261 label1: while(0);
1262 /* ./metamodel//partial_order.nit:257 */
1263 CALL_abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1264 fra.me.REG[4] = fra.me.REG[1];
1265 fra.me.REG[1] = fra.me.REG[2];
1266 fra.me.REG[2] = fra.me.REG[4];
1267 /* ./metamodel//partial_order.nit:261 */
1268 } else {
1269 /* ./metamodel//partial_order.nit:251 */
1270 goto label2;
1271 }
1272 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
1273 }
1274 label2: while(0);
1275 /* ./metamodel//partial_order.nit:263 */
1276 ATTR_partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]) = fra.me.REG[1];
1277 }
1278 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
1279 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1280 /* ./metamodel//partial_order.nit:265 */
1281 if (UNTAG_Bool(REGB0)) {
1282 } else {
1283 fprintf(stderr, "Cast failed");
1284 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 265);
1285 nit_exit(1);
1286 }
1287 goto label3;
1288 label3: while(0);
1289 stack_frame_head = fra.me.prev;
1290 return fra.me.REG[0];
1291 }
1292 val_t partial_order___PartialOrderElement___reverse_linear_extension(val_t p0){
1293 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1294 val_t REGB0;
1295 val_t REGB1;
1296 val_t tmp;
1297 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1298 fra.me.file = LOCATE_partial_order;
1299 fra.me.line = 271;
1300 fra.me.meth = LOCATE_partial_order___PartialOrderElement___reverse_linear_extension;
1301 fra.me.has_broke = 0;
1302 fra.me.REG_size = 5;
1303 fra.me.REG[0] = NIT_NULL;
1304 fra.me.REG[1] = NIT_NULL;
1305 fra.me.REG[2] = NIT_NULL;
1306 fra.me.REG[3] = NIT_NULL;
1307 fra.me.REG[4] = NIT_NULL;
1308 fra.me.REG[0] = p0;
1309 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____reverse_linear_extension_cache(fra.me.REG[0]);
1310 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1311 /* ./metamodel//partial_order.nit:275 */
1312 if (UNTAG_Bool(REGB0)) {
1313 } else {
1314 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1315 if (UNTAG_Bool(REGB1)) {
1316 REGB1 = TAG_Bool(false);
1317 REGB0 = REGB1;
1318 } else {
1319 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1320 REGB0 = REGB1;
1321 }
1322 }
1323 if (UNTAG_Bool(REGB0)) {
1324 fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
1325 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
1326 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
1327 /* ./metamodel//partial_order.nit:277 */
1328 while(1) {
1329 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
1330 if (UNTAG_Bool(REGB0)) {
1331 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
1332 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___order(fra.me.REG[0])(fra.me.REG[0]);
1333 fra.me.REG[3] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1334 fra.me.REG[3] = CALL_partial_order___PartialOrderElement___linear_extension(fra.me.REG[3])(fra.me.REG[3]);
1335 /* ./metamodel//partial_order.nit:279 */
1336 CALL_abstract_collection___SimpleCollection___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1337 } else {
1338 /* ./metamodel//partial_order.nit:277 */
1339 goto label1;
1340 }
1341 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
1342 }
1343 label1: while(0);
1344 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
1345 /* ./metamodel//partial_order.nit:281 */
1346 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1347 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
1348 /* ./metamodel//partial_order.nit:282 */
1349 ATTR_partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]) = fra.me.REG[1];
1350 }
1351 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
1352 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1353 /* ./metamodel//partial_order.nit:284 */
1354 if (UNTAG_Bool(REGB0)) {
1355 } else {
1356 fprintf(stderr, "Cast failed");
1357 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 284);
1358 nit_exit(1);
1359 }
1360 goto label2;
1361 label2: while(0);
1362 stack_frame_head = fra.me.prev;
1363 return fra.me.REG[0];
1364 }
1365 val_t partial_order___PartialOrderElement_____l(val_t p0, val_t p1){
1366 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1367 val_t REGB0;
1368 val_t tmp;
1369 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1370 fra.me.file = LOCATE_partial_order;
1371 fra.me.line = 287;
1372 fra.me.meth = LOCATE_partial_order___PartialOrderElement_____l;
1373 fra.me.has_broke = 0;
1374 fra.me.REG_size = 2;
1375 fra.me.REG[0] = NIT_NULL;
1376 fra.me.REG[1] = NIT_NULL;
1377 fra.me.REG[0] = p0;
1378 fra.me.REG[1] = p1;
1379 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1380 /* ./metamodel//partial_order.nit:290 */
1381 if (UNTAG_Bool(REGB0)) {
1382 } else {
1383 fprintf(stderr, "Uninitialized attribute %s", "_greaters");
1384 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 290);
1385 nit_exit(1);
1386 }
1387 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1388 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1389 goto label1;
1390 label1: while(0);
1391 stack_frame_head = fra.me.prev;
1392 return REGB0;
1393 }
1394 val_t partial_order___PartialOrderElement_____leq(val_t p0, val_t p1){
1395 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1396 val_t REGB0;
1397 val_t REGB1;
1398 val_t tmp;
1399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1400 fra.me.file = LOCATE_partial_order;
1401 fra.me.line = 293;
1402 fra.me.meth = LOCATE_partial_order___PartialOrderElement_____leq;
1403 fra.me.has_broke = 0;
1404 fra.me.REG_size = 3;
1405 fra.me.REG[0] = NIT_NULL;
1406 fra.me.REG[1] = NIT_NULL;
1407 fra.me.REG[2] = NIT_NULL;
1408 fra.me.REG[0] = p0;
1409 fra.me.REG[1] = p1;
1410 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
1411 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
1412 /* ./metamodel//partial_order.nit:296 */
1413 if (UNTAG_Bool(REGB0)) {
1414 } else {
1415 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1416 if (UNTAG_Bool(REGB1)) {
1417 REGB1 = TAG_Bool(false);
1418 REGB0 = REGB1;
1419 } else {
1420 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1421 REGB0 = REGB1;
1422 }
1423 }
1424 if (UNTAG_Bool(REGB0)) {
1425 REGB0 = TAG_Bool(true);
1426 } else {
1427 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1428 if (UNTAG_Bool(REGB1)) {
1429 } else {
1430 fprintf(stderr, "Uninitialized attribute %s", "_greaters");
1431 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 296);
1432 nit_exit(1);
1433 }
1434 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1435 REGB1 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1436 REGB0 = REGB1;
1437 }
1438 goto label1;
1439 label1: while(0);
1440 stack_frame_head = fra.me.prev;
1441 return REGB0;
1442 }
1443 val_t partial_order___PartialOrderElement_____g(val_t p0, val_t p1){
1444 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1445 val_t REGB0;
1446 val_t tmp;
1447 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1448 fra.me.file = LOCATE_partial_order;
1449 fra.me.line = 299;
1450 fra.me.meth = LOCATE_partial_order___PartialOrderElement_____g;
1451 fra.me.has_broke = 0;
1452 fra.me.REG_size = 3;
1453 fra.me.REG[0] = NIT_NULL;
1454 fra.me.REG[1] = NIT_NULL;
1455 fra.me.REG[2] = NIT_NULL;
1456 fra.me.REG[0] = p0;
1457 fra.me.REG[1] = p1;
1458 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1459 /* ./metamodel//partial_order.nit:302 */
1460 if (UNTAG_Bool(REGB0)) {
1461 } else {
1462 fprintf(stderr, "Uninitialized attribute %s", "_order");
1463 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 302);
1464 nit_exit(1);
1465 }
1466 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1467 fra.me.REG[1] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1468 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
1469 REGB0 = CALL_partial_order___PartialOrderElement_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1470 goto label1;
1471 label1: while(0);
1472 stack_frame_head = fra.me.prev;
1473 return REGB0;
1474 }
1475 val_t partial_order___PartialOrderElement_____geq(val_t p0, val_t p1){
1476 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1477 val_t REGB0;
1478 val_t REGB1;
1479 val_t tmp;
1480 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1481 fra.me.file = LOCATE_partial_order;
1482 fra.me.line = 305;
1483 fra.me.meth = LOCATE_partial_order___PartialOrderElement_____geq;
1484 fra.me.has_broke = 0;
1485 fra.me.REG_size = 3;
1486 fra.me.REG[0] = NIT_NULL;
1487 fra.me.REG[1] = NIT_NULL;
1488 fra.me.REG[2] = NIT_NULL;
1489 fra.me.REG[0] = p0;
1490 fra.me.REG[1] = p1;
1491 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
1492 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
1493 /* ./metamodel//partial_order.nit:308 */
1494 if (UNTAG_Bool(REGB0)) {
1495 } else {
1496 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1497 if (UNTAG_Bool(REGB1)) {
1498 REGB1 = TAG_Bool(false);
1499 REGB0 = REGB1;
1500 } else {
1501 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1502 REGB0 = REGB1;
1503 }
1504 }
1505 if (UNTAG_Bool(REGB0)) {
1506 REGB0 = TAG_Bool(true);
1507 } else {
1508 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1509 if (UNTAG_Bool(REGB1)) {
1510 } else {
1511 fprintf(stderr, "Uninitialized attribute %s", "_order");
1512 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 308);
1513 nit_exit(1);
1514 }
1515 fra.me.REG[2] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1516 fra.me.REG[1] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1517 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]);
1518 REGB1 = CALL_partial_order___PartialOrderElement_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1519 REGB0 = REGB1;
1520 }
1521 goto label1;
1522 label1: while(0);
1523 stack_frame_head = fra.me.prev;
1524 return REGB0;
1525 }
1526 void partial_order___PartialOrderElement___register_direct_smallers(val_t p0, val_t p1){
1527 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1528 val_t REGB0;
1529 val_t tmp;
1530 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1531 fra.me.file = LOCATE_partial_order;
1532 fra.me.line = 311;
1533 fra.me.meth = LOCATE_partial_order___PartialOrderElement___register_direct_smallers;
1534 fra.me.has_broke = 0;
1535 fra.me.REG_size = 2;
1536 fra.me.REG[0] = NIT_NULL;
1537 fra.me.REG[1] = NIT_NULL;
1538 fra.me.REG[0] = p0;
1539 fra.me.REG[1] = p1;
1540 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0])!=NIT_NULL);
1541 /* ./metamodel//partial_order.nit:313 */
1542 if (UNTAG_Bool(REGB0)) {
1543 } else {
1544 fprintf(stderr, "Uninitialized attribute %s", "_direct_smallers");
1545 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 313);
1546 nit_exit(1);
1547 }
1548 fra.me.REG[0] = ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]);
1549 array___Array___add(fra.me.REG[0], fra.me.REG[1]);
1550 stack_frame_head = fra.me.prev;
1551 return;
1552 }
1553 void partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
1554 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_PartialOrderElement].i;
1555 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1556 val_t REGB0;
1557 val_t REGB1;
1558 val_t REGB2;
1559 val_t tmp;
1560 if (init_table[itpos1]) return;
1561 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1562 fra.me.file = LOCATE_partial_order;
1563 fra.me.line = 316;
1564 fra.me.meth = LOCATE_partial_order___PartialOrderElement___init;
1565 fra.me.has_broke = 0;
1566 fra.me.REG_size = 6;
1567 fra.me.REG[0] = NIT_NULL;
1568 fra.me.REG[1] = NIT_NULL;
1569 fra.me.REG[2] = NIT_NULL;
1570 fra.me.REG[3] = NIT_NULL;
1571 fra.me.REG[4] = NIT_NULL;
1572 fra.me.REG[5] = NIT_NULL;
1573 fra.me.REG[0] = p0;
1574 fra.me.REG[1] = p1;
1575 fra.me.REG[2] = p2;
1576 fra.me.REG[3] = p3;
1577 /* ./metamodel//partial_order.nit:318 */
1578 ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]) = fra.me.REG[1];
1579 /* ./metamodel//partial_order.nit:319 */
1580 ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0]) = fra.me.REG[2];
1581 /* ./metamodel//partial_order.nit:320 */
1582 ATTR_partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0]) = fra.me.REG[3];
1583 fra.me.REG[1] = NEW_Array_array___Array___init();
1584 /* ./metamodel//partial_order.nit:321 */
1585 ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]) = fra.me.REG[1];
1586 fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
1587 /* ./metamodel//partial_order.nit:323 */
1588 ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]) = fra.me.REG[1];
1589 fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
1590 /* ./metamodel//partial_order.nit:324 */
1591 ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]) = fra.me.REG[1];
1592 REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1593 /* ./metamodel//partial_order.nit:326 */
1594 if (UNTAG_Bool(REGB0)) {
1595 } else {
1596 fprintf(stderr, "Uninitialized attribute %s", "_greaters");
1597 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 326);
1598 nit_exit(1);
1599 }
1600 fra.me.REG[1] = ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1601 REGB0 = TAG_Int(0);
1602 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
1603 /* ./metamodel//partial_order.nit:328 */
1604 while(1) {
1605 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
1606 if (UNTAG_Bool(REGB1)) {
1607 fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
1608 /* ./metamodel//partial_order.nit:329 */
1609 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1610 REGB1 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1611 /* ./metamodel//partial_order.nit:330 */
1612 if (UNTAG_Bool(REGB1)) {
1613 } else {
1614 fprintf(stderr, "Uninitialized attribute %s", "_order");
1615 fprintf(stderr, " (%s:%d)\n", LOCATE_partial_order, 330);
1616 nit_exit(1);
1617 }
1618 fra.me.REG[5] = ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0]);
1619 fra.me.REG[4] = CALL_partial_order___PartialOrder_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1620 REGB1 = CALL_partial_order___PartialOrderElement___rank(fra.me.REG[4])(fra.me.REG[4]);
1621 REGB1 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
1622 /* ./metamodel//partial_order.nit:331 */
1623 if (UNTAG_Bool(REGB1)) {
1624 REGB1 = CALL_partial_order___PartialOrderElement___rank(fra.me.REG[4])(fra.me.REG[4]);
1625 REGB2 = TAG_Int(1);
1626 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1627 REGB0 = REGB2;
1628 /* ./metamodel//partial_order.nit:332 */
1629 }
1630 /* ./metamodel//partial_order.nit:334 */
1631 CALL_partial_order___PartialOrderElement___register_direct_smallers(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1632 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___greaters(fra.me.REG[4])(fra.me.REG[4]);
1633 fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
1634 /* ./metamodel//partial_order.nit:335 */
1635 while(1) {
1636 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
1637 if (UNTAG_Bool(REGB2)) {
1638 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
1639 /* ./metamodel//partial_order.nit:336 */
1640 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
1641 } else {
1642 /* ./metamodel//partial_order.nit:335 */
1643 goto label1;
1644 }
1645 CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
1646 }
1647 label1: while(0);
1648 } else {
1649 /* ./metamodel//partial_order.nit:328 */
1650 goto label2;
1651 }
1652 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
1653 }
1654 label2: while(0);
1655 /* ./metamodel//partial_order.nit:339 */
1656 ATTR_partial_order___PartialOrderElement____rank(fra.me.REG[0]) = REGB0;
1657 stack_frame_head = fra.me.prev;
1658 init_table[itpos1] = 1;
1659 return;
1660 }