a857a667a17da39de60f777a404334cd2fd13c14
[nit.git] / c_src / metamodel___partial_order._sep.c
1 /* This C file is generated by NIT to compile module metamodel___partial_order. */
2 #include "metamodel___partial_order._sep.h"
3 val_t metamodel___partial_order___PartialOrder___roots(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_metamodel___partial_order;
9 fra.me.line = 30;
10 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___roots;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.nitni_local_ref_head = NULL;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 /* ./metamodel//partial_order.nit:30 */
17 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
18 if (UNTAG_Bool(REGB0)) {
19 } else {
20 nit_abort("Uninitialized attribute %s", "_roots", LOCATE_metamodel___partial_order, 30);
21 }
22 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0]);
23 stack_frame_head = fra.me.prev;
24 return fra.me.REG[0];
25 }
26 val_t metamodel___partial_order___PartialOrder___is_empty(val_t p0){
27 struct {struct stack_frame_t me;} fra;
28 val_t REGB0;
29 val_t tmp;
30 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
31 fra.me.file = LOCATE_metamodel___partial_order;
32 fra.me.line = 35;
33 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___is_empty;
34 fra.me.has_broke = 0;
35 fra.me.REG_size = 1;
36 fra.me.nitni_local_ref_head = NULL;
37 fra.me.REG[0] = NIT_NULL;
38 fra.me.REG[0] = p0;
39 /* ./metamodel//partial_order.nit:35 */
40 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
41 if (UNTAG_Bool(REGB0)) {
42 } else {
43 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 35);
44 }
45 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
46 REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
47 goto label1;
48 label1: while(0);
49 stack_frame_head = fra.me.prev;
50 return REGB0;
51 }
52 val_t metamodel___partial_order___PartialOrder___length(val_t p0){
53 struct {struct stack_frame_t me;} fra;
54 val_t REGB0;
55 val_t tmp;
56 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
57 fra.me.file = LOCATE_metamodel___partial_order;
58 fra.me.line = 37;
59 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___length;
60 fra.me.has_broke = 0;
61 fra.me.REG_size = 1;
62 fra.me.nitni_local_ref_head = NULL;
63 fra.me.REG[0] = NIT_NULL;
64 fra.me.REG[0] = p0;
65 /* ./metamodel//partial_order.nit:37 */
66 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
67 if (UNTAG_Bool(REGB0)) {
68 } else {
69 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 37);
70 }
71 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
72 REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[0])(fra.me.REG[0]);
73 goto label1;
74 label1: while(0);
75 stack_frame_head = fra.me.prev;
76 return REGB0;
77 }
78 val_t metamodel___partial_order___PartialOrder___first(val_t p0){
79 struct {struct stack_frame_t me;} fra;
80 val_t REGB0;
81 val_t tmp;
82 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
83 fra.me.file = LOCATE_metamodel___partial_order;
84 fra.me.line = 39;
85 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___first;
86 fra.me.has_broke = 0;
87 fra.me.REG_size = 1;
88 fra.me.nitni_local_ref_head = NULL;
89 fra.me.REG[0] = NIT_NULL;
90 fra.me.REG[0] = p0;
91 /* ./metamodel//partial_order.nit:39 */
92 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
93 if (UNTAG_Bool(REGB0)) {
94 } else {
95 nit_abort("Uninitialized attribute %s", "_elements_list", LOCATE_metamodel___partial_order, 39);
96 }
97 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0]);
98 fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
99 goto label1;
100 label1: while(0);
101 stack_frame_head = fra.me.prev;
102 return fra.me.REG[0];
103 }
104 val_t metamodel___partial_order___PartialOrder___has(val_t p0, val_t p1){
105 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
106 val_t REGB0;
107 val_t tmp;
108 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
109 fra.me.file = LOCATE_metamodel___partial_order;
110 fra.me.line = 41;
111 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___has;
112 fra.me.has_broke = 0;
113 fra.me.REG_size = 2;
114 fra.me.nitni_local_ref_head = NULL;
115 fra.me.REG[0] = NIT_NULL;
116 fra.me.REG[1] = NIT_NULL;
117 fra.me.REG[0] = p0;
118 fra.me.REG[1] = p1;
119 /* ./metamodel//partial_order.nit:41 */
120 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
121 if (UNTAG_Bool(REGB0)) {
122 } else {
123 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 41);
124 }
125 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
126 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
127 goto label1;
128 label1: while(0);
129 stack_frame_head = fra.me.prev;
130 return REGB0;
131 }
132 val_t metamodel___partial_order___PartialOrder___has_only(val_t p0, val_t p1){
133 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
134 val_t REGB0;
135 val_t REGB1;
136 val_t REGB2;
137 val_t tmp;
138 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
139 fra.me.file = LOCATE_metamodel___partial_order;
140 fra.me.line = 43;
141 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___has_only;
142 fra.me.has_broke = 0;
143 fra.me.REG_size = 3;
144 fra.me.nitni_local_ref_head = NULL;
145 fra.me.REG[0] = NIT_NULL;
146 fra.me.REG[1] = NIT_NULL;
147 fra.me.REG[2] = NIT_NULL;
148 fra.me.REG[0] = p0;
149 fra.me.REG[1] = p1;
150 /* ./metamodel//partial_order.nit:43 */
151 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
152 if (UNTAG_Bool(REGB0)) {
153 } else {
154 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 43);
155 }
156 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
157 REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[2])(fra.me.REG[2]);
158 REGB1 = TAG_Int(1);
159 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
160 if (UNTAG_Bool(REGB2)) {
161 } else {
162 /* ./../lib/standard//kernel.nit:227 */
163 REGB1 = TAG_Bool((REGB0)==(REGB1));
164 /* ./metamodel//partial_order.nit:43 */
165 REGB2 = REGB1;
166 }
167 if (UNTAG_Bool(REGB2)) {
168 REGB2 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
169 if (UNTAG_Bool(REGB2)) {
170 } else {
171 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 43);
172 }
173 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
174 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
175 fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
176 REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[0]));
177 if (UNTAG_Bool(REGB2)) {
178 } else {
179 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
180 if (UNTAG_Bool(REGB1)) {
181 REGB1 = TAG_Bool(false);
182 REGB2 = REGB1;
183 } else {
184 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
185 REGB2 = REGB1;
186 }
187 }
188 } else {
189 REGB1 = TAG_Bool(false);
190 REGB2 = REGB1;
191 }
192 goto label1;
193 label1: while(0);
194 stack_frame_head = fra.me.prev;
195 return REGB2;
196 }
197 val_t metamodel___partial_order___PartialOrder___count(val_t p0, val_t p1){
198 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
199 val_t REGB0;
200 val_t REGB1;
201 val_t tmp;
202 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
203 fra.me.file = LOCATE_metamodel___partial_order;
204 fra.me.line = 45;
205 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___count;
206 fra.me.has_broke = 0;
207 fra.me.REG_size = 2;
208 fra.me.nitni_local_ref_head = NULL;
209 fra.me.REG[0] = NIT_NULL;
210 fra.me.REG[1] = NIT_NULL;
211 fra.me.REG[0] = p0;
212 fra.me.REG[1] = p1;
213 /* ./metamodel//partial_order.nit:47 */
214 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
215 if (UNTAG_Bool(REGB0)) {
216 /* ./metamodel//partial_order.nit:48 */
217 REGB0 = TAG_Int(1);
218 goto label1;
219 } else {
220 /* ./metamodel//partial_order.nit:50 */
221 REGB1 = TAG_Int(0);
222 REGB0 = REGB1;
223 goto label1;
224 }
225 label1: while(0);
226 stack_frame_head = fra.me.prev;
227 return REGB0;
228 }
229 val_t metamodel___partial_order___PartialOrder___iterator(val_t p0){
230 struct {struct stack_frame_t me;} fra;
231 val_t REGB0;
232 val_t tmp;
233 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
234 fra.me.file = LOCATE_metamodel___partial_order;
235 fra.me.line = 54;
236 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___iterator;
237 fra.me.has_broke = 0;
238 fra.me.REG_size = 1;
239 fra.me.nitni_local_ref_head = NULL;
240 fra.me.REG[0] = NIT_NULL;
241 fra.me.REG[0] = p0;
242 /* ./metamodel//partial_order.nit:54 */
243 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
244 if (UNTAG_Bool(REGB0)) {
245 } else {
246 nit_abort("Uninitialized attribute %s", "_elements_list", LOCATE_metamodel___partial_order, 54);
247 }
248 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0]);
249 fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
250 goto label1;
251 label1: while(0);
252 stack_frame_head = fra.me.prev;
253 return fra.me.REG[0];
254 }
255 val_t metamodel___partial_order___PartialOrder_____bra(val_t p0, val_t p1){
256 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
257 val_t REGB0;
258 val_t tmp;
259 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
260 fra.me.file = LOCATE_metamodel___partial_order;
261 fra.me.line = 58;
262 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder_____bra;
263 fra.me.has_broke = 0;
264 fra.me.REG_size = 2;
265 fra.me.nitni_local_ref_head = NULL;
266 fra.me.REG[0] = NIT_NULL;
267 fra.me.REG[1] = NIT_NULL;
268 fra.me.REG[0] = p0;
269 fra.me.REG[1] = p1;
270 /* ./metamodel//partial_order.nit:61 */
271 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
272 if (UNTAG_Bool(REGB0)) {
273 } else {
274 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 61);
275 }
276 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
277 fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
278 goto label1;
279 label1: while(0);
280 stack_frame_head = fra.me.prev;
281 return fra.me.REG[1];
282 }
283 val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
284 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
285 val_t REGB0;
286 val_t tmp;
287 static val_t once_value_3; /* Once value */
288 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
289 fra.me.file = LOCATE_metamodel___partial_order;
290 fra.me.line = 64;
291 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___to_dot;
292 fra.me.has_broke = 0;
293 fra.me.REG_size = 3;
294 fra.me.nitni_local_ref_head = NULL;
295 fra.me.REG[0] = NIT_NULL;
296 fra.me.REG[1] = NIT_NULL;
297 fra.me.REG[2] = NIT_NULL;
298 fra.me.REG[0] = p0;
299 /* ./metamodel//partial_order.nit:67 */
300 fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
301 /* ./metamodel//partial_order.nit:68 */
302 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrder___to_dot_header(fra.me.REG[0])(fra.me.REG[0]);
303 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
304 /* ./metamodel//partial_order.nit:69 */
305 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
306 if (UNTAG_Bool(REGB0)) {
307 } else {
308 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 69);
309 }
310 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
311 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
312 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrder___to_dot_1));
313 /* ./metamodel//partial_order.nit:75 */
314 if (!once_value_3) {
315 fra.me.REG[0] = BOX_NativeString("}\n");
316 REGB0 = TAG_Int(2);
317 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
318 once_value_3 = fra.me.REG[0];
319 register_static_object(&once_value_3);
320 } else fra.me.REG[0] = once_value_3;
321 fra.me.REG[0] = fra.me.REG[0];
322 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
323 /* ./metamodel//partial_order.nit:76 */
324 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
325 goto label4;
326 label4: while(0);
327 stack_frame_head = fra.me.prev;
328 return fra.me.REG[1];
329 }
330 void OC_metamodel___partial_order___PartialOrder___to_dot_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
331 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
332 val_t REGB0;
333 val_t REGB1;
334 val_t REGB2;
335 fun_t CREG[1];
336 val_t tmp;
337 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
338 fra.me.file = LOCATE_metamodel___partial_order;
339 fra.me.line = 0;
340 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___to_dot;
341 fra.me.has_broke = 0;
342 fra.me.REG_size = 5;
343 fra.me.nitni_local_ref_head = NULL;
344 fra.me.REG[0] = NIT_NULL;
345 fra.me.REG[1] = NIT_NULL;
346 fra.me.REG[2] = NIT_NULL;
347 fra.me.REG[3] = NIT_NULL;
348 fra.me.REG[4] = NIT_NULL;
349 fra.me.closure_ctx = closctx_param;
350 fra.me.closure_funs = CREG;
351 fra.me.REG[0] = p0;
352 CREG[0] = clos_fun0;
353 /* ./metamodel//partial_order.nit:70 */
354 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
355 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrder___to_dot_node(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
356 CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
357 /* ./metamodel//partial_order.nit:71 */
358 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
359 /* ./../lib/standard//collection//array.nit:269 */
360 REGB0 = TAG_Int(0);
361 /* ./../lib/standard//collection//array.nit:270 */
362 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
363 if (UNTAG_Bool(REGB1)) {
364 } else {
365 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
366 }
367 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
368 /* ./../lib/standard//collection//array.nit:271 */
369 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
370 /* ./../lib/standard//collection//array.nit:272 */
371 while(1) {
372 /* ./../lib/standard//collection//array.nit:24 */
373 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
374 if (UNTAG_Bool(REGB1)) {
375 } else {
376 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
377 }
378 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
379 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
380 if (UNTAG_Bool(REGB2)) {
381 } else {
382 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
383 }
384 /* ./../lib/standard//kernel.nit:232 */
385 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
386 /* ./../lib/standard//collection//array.nit:272 */
387 if (UNTAG_Bool(REGB1)) {
388 /* ./../lib/standard//collection//array.nit:273 */
389 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
390 if (UNTAG_Bool(REGB1)) {
391 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
392 }
393 /* ./../lib/standard//collection//array.nit:718 */
394 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
395 /* ./metamodel//partial_order.nit:72 */
396 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
397 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___to_dot_edge(closctx->REG[0])(closctx->REG[0], fra.me.REG[4], fra.me.REG[3]);
398 CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[1])(closctx->REG[1], fra.me.REG[3]);
399 /* ./../lib/standard//collection//array.nit:274 */
400 REGB1 = TAG_Int(1);
401 /* ./../lib/standard//kernel.nit:235 */
402 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
403 /* ./../lib/standard//collection//array.nit:274 */
404 REGB0 = REGB1;
405 } else {
406 /* ./../lib/standard//collection//array.nit:272 */
407 goto label2;
408 }
409 }
410 label2: while(0);
411 stack_frame_head = fra.me.prev;
412 return;
413 }
414 val_t metamodel___partial_order___PartialOrder___to_dot_header(val_t p0){
415 struct {struct stack_frame_t me;} fra;
416 val_t REGB0;
417 val_t tmp;
418 static val_t once_value_1; /* Once value */
419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
420 fra.me.file = LOCATE_metamodel___partial_order;
421 fra.me.line = 79;
422 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___to_dot_header;
423 fra.me.has_broke = 0;
424 fra.me.REG_size = 1;
425 fra.me.nitni_local_ref_head = NULL;
426 fra.me.REG[0] = NIT_NULL;
427 fra.me.REG[0] = p0;
428 /* ./metamodel//partial_order.nit:82 */
429 if (!once_value_1) {
430 fra.me.REG[0] = BOX_NativeString("digraph G {\ngraph [rankdir=BT];\n");
431 REGB0 = TAG_Int(32);
432 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
433 once_value_1 = fra.me.REG[0];
434 register_static_object(&once_value_1);
435 } else fra.me.REG[0] = once_value_1;
436 fra.me.REG[0] = fra.me.REG[0];
437 goto label2;
438 label2: while(0);
439 stack_frame_head = fra.me.prev;
440 return fra.me.REG[0];
441 }
442 val_t metamodel___partial_order___PartialOrder___to_dot_node(val_t p0, val_t p1){
443 struct {struct stack_frame_t me; val_t MORE_REG[2];} 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 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
449 fra.me.file = LOCATE_metamodel___partial_order;
450 fra.me.line = 85;
451 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___to_dot_node;
452 fra.me.has_broke = 0;
453 fra.me.REG_size = 3;
454 fra.me.nitni_local_ref_head = NULL;
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[0] = p0;
459 fra.me.REG[1] = p1;
460 /* ./metamodel//partial_order.nit:88 */
461 REGB0 = TAG_Int(3);
462 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
463 if (!once_value_1) {
464 fra.me.REG[2] = BOX_NativeString("\"");
465 REGB0 = TAG_Int(1);
466 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
467 once_value_1 = fra.me.REG[2];
468 register_static_object(&once_value_1);
469 } else fra.me.REG[2] = once_value_1;
470 fra.me.REG[2] = fra.me.REG[2];
471 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
472 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
473 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
474 if (!once_value_2) {
475 fra.me.REG[1] = BOX_NativeString("\";\n");
476 REGB0 = TAG_Int(3);
477 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
478 once_value_2 = fra.me.REG[1];
479 register_static_object(&once_value_2);
480 } else fra.me.REG[1] = once_value_2;
481 fra.me.REG[1] = fra.me.REG[1];
482 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
483 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
484 goto label3;
485 label3: while(0);
486 stack_frame_head = fra.me.prev;
487 return fra.me.REG[0];
488 }
489 val_t metamodel___partial_order___PartialOrder___to_dot_edge(val_t p0, val_t p1, val_t p2){
490 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
491 val_t REGB0;
492 val_t tmp;
493 static val_t once_value_1; /* Once value */
494 static val_t once_value_2; /* Once value */
495 static val_t once_value_3; /* Once value */
496 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
497 fra.me.file = LOCATE_metamodel___partial_order;
498 fra.me.line = 91;
499 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___to_dot_edge;
500 fra.me.has_broke = 0;
501 fra.me.REG_size = 4;
502 fra.me.nitni_local_ref_head = NULL;
503 fra.me.REG[0] = NIT_NULL;
504 fra.me.REG[1] = NIT_NULL;
505 fra.me.REG[2] = NIT_NULL;
506 fra.me.REG[3] = NIT_NULL;
507 fra.me.REG[0] = p0;
508 fra.me.REG[1] = p1;
509 fra.me.REG[2] = p2;
510 /* ./metamodel//partial_order.nit:94 */
511 REGB0 = TAG_Int(5);
512 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
513 if (!once_value_1) {
514 fra.me.REG[3] = BOX_NativeString("\"");
515 REGB0 = TAG_Int(1);
516 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
517 once_value_1 = fra.me.REG[3];
518 register_static_object(&once_value_1);
519 } else fra.me.REG[3] = once_value_1;
520 fra.me.REG[3] = fra.me.REG[3];
521 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
522 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
524 if (!once_value_2) {
525 fra.me.REG[1] = BOX_NativeString("\" -> \"");
526 REGB0 = TAG_Int(6);
527 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
528 once_value_2 = fra.me.REG[1];
529 register_static_object(&once_value_2);
530 } else fra.me.REG[1] = once_value_2;
531 fra.me.REG[1] = fra.me.REG[1];
532 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
533 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
534 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
535 if (!once_value_3) {
536 fra.me.REG[2] = BOX_NativeString("\";\n");
537 REGB0 = TAG_Int(3);
538 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
539 once_value_3 = fra.me.REG[2];
540 register_static_object(&once_value_3);
541 } else fra.me.REG[2] = once_value_3;
542 fra.me.REG[2] = fra.me.REG[2];
543 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
544 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
545 goto label4;
546 label4: while(0);
547 stack_frame_head = fra.me.prev;
548 return fra.me.REG[0];
549 }
550 val_t metamodel___partial_order___PartialOrder___select_smallests(val_t p0, val_t p1){
551 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
552 val_t REGB0;
553 val_t REGB1;
554 val_t tmp;
555 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
556 fra.me.file = LOCATE_metamodel___partial_order;
557 fra.me.line = 97;
558 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___select_smallests;
559 fra.me.has_broke = 0;
560 fra.me.REG_size = 5;
561 fra.me.nitni_local_ref_head = NULL;
562 fra.me.REG[0] = NIT_NULL;
563 fra.me.REG[1] = NIT_NULL;
564 fra.me.REG[2] = NIT_NULL;
565 fra.me.REG[3] = NIT_NULL;
566 fra.me.REG[4] = NIT_NULL;
567 fra.me.REG[0] = p0;
568 fra.me.REG[1] = p1;
569 /* ./metamodel//partial_order.nit:100 */
570 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
571 if (UNTAG_Bool(REGB0)) {
572 } else {
573 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
574 if (UNTAG_Bool(REGB1)) {
575 REGB1 = TAG_Bool(false);
576 REGB0 = REGB1;
577 } else {
578 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
579 REGB0 = REGB1;
580 }
581 }
582 if (UNTAG_Bool(REGB0)) {
583 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
584 goto label1;
585 }
586 /* ./metamodel//partial_order.nit:101 */
587 REGB0 = CALL_metamodel___partial_order___PartialOrder___has_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
588 if (UNTAG_Bool(REGB0)) {
589 } else {
590 nit_abort("Assert failed", NULL, LOCATE_metamodel___partial_order, 101);
591 }
592 /* ./metamodel//partial_order.nit:102 */
593 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
594 if (UNTAG_Bool(REGB0)) {
595 nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 102);
596 }
597 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
598 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
599 /* ./metamodel//partial_order.nit:103 */
600 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
601 if (UNTAG_Bool(REGB0)) {
602 nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 103);
603 }
604 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
605 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
606 /* ./metamodel//partial_order.nit:104 */
607 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
608 if (UNTAG_Bool(REGB0)) {
609 nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 104);
610 }
611 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrder___select_smallests_2));
612 /* ./metamodel//partial_order.nit:115 */
613 fra.me.REG[2] = fra.me.REG[3];
614 goto label1;
615 label1: while(0);
616 stack_frame_head = fra.me.prev;
617 return fra.me.REG[2];
618 }
619 void OC_metamodel___partial_order___PartialOrder___select_smallests_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
620 struct {struct stack_frame_t me;} fra;
621 val_t REGB0;
622 fun_t CREG[1];
623 val_t tmp;
624 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
625 fra.me.file = LOCATE_metamodel___partial_order;
626 fra.me.line = 0;
627 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___select_smallests;
628 fra.me.has_broke = 0;
629 fra.me.REG_size = 1;
630 fra.me.nitni_local_ref_head = NULL;
631 fra.me.REG[0] = NIT_NULL;
632 fra.me.closure_ctx = closctx_param;
633 fra.me.closure_funs = CREG;
634 fra.me.REG[0] = p0;
635 CREG[0] = clos_fun0;
636 /* ./metamodel//partial_order.nit:106 */
637 REGB0 = CALL_metamodel___partial_order___PartialOrder___add_to_smallests(closctx->REG[0])(closctx->REG[0], fra.me.REG[0], closctx->REG[3], closctx->REG[4]);
638 /* ./metamodel//partial_order.nit:107 */
639 if (UNTAG_Bool(REGB0)) {
640 /* ./metamodel//partial_order.nit:110 */
641 fra.me.REG[0] = closctx->REG[4];
642 /* ./metamodel//partial_order.nit:111 */
643 closctx->REG[4] = closctx->REG[3];
644 /* ./metamodel//partial_order.nit:112 */
645 closctx->REG[3] = fra.me.REG[0];
646 }
647 stack_frame_head = fra.me.prev;
648 return;
649 }
650 val_t metamodel___partial_order___PartialOrder___add(val_t p0, val_t p1, val_t p2){
651 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
652 val_t REGB0;
653 val_t REGB1;
654 val_t tmp;
655 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
656 fra.me.file = LOCATE_metamodel___partial_order;
657 fra.me.line = 118;
658 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___add;
659 fra.me.has_broke = 0;
660 fra.me.REG_size = 5;
661 fra.me.nitni_local_ref_head = NULL;
662 fra.me.REG[0] = NIT_NULL;
663 fra.me.REG[1] = NIT_NULL;
664 fra.me.REG[2] = NIT_NULL;
665 fra.me.REG[3] = NIT_NULL;
666 fra.me.REG[4] = NIT_NULL;
667 fra.me.REG[0] = p0;
668 fra.me.REG[1] = p1;
669 fra.me.REG[2] = p2;
670 /* ./metamodel//partial_order.nit:121 */
671 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
672 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
673 if (UNTAG_Bool(REGB0)) {
674 } else {
675 nit_abort("Assert failed", NULL, LOCATE_metamodel___partial_order, 121);
676 }
677 /* ./metamodel//partial_order.nit:122 */
678 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
679 if (UNTAG_Bool(REGB0)) {
680 } else {
681 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
682 if (UNTAG_Bool(REGB1)) {
683 REGB1 = TAG_Bool(false);
684 REGB0 = REGB1;
685 } else {
686 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
687 REGB0 = REGB1;
688 }
689 }
690 if (UNTAG_Bool(REGB0)) {
691 REGB0 = TAG_Bool(true);
692 } else {
693 REGB1 = CALL_metamodel___partial_order___PartialOrder___has_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
694 REGB0 = REGB1;
695 }
696 if (UNTAG_Bool(REGB0)) {
697 } else {
698 nit_abort("Assert failed", NULL, LOCATE_metamodel___partial_order, 122);
699 }
700 /* ./metamodel//partial_order.nit:123 */
701 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
702 /* ./metamodel//partial_order.nit:124 */
703 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___new_poe(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
704 /* ./metamodel//partial_order.nit:125 */
705 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
706 if (UNTAG_Bool(REGB0)) {
707 } else {
708 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 125);
709 }
710 fra.me.REG[4] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
711 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[3]);
712 /* ./metamodel//partial_order.nit:126 */
713 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
714 if (UNTAG_Bool(REGB0)) {
715 } else {
716 nit_abort("Uninitialized attribute %s", "_elements_list", LOCATE_metamodel___partial_order, 126);
717 }
718 fra.me.REG[4] = ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0]);
719 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
720 /* ./metamodel//partial_order.nit:127 */
721 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
722 if (UNTAG_Bool(REGB0)) {
723 } else {
724 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
725 if (UNTAG_Bool(REGB1)) {
726 REGB1 = TAG_Bool(false);
727 REGB0 = REGB1;
728 } else {
729 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
730 REGB0 = REGB1;
731 }
732 }
733 if (UNTAG_Bool(REGB0)) {
734 REGB0 = TAG_Bool(true);
735 } else {
736 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
737 if (UNTAG_Bool(REGB1)) {
738 nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 127);
739 }
740 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
741 REGB0 = REGB1;
742 }
743 if (UNTAG_Bool(REGB0)) {
744 /* ./metamodel//partial_order.nit:128 */
745 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
746 if (UNTAG_Bool(REGB0)) {
747 } else {
748 nit_abort("Uninitialized attribute %s", "_roots", LOCATE_metamodel___partial_order, 128);
749 }
750 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0]);
751 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
752 }
753 /* ./metamodel//partial_order.nit:130 */
754 goto label1;
755 label1: while(0);
756 stack_frame_head = fra.me.prev;
757 return fra.me.REG[3];
758 }
759 val_t metamodel___partial_order___PartialOrder___has_all(val_t p0, val_t p1){
760 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
761 val_t REGB0;
762 val_t tmp;
763 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
764 fra.me.file = LOCATE_metamodel___partial_order;
765 fra.me.line = 133;
766 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___has_all;
767 fra.me.has_broke = 0;
768 fra.me.REG_size = 2;
769 fra.me.nitni_local_ref_head = NULL;
770 fra.me.REG[0] = NIT_NULL;
771 fra.me.REG[1] = NIT_NULL;
772 fra.me.REG[0] = p0;
773 fra.me.REG[1] = p1;
774 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrder___has_all_1));
775 switch ((&(fra.me))->has_broke) {
776 case 0: break;
777 case 1: (&(fra.me))->has_broke = 0; goto label3;
778 }
779 /* ./metamodel//partial_order.nit:141 */
780 REGB0 = TAG_Bool(true);
781 fra.me.REG[1] = REGB0;
782 goto label3;
783 label3: while(0);
784 stack_frame_head = fra.me.prev;
785 return fra.me.REG[1];
786 }
787 void OC_metamodel___partial_order___PartialOrder___has_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
788 struct {struct stack_frame_t me;} fra;
789 val_t REGB0;
790 fun_t CREG[1];
791 val_t tmp;
792 /* ./metamodel//partial_order.nit:136 */
793 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
794 fra.me.file = LOCATE_metamodel___partial_order;
795 fra.me.line = 0;
796 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___has_all;
797 fra.me.has_broke = 0;
798 fra.me.REG_size = 1;
799 fra.me.nitni_local_ref_head = NULL;
800 fra.me.REG[0] = NIT_NULL;
801 fra.me.closure_ctx = closctx_param;
802 fra.me.closure_funs = CREG;
803 fra.me.REG[0] = p0;
804 CREG[0] = clos_fun0;
805 /* ./metamodel//partial_order.nit:137 */
806 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
807 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
808 if (UNTAG_Bool(REGB0)) {
809 /* ./metamodel//partial_order.nit:138 */
810 REGB0 = TAG_Bool(false);
811 closctx->REG[1] = REGB0;
812 closctx->has_broke = 1;
813 goto label2;
814 }
815 label2: while(0);
816 stack_frame_head = fra.me.prev;
817 return;
818 }
819 val_t metamodel___partial_order___PartialOrder___new_poe(val_t p0, val_t p1, val_t p2){
820 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
821 val_t tmp;
822 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
823 fra.me.file = LOCATE_metamodel___partial_order;
824 fra.me.line = 144;
825 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___new_poe;
826 fra.me.has_broke = 0;
827 fra.me.REG_size = 3;
828 fra.me.nitni_local_ref_head = NULL;
829 fra.me.REG[0] = NIT_NULL;
830 fra.me.REG[1] = NIT_NULL;
831 fra.me.REG[2] = NIT_NULL;
832 fra.me.REG[0] = p0;
833 fra.me.REG[1] = p1;
834 fra.me.REG[2] = p2;
835 /* ./metamodel//partial_order.nit:147 */
836 fra.me.REG[2] = NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
837 goto label1;
838 label1: while(0);
839 stack_frame_head = fra.me.prev;
840 return fra.me.REG[2];
841 }
842 val_t metamodel___partial_order___PartialOrder___add_to_smallests(val_t p0, val_t p1, val_t p2, val_t p3){
843 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
844 val_t REGB0;
845 val_t REGB1;
846 val_t REGB2;
847 val_t tmp;
848 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
849 fra.me.file = LOCATE_metamodel___partial_order;
850 fra.me.line = 150;
851 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___add_to_smallests;
852 fra.me.has_broke = 0;
853 fra.me.REG_size = 6;
854 fra.me.nitni_local_ref_head = NULL;
855 fra.me.REG[0] = NIT_NULL;
856 fra.me.REG[1] = NIT_NULL;
857 fra.me.REG[2] = NIT_NULL;
858 fra.me.REG[3] = NIT_NULL;
859 fra.me.REG[4] = NIT_NULL;
860 fra.me.REG[5] = NIT_NULL;
861 fra.me.REG[0] = p0;
862 fra.me.REG[1] = p1;
863 fra.me.REG[2] = p2;
864 fra.me.REG[3] = p3;
865 /* ./metamodel//partial_order.nit:157 */
866 CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
867 /* ./metamodel//partial_order.nit:158 */
868 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
869 /* ./../lib/standard//collection//array.nit:269 */
870 REGB0 = TAG_Int(0);
871 /* ./../lib/standard//collection//array.nit:270 */
872 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
873 if (UNTAG_Bool(REGB1)) {
874 } else {
875 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
876 }
877 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
878 /* ./../lib/standard//collection//array.nit:271 */
879 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
880 /* ./../lib/standard//collection//array.nit:272 */
881 while(1) {
882 /* ./../lib/standard//collection//array.nit:24 */
883 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
884 if (UNTAG_Bool(REGB1)) {
885 } else {
886 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
887 }
888 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
889 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
890 if (UNTAG_Bool(REGB2)) {
891 } else {
892 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
893 }
894 /* ./../lib/standard//kernel.nit:232 */
895 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
896 /* ./../lib/standard//collection//array.nit:272 */
897 if (UNTAG_Bool(REGB1)) {
898 /* ./../lib/standard//collection//array.nit:273 */
899 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
900 if (UNTAG_Bool(REGB1)) {
901 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
902 }
903 /* ./../lib/standard//collection//array.nit:718 */
904 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
905 /* ./metamodel//partial_order.nit:160 */
906 REGB1 = CALL_metamodel___partial_order___PartialOrderElement_____g(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
907 if (UNTAG_Bool(REGB1)) {
908 /* ./metamodel//partial_order.nit:161 */
909 REGB1 = TAG_Bool(false);
910 goto label1;
911 }
912 /* ./metamodel//partial_order.nit:163 */
913 REGB2 = CALL_metamodel___partial_order___PartialOrderElement_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
914 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
915 if (UNTAG_Bool(REGB2)) {
916 /* ./metamodel//partial_order.nit:164 */
917 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
918 }
919 /* ./../lib/standard//collection//array.nit:274 */
920 REGB2 = TAG_Int(1);
921 /* ./../lib/standard//kernel.nit:235 */
922 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
923 /* ./../lib/standard//collection//array.nit:274 */
924 REGB0 = REGB2;
925 } else {
926 /* ./../lib/standard//collection//array.nit:272 */
927 goto label2;
928 }
929 }
930 label2: while(0);
931 /* ./metamodel//partial_order.nit:167 */
932 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
933 /* ./metamodel//partial_order.nit:168 */
934 REGB0 = TAG_Bool(true);
935 REGB1 = REGB0;
936 goto label1;
937 label1: while(0);
938 stack_frame_head = fra.me.prev;
939 return REGB1;
940 }
941 void metamodel___partial_order___PartialOrder___compute_smallers_for(val_t p0, val_t p1, val_t p2){
942 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
943 val_t REGB0;
944 val_t tmp;
945 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
946 fra.me.file = LOCATE_metamodel___partial_order;
947 fra.me.line = 171;
948 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___compute_smallers_for;
949 fra.me.has_broke = 0;
950 fra.me.REG_size = 3;
951 fra.me.nitni_local_ref_head = NULL;
952 fra.me.REG[0] = NIT_NULL;
953 fra.me.REG[1] = NIT_NULL;
954 fra.me.REG[2] = NIT_NULL;
955 fra.me.REG[0] = p0;
956 fra.me.REG[1] = p1;
957 fra.me.REG[2] = p2;
958 /* ./metamodel//partial_order.nit:173 */
959 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
960 /* ./metamodel//partial_order.nit:174 */
961 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
962 if (UNTAG_Bool(REGB0)) {
963 } else {
964 nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 174);
965 }
966 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
967 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
968 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrder___compute_smallers_for_1));
969 stack_frame_head = fra.me.prev;
970 return;
971 }
972 void OC_metamodel___partial_order___PartialOrder___compute_smallers_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
973 struct {struct stack_frame_t me;} fra;
974 val_t REGB0;
975 fun_t CREG[1];
976 val_t tmp;
977 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
978 fra.me.file = LOCATE_metamodel___partial_order;
979 fra.me.line = 0;
980 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___compute_smallers_for;
981 fra.me.has_broke = 0;
982 fra.me.REG_size = 1;
983 fra.me.nitni_local_ref_head = NULL;
984 fra.me.REG[0] = NIT_NULL;
985 fra.me.closure_ctx = closctx_param;
986 fra.me.closure_funs = CREG;
987 fra.me.REG[0] = p0;
988 CREG[0] = clos_fun0;
989 /* ./metamodel//partial_order.nit:175 */
990 REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____l(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
991 if (UNTAG_Bool(REGB0)) {
992 /* ./metamodel//partial_order.nit:176 */
993 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
994 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
995 }
996 stack_frame_head = fra.me.prev;
997 return;
998 }
999 void metamodel___partial_order___PartialOrder___init(val_t p0, int* init_table){
1000 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___partial_order___PartialOrder].i;
1001 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1002 val_t tmp;
1003 if (init_table[itpos0]) return;
1004 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1005 fra.me.file = LOCATE_metamodel___partial_order;
1006 fra.me.line = 181;
1007 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrder___init;
1008 fra.me.has_broke = 0;
1009 fra.me.REG_size = 2;
1010 fra.me.nitni_local_ref_head = NULL;
1011 fra.me.REG[0] = NIT_NULL;
1012 fra.me.REG[1] = NIT_NULL;
1013 fra.me.REG[0] = p0;
1014 /* ./metamodel//partial_order.nit:183 */
1015 fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
1016 ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]) = fra.me.REG[1];
1017 /* ./metamodel//partial_order.nit:184 */
1018 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
1019 ATTR_metamodel___partial_order___PartialOrder____elements_list(fra.me.REG[0]) = fra.me.REG[1];
1020 /* ./metamodel//partial_order.nit:185 */
1021 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
1022 ATTR_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0]) = fra.me.REG[1];
1023 stack_frame_head = fra.me.prev;
1024 init_table[itpos0] = 1;
1025 return;
1026 }
1027 val_t metamodel___partial_order___PartialOrderElement___order(val_t p0){
1028 struct {struct stack_frame_t me;} fra;
1029 val_t REGB0;
1030 val_t tmp;
1031 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1032 fra.me.file = LOCATE_metamodel___partial_order;
1033 fra.me.line = 190;
1034 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___order;
1035 fra.me.has_broke = 0;
1036 fra.me.REG_size = 1;
1037 fra.me.nitni_local_ref_head = NULL;
1038 fra.me.REG[0] = NIT_NULL;
1039 fra.me.REG[0] = p0;
1040 /* ./metamodel//partial_order.nit:190 */
1041 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1042 if (UNTAG_Bool(REGB0)) {
1043 } else {
1044 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 190);
1045 }
1046 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1047 stack_frame_head = fra.me.prev;
1048 return fra.me.REG[0];
1049 }
1050 val_t metamodel___partial_order___PartialOrderElement___value(val_t p0){
1051 struct {struct stack_frame_t me;} fra;
1052 val_t REGB0;
1053 val_t tmp;
1054 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1055 fra.me.file = LOCATE_metamodel___partial_order;
1056 fra.me.line = 193;
1057 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___value;
1058 fra.me.has_broke = 0;
1059 fra.me.REG_size = 1;
1060 fra.me.nitni_local_ref_head = NULL;
1061 fra.me.REG[0] = NIT_NULL;
1062 fra.me.REG[0] = p0;
1063 /* ./metamodel//partial_order.nit:193 */
1064 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
1065 if (UNTAG_Bool(REGB0)) {
1066 } else {
1067 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 193);
1068 }
1069 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
1070 stack_frame_head = fra.me.prev;
1071 return fra.me.REG[0];
1072 }
1073 val_t metamodel___partial_order___PartialOrderElement___rank(val_t p0){
1074 struct {struct stack_frame_t me;} fra;
1075 val_t REGB0;
1076 val_t tmp;
1077 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1078 fra.me.file = LOCATE_metamodel___partial_order;
1079 fra.me.line = 196;
1080 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___rank;
1081 fra.me.has_broke = 0;
1082 fra.me.REG_size = 1;
1083 fra.me.nitni_local_ref_head = NULL;
1084 fra.me.REG[0] = NIT_NULL;
1085 fra.me.REG[0] = p0;
1086 /* ./metamodel//partial_order.nit:196 */
1087 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____rank(fra.me.REG[0])!=NIT_NULL);
1088 if (UNTAG_Bool(REGB0)) {
1089 } else {
1090 nit_abort("Uninitialized attribute %s", "_rank", LOCATE_metamodel___partial_order, 196);
1091 }
1092 REGB0 = ATTR_metamodel___partial_order___PartialOrderElement____rank(fra.me.REG[0]);
1093 stack_frame_head = fra.me.prev;
1094 return REGB0;
1095 }
1096 val_t metamodel___partial_order___PartialOrderElement___direct_greaters(val_t p0){
1097 struct {struct stack_frame_t me;} fra;
1098 val_t REGB0;
1099 val_t tmp;
1100 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1101 fra.me.file = LOCATE_metamodel___partial_order;
1102 fra.me.line = 202;
1103 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___direct_greaters;
1104 fra.me.has_broke = 0;
1105 fra.me.REG_size = 1;
1106 fra.me.nitni_local_ref_head = NULL;
1107 fra.me.REG[0] = NIT_NULL;
1108 fra.me.REG[0] = p0;
1109 /* ./metamodel//partial_order.nit:202 */
1110 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0])!=NIT_NULL);
1111 if (UNTAG_Bool(REGB0)) {
1112 } else {
1113 nit_abort("Uninitialized attribute %s", "_direct_greaters", LOCATE_metamodel___partial_order, 202);
1114 }
1115 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0]);
1116 stack_frame_head = fra.me.prev;
1117 return fra.me.REG[0];
1118 }
1119 val_t metamodel___partial_order___PartialOrderElement___direct_smallers(val_t p0){
1120 struct {struct stack_frame_t me;} fra;
1121 val_t REGB0;
1122 val_t tmp;
1123 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1124 fra.me.file = LOCATE_metamodel___partial_order;
1125 fra.me.line = 205;
1126 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___direct_smallers;
1127 fra.me.has_broke = 0;
1128 fra.me.REG_size = 1;
1129 fra.me.nitni_local_ref_head = NULL;
1130 fra.me.REG[0] = NIT_NULL;
1131 fra.me.REG[0] = p0;
1132 /* ./metamodel//partial_order.nit:205 */
1133 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0])!=NIT_NULL);
1134 if (UNTAG_Bool(REGB0)) {
1135 } else {
1136 nit_abort("Uninitialized attribute %s", "_direct_smallers", LOCATE_metamodel___partial_order, 205);
1137 }
1138 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]);
1139 stack_frame_head = fra.me.prev;
1140 return fra.me.REG[0];
1141 }
1142 val_t metamodel___partial_order___PartialOrderElement___greaters(val_t p0){
1143 struct {struct stack_frame_t me;} fra;
1144 val_t REGB0;
1145 val_t tmp;
1146 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1147 fra.me.file = LOCATE_metamodel___partial_order;
1148 fra.me.line = 208;
1149 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___greaters;
1150 fra.me.has_broke = 0;
1151 fra.me.REG_size = 1;
1152 fra.me.nitni_local_ref_head = NULL;
1153 fra.me.REG[0] = NIT_NULL;
1154 fra.me.REG[0] = p0;
1155 /* ./metamodel//partial_order.nit:208 */
1156 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1157 if (UNTAG_Bool(REGB0)) {
1158 } else {
1159 nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 208);
1160 }
1161 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1162 stack_frame_head = fra.me.prev;
1163 return fra.me.REG[0];
1164 }
1165 val_t metamodel___partial_order___PartialOrderElement___greaters_and_self(val_t p0){
1166 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1167 val_t REGB0;
1168 val_t REGB1;
1169 val_t tmp;
1170 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1171 fra.me.file = LOCATE_metamodel___partial_order;
1172 fra.me.line = 214;
1173 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___greaters_and_self;
1174 fra.me.has_broke = 0;
1175 fra.me.REG_size = 4;
1176 fra.me.nitni_local_ref_head = NULL;
1177 fra.me.REG[0] = NIT_NULL;
1178 fra.me.REG[1] = NIT_NULL;
1179 fra.me.REG[2] = NIT_NULL;
1180 fra.me.REG[3] = NIT_NULL;
1181 fra.me.REG[0] = p0;
1182 /* ./metamodel//partial_order.nit:214 */
1183 fra.me.REG[1] = fra.me.REG[0];
1184 /* ./metamodel//partial_order.nit:217 */
1185 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]);
1186 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1187 if (UNTAG_Bool(REGB0)) {
1188 } else {
1189 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1190 if (UNTAG_Bool(REGB1)) {
1191 REGB1 = TAG_Bool(false);
1192 REGB0 = REGB1;
1193 } else {
1194 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1195 REGB0 = REGB1;
1196 }
1197 }
1198 if (UNTAG_Bool(REGB0)) {
1199 /* ./metamodel//partial_order.nit:218 */
1200 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[1])!=NIT_NULL);
1201 if (UNTAG_Bool(REGB0)) {
1202 } else {
1203 nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 218);
1204 }
1205 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[1]);
1206 fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
1207 ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]) = fra.me.REG[2];
1208 /* ./metamodel//partial_order.nit:219 */
1209 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]);
1210 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[1])!=NIT_NULL);
1211 if (UNTAG_Bool(REGB0)) {
1212 } else {
1213 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 219);
1214 }
1215 fra.me.REG[3] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[1]);
1216 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1217 if (UNTAG_Bool(REGB0)) {
1218 nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 219);
1219 }
1220 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1221 }
1222 /* ./metamodel//partial_order.nit:221 */
1223 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]);
1224 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1225 if (UNTAG_Bool(REGB0)) {
1226 } else {
1227 nit_abort("Cast failed", NULL, LOCATE_metamodel___partial_order, 221);
1228 }
1229 goto label1;
1230 label1: while(0);
1231 stack_frame_head = fra.me.prev;
1232 return fra.me.REG[1];
1233 }
1234 val_t metamodel___partial_order___PartialOrderElement___smallers(val_t p0){
1235 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1236 val_t REGB0;
1237 val_t REGB1;
1238 val_t REGB2;
1239 val_t tmp;
1240 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1241 fra.me.file = LOCATE_metamodel___partial_order;
1242 fra.me.line = 230;
1243 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___smallers;
1244 fra.me.has_broke = 0;
1245 fra.me.REG_size = 3;
1246 fra.me.nitni_local_ref_head = NULL;
1247 fra.me.REG[0] = NIT_NULL;
1248 fra.me.REG[1] = NIT_NULL;
1249 fra.me.REG[2] = NIT_NULL;
1250 fra.me.REG[0] = p0;
1251 /* ./metamodel//partial_order.nit:233 */
1252 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0])!=NIT_NULL);
1253 if (UNTAG_Bool(REGB0)) {
1254 } else {
1255 nit_abort("Uninitialized attribute %s", "_smallers_last_length", LOCATE_metamodel___partial_order, 233);
1256 }
1257 REGB0 = ATTR_metamodel___partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]);
1258 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1259 if (UNTAG_Bool(REGB1)) {
1260 } else {
1261 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 233);
1262 }
1263 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1264 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
1265 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1266 if (UNTAG_Bool(REGB2)) {
1267 } else {
1268 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1269 }
1270 /* ./../lib/standard//kernel.nit:232 */
1271 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1272 /* ./metamodel//partial_order.nit:233 */
1273 if (UNTAG_Bool(REGB1)) {
1274 /* ./metamodel//partial_order.nit:234 */
1275 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1276 if (UNTAG_Bool(REGB1)) {
1277 } else {
1278 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 234);
1279 }
1280 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1281 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
1282 if (UNTAG_Bool(REGB1)) {
1283 } else {
1284 nit_abort("Uninitialized attribute %s", "_smallers_cache", LOCATE_metamodel___partial_order, 234);
1285 }
1286 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]);
1287 CALL_metamodel___partial_order___PartialOrder___compute_smallers_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1288 /* ./metamodel//partial_order.nit:235 */
1289 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1290 if (UNTAG_Bool(REGB1)) {
1291 } else {
1292 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 235);
1293 }
1294 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1295 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1296 ATTR_metamodel___partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]) = REGB1;
1297 }
1298 /* ./metamodel//partial_order.nit:237 */
1299 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
1300 if (UNTAG_Bool(REGB1)) {
1301 } else {
1302 nit_abort("Uninitialized attribute %s", "_smallers_cache", LOCATE_metamodel___partial_order, 237);
1303 }
1304 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]);
1305 goto label1;
1306 label1: while(0);
1307 stack_frame_head = fra.me.prev;
1308 return fra.me.REG[0];
1309 }
1310 val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p0){
1311 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1312 val_t REGB0;
1313 val_t REGB1;
1314 val_t REGB2;
1315 val_t REGB3;
1316 val_t tmp;
1317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1318 fra.me.file = LOCATE_metamodel___partial_order;
1319 fra.me.line = 243;
1320 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___linear_extension;
1321 fra.me.has_broke = 0;
1322 fra.me.REG_size = 10;
1323 fra.me.nitni_local_ref_head = NULL;
1324 fra.me.REG[0] = NIT_NULL;
1325 fra.me.REG[1] = NIT_NULL;
1326 fra.me.REG[2] = NIT_NULL;
1327 fra.me.REG[3] = NIT_NULL;
1328 fra.me.REG[4] = NIT_NULL;
1329 fra.me.REG[5] = NIT_NULL;
1330 fra.me.REG[6] = NIT_NULL;
1331 fra.me.REG[7] = NIT_NULL;
1332 fra.me.REG[8] = NIT_NULL;
1333 fra.me.REG[9] = NIT_NULL;
1334 fra.me.REG[0] = p0;
1335 /* ./metamodel//partial_order.nit:243 */
1336 fra.me.REG[1] = fra.me.REG[0];
1337 /* ./metamodel//partial_order.nit:247 */
1338 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]);
1339 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1340 if (UNTAG_Bool(REGB0)) {
1341 } else {
1342 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1343 if (UNTAG_Bool(REGB1)) {
1344 REGB1 = TAG_Bool(false);
1345 REGB0 = REGB1;
1346 } else {
1347 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1348 REGB0 = REGB1;
1349 }
1350 }
1351 if (UNTAG_Bool(REGB0)) {
1352 /* ./metamodel//partial_order.nit:248 */
1353 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
1354 /* ./metamodel//partial_order.nit:249 */
1355 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
1356 /* ./metamodel//partial_order.nit:250 */
1357 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
1358 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1359 /* ./metamodel//partial_order.nit:251 */
1360 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
1361 /* ./../lib/standard//collection//array.nit:269 */
1362 REGB0 = TAG_Int(0);
1363 /* ./../lib/standard//collection//array.nit:270 */
1364 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1365 if (UNTAG_Bool(REGB1)) {
1366 } else {
1367 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1368 }
1369 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1370 /* ./../lib/standard//collection//array.nit:271 */
1371 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1372 /* ./../lib/standard//collection//array.nit:272 */
1373 while(1) {
1374 /* ./../lib/standard//collection//array.nit:24 */
1375 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1376 if (UNTAG_Bool(REGB1)) {
1377 } else {
1378 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1379 }
1380 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1381 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1382 if (UNTAG_Bool(REGB2)) {
1383 } else {
1384 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1385 }
1386 /* ./../lib/standard//kernel.nit:232 */
1387 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1388 /* ./../lib/standard//collection//array.nit:272 */
1389 if (UNTAG_Bool(REGB1)) {
1390 /* ./../lib/standard//collection//array.nit:273 */
1391 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1392 if (UNTAG_Bool(REGB1)) {
1393 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1394 }
1395 /* ./../lib/standard//collection//array.nit:718 */
1396 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1397 /* ./metamodel//partial_order.nit:252 */
1398 fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
1399 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
1400 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[6])(fra.me.REG[6]);
1401 /* ./metamodel//partial_order.nit:253 */
1402 CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
1403 /* ./../lib/standard//collection//array.nit:266 */
1404 fra.me.REG[7] = fra.me.REG[2];
1405 /* ./../lib/standard//collection//array.nit:269 */
1406 REGB1 = TAG_Int(0);
1407 /* ./../lib/standard//collection//array.nit:270 */
1408 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
1409 if (UNTAG_Bool(REGB2)) {
1410 } else {
1411 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1412 }
1413 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
1414 /* ./../lib/standard//collection//array.nit:271 */
1415 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
1416 /* ./../lib/standard//collection//array.nit:272 */
1417 while(1) {
1418 /* ./../lib/standard//collection//array.nit:24 */
1419 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
1420 if (UNTAG_Bool(REGB2)) {
1421 } else {
1422 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1423 }
1424 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
1425 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1426 if (UNTAG_Bool(REGB3)) {
1427 } else {
1428 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1429 }
1430 /* ./../lib/standard//kernel.nit:232 */
1431 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1432 /* ./../lib/standard//collection//array.nit:272 */
1433 if (UNTAG_Bool(REGB2)) {
1434 /* ./../lib/standard//collection//array.nit:273 */
1435 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
1436 if (UNTAG_Bool(REGB2)) {
1437 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1438 }
1439 /* ./../lib/standard//collection//array.nit:718 */
1440 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
1441 /* ./metamodel//partial_order.nit:255 */
1442 REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
1443 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1444 if (UNTAG_Bool(REGB2)) {
1445 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
1446 }
1447 /* ./../lib/standard//collection//array.nit:274 */
1448 REGB2 = TAG_Int(1);
1449 /* ./../lib/standard//kernel.nit:235 */
1450 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1451 /* ./../lib/standard//collection//array.nit:274 */
1452 REGB1 = REGB2;
1453 } else {
1454 /* ./../lib/standard//collection//array.nit:272 */
1455 goto label1;
1456 }
1457 }
1458 label1: while(0);
1459 /* ./metamodel//partial_order.nit:257 */
1460 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1461 /* ./metamodel//partial_order.nit:259 */
1462 fra.me.REG[6] = fra.me.REG[2];
1463 /* ./metamodel//partial_order.nit:260 */
1464 fra.me.REG[2] = fra.me.REG[3];
1465 /* ./metamodel//partial_order.nit:261 */
1466 fra.me.REG[3] = fra.me.REG[6];
1467 /* ./../lib/standard//collection//array.nit:274 */
1468 REGB1 = TAG_Int(1);
1469 /* ./../lib/standard//kernel.nit:235 */
1470 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1471 /* ./../lib/standard//collection//array.nit:274 */
1472 REGB0 = REGB1;
1473 } else {
1474 /* ./../lib/standard//collection//array.nit:272 */
1475 goto label2;
1476 }
1477 }
1478 label2: while(0);
1479 /* ./metamodel//partial_order.nit:263 */
1480 ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]) = fra.me.REG[2];
1481 }
1482 /* ./metamodel//partial_order.nit:265 */
1483 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]);
1484 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1485 if (UNTAG_Bool(REGB0)) {
1486 } else {
1487 nit_abort("Cast failed", NULL, LOCATE_metamodel___partial_order, 265);
1488 }
1489 goto label3;
1490 label3: while(0);
1491 stack_frame_head = fra.me.prev;
1492 return fra.me.REG[1];
1493 }
1494 val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension(val_t p0){
1495 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1496 val_t REGB0;
1497 val_t REGB1;
1498 val_t REGB2;
1499 val_t tmp;
1500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1501 fra.me.file = LOCATE_metamodel___partial_order;
1502 fra.me.line = 271;
1503 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___reverse_linear_extension;
1504 fra.me.has_broke = 0;
1505 fra.me.REG_size = 7;
1506 fra.me.nitni_local_ref_head = NULL;
1507 fra.me.REG[0] = NIT_NULL;
1508 fra.me.REG[1] = NIT_NULL;
1509 fra.me.REG[2] = NIT_NULL;
1510 fra.me.REG[3] = NIT_NULL;
1511 fra.me.REG[4] = NIT_NULL;
1512 fra.me.REG[5] = NIT_NULL;
1513 fra.me.REG[6] = NIT_NULL;
1514 fra.me.REG[0] = p0;
1515 /* ./metamodel//partial_order.nit:271 */
1516 fra.me.REG[1] = fra.me.REG[0];
1517 /* ./metamodel//partial_order.nit:275 */
1518 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____reverse_linear_extension_cache(fra.me.REG[1]);
1519 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1520 if (UNTAG_Bool(REGB0)) {
1521 } else {
1522 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1523 if (UNTAG_Bool(REGB1)) {
1524 REGB1 = TAG_Bool(false);
1525 REGB0 = REGB1;
1526 } else {
1527 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1528 REGB0 = REGB1;
1529 }
1530 }
1531 if (UNTAG_Bool(REGB0)) {
1532 /* ./metamodel//partial_order.nit:276 */
1533 fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
1534 /* ./metamodel//partial_order.nit:277 */
1535 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
1536 /* ./../lib/standard//collection//array.nit:269 */
1537 REGB0 = TAG_Int(0);
1538 /* ./../lib/standard//collection//array.nit:270 */
1539 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1540 if (UNTAG_Bool(REGB1)) {
1541 } else {
1542 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1543 }
1544 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1545 /* ./../lib/standard//collection//array.nit:271 */
1546 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1547 /* ./../lib/standard//collection//array.nit:272 */
1548 while(1) {
1549 /* ./../lib/standard//collection//array.nit:24 */
1550 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1551 if (UNTAG_Bool(REGB1)) {
1552 } else {
1553 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1554 }
1555 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1556 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1557 if (UNTAG_Bool(REGB2)) {
1558 } else {
1559 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1560 }
1561 /* ./../lib/standard//kernel.nit:232 */
1562 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1563 /* ./../lib/standard//collection//array.nit:272 */
1564 if (UNTAG_Bool(REGB1)) {
1565 /* ./../lib/standard//collection//array.nit:273 */
1566 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1567 if (UNTAG_Bool(REGB1)) {
1568 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1569 }
1570 /* ./../lib/standard//collection//array.nit:718 */
1571 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
1572 /* ./metamodel//partial_order.nit:278 */
1573 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
1574 fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1575 fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[5])(fra.me.REG[5]);
1576 /* ./metamodel//partial_order.nit:279 */
1577 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
1578 /* ./../lib/standard//collection//array.nit:274 */
1579 REGB1 = TAG_Int(1);
1580 /* ./../lib/standard//kernel.nit:235 */
1581 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1582 /* ./../lib/standard//collection//array.nit:274 */
1583 REGB0 = REGB1;
1584 } else {
1585 /* ./../lib/standard//collection//array.nit:272 */
1586 goto label1;
1587 }
1588 }
1589 label1: while(0);
1590 /* ./metamodel//partial_order.nit:281 */
1591 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
1592 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1593 /* ./metamodel//partial_order.nit:282 */
1594 fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
1595 ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]) = fra.me.REG[2];
1596 }
1597 /* ./metamodel//partial_order.nit:284 */
1598 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]);
1599 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1600 if (UNTAG_Bool(REGB0)) {
1601 } else {
1602 nit_abort("Cast failed", NULL, LOCATE_metamodel___partial_order, 284);
1603 }
1604 goto label2;
1605 label2: while(0);
1606 stack_frame_head = fra.me.prev;
1607 return fra.me.REG[1];
1608 }
1609 val_t metamodel___partial_order___PartialOrderElement_____l(val_t p0, val_t p1){
1610 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1611 val_t REGB0;
1612 val_t tmp;
1613 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1614 fra.me.file = LOCATE_metamodel___partial_order;
1615 fra.me.line = 287;
1616 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement_____l;
1617 fra.me.has_broke = 0;
1618 fra.me.REG_size = 2;
1619 fra.me.nitni_local_ref_head = NULL;
1620 fra.me.REG[0] = NIT_NULL;
1621 fra.me.REG[1] = NIT_NULL;
1622 fra.me.REG[0] = p0;
1623 fra.me.REG[1] = p1;
1624 /* ./metamodel//partial_order.nit:290 */
1625 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1626 if (UNTAG_Bool(REGB0)) {
1627 } else {
1628 nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 290);
1629 }
1630 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1631 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1632 goto label1;
1633 label1: while(0);
1634 stack_frame_head = fra.me.prev;
1635 return REGB0;
1636 }
1637 val_t metamodel___partial_order___PartialOrderElement_____leq(val_t p0, val_t p1){
1638 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1639 val_t REGB0;
1640 val_t REGB1;
1641 val_t tmp;
1642 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1643 fra.me.file = LOCATE_metamodel___partial_order;
1644 fra.me.line = 293;
1645 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement_____leq;
1646 fra.me.has_broke = 0;
1647 fra.me.REG_size = 3;
1648 fra.me.nitni_local_ref_head = NULL;
1649 fra.me.REG[0] = NIT_NULL;
1650 fra.me.REG[1] = NIT_NULL;
1651 fra.me.REG[2] = NIT_NULL;
1652 fra.me.REG[0] = p0;
1653 fra.me.REG[1] = p1;
1654 /* ./metamodel//partial_order.nit:296 */
1655 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
1656 if (UNTAG_Bool(REGB0)) {
1657 } else {
1658 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 296);
1659 }
1660 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
1661 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
1662 if (UNTAG_Bool(REGB0)) {
1663 } else {
1664 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1665 REGB0 = REGB1;
1666 }
1667 if (UNTAG_Bool(REGB0)) {
1668 REGB0 = TAG_Bool(true);
1669 } else {
1670 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1671 if (UNTAG_Bool(REGB1)) {
1672 } else {
1673 nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 296);
1674 }
1675 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1676 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1677 REGB0 = REGB1;
1678 }
1679 goto label1;
1680 label1: while(0);
1681 stack_frame_head = fra.me.prev;
1682 return REGB0;
1683 }
1684 val_t metamodel___partial_order___PartialOrderElement_____g(val_t p0, val_t p1){
1685 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1686 val_t REGB0;
1687 val_t tmp;
1688 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1689 fra.me.file = LOCATE_metamodel___partial_order;
1690 fra.me.line = 299;
1691 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement_____g;
1692 fra.me.has_broke = 0;
1693 fra.me.REG_size = 3;
1694 fra.me.nitni_local_ref_head = NULL;
1695 fra.me.REG[0] = NIT_NULL;
1696 fra.me.REG[1] = NIT_NULL;
1697 fra.me.REG[2] = NIT_NULL;
1698 fra.me.REG[0] = p0;
1699 fra.me.REG[1] = p1;
1700 /* ./metamodel//partial_order.nit:302 */
1701 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1702 if (UNTAG_Bool(REGB0)) {
1703 } else {
1704 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 302);
1705 }
1706 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1707 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1708 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
1709 if (UNTAG_Bool(REGB0)) {
1710 } else {
1711 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 302);
1712 }
1713 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
1714 REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1715 goto label1;
1716 label1: while(0);
1717 stack_frame_head = fra.me.prev;
1718 return REGB0;
1719 }
1720 val_t metamodel___partial_order___PartialOrderElement_____geq(val_t p0, val_t p1){
1721 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1722 val_t REGB0;
1723 val_t REGB1;
1724 val_t tmp;
1725 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1726 fra.me.file = LOCATE_metamodel___partial_order;
1727 fra.me.line = 305;
1728 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement_____geq;
1729 fra.me.has_broke = 0;
1730 fra.me.REG_size = 3;
1731 fra.me.nitni_local_ref_head = NULL;
1732 fra.me.REG[0] = NIT_NULL;
1733 fra.me.REG[1] = NIT_NULL;
1734 fra.me.REG[2] = NIT_NULL;
1735 fra.me.REG[0] = p0;
1736 fra.me.REG[1] = p1;
1737 /* ./metamodel//partial_order.nit:308 */
1738 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
1739 if (UNTAG_Bool(REGB0)) {
1740 } else {
1741 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 308);
1742 }
1743 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
1744 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
1745 if (UNTAG_Bool(REGB0)) {
1746 } else {
1747 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1748 REGB0 = REGB1;
1749 }
1750 if (UNTAG_Bool(REGB0)) {
1751 REGB0 = TAG_Bool(true);
1752 } else {
1753 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1754 if (UNTAG_Bool(REGB1)) {
1755 } else {
1756 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 308);
1757 }
1758 fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1759 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1760 REGB1 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
1761 if (UNTAG_Bool(REGB1)) {
1762 } else {
1763 nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 308);
1764 }
1765 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
1766 REGB1 = CALL_metamodel___partial_order___PartialOrderElement_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1767 REGB0 = REGB1;
1768 }
1769 goto label1;
1770 label1: while(0);
1771 stack_frame_head = fra.me.prev;
1772 return REGB0;
1773 }
1774 void metamodel___partial_order___PartialOrderElement___register_direct_smallers(val_t p0, val_t p1){
1775 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1776 val_t REGB0;
1777 val_t tmp;
1778 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1779 fra.me.file = LOCATE_metamodel___partial_order;
1780 fra.me.line = 311;
1781 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___register_direct_smallers;
1782 fra.me.has_broke = 0;
1783 fra.me.REG_size = 2;
1784 fra.me.nitni_local_ref_head = NULL;
1785 fra.me.REG[0] = NIT_NULL;
1786 fra.me.REG[1] = NIT_NULL;
1787 fra.me.REG[0] = p0;
1788 fra.me.REG[1] = p1;
1789 /* ./metamodel//partial_order.nit:313 */
1790 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0])!=NIT_NULL);
1791 if (UNTAG_Bool(REGB0)) {
1792 } else {
1793 nit_abort("Uninitialized attribute %s", "_direct_smallers", LOCATE_metamodel___partial_order, 313);
1794 }
1795 fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]);
1796 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1797 stack_frame_head = fra.me.prev;
1798 return;
1799 }
1800 void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
1801 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___partial_order___PartialOrderElement].i;
1802 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1803 val_t REGB0;
1804 val_t REGB1;
1805 val_t REGB2;
1806 val_t REGB3;
1807 val_t tmp;
1808 if (init_table[itpos1]) return;
1809 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1810 fra.me.file = LOCATE_metamodel___partial_order;
1811 fra.me.line = 316;
1812 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___init;
1813 fra.me.has_broke = 0;
1814 fra.me.REG_size = 7;
1815 fra.me.nitni_local_ref_head = NULL;
1816 fra.me.REG[0] = NIT_NULL;
1817 fra.me.REG[1] = NIT_NULL;
1818 fra.me.REG[2] = NIT_NULL;
1819 fra.me.REG[3] = NIT_NULL;
1820 fra.me.REG[4] = NIT_NULL;
1821 fra.me.REG[5] = NIT_NULL;
1822 fra.me.REG[6] = NIT_NULL;
1823 fra.me.REG[0] = p0;
1824 fra.me.REG[1] = p1;
1825 fra.me.REG[2] = p2;
1826 fra.me.REG[3] = p3;
1827 /* ./metamodel//partial_order.nit:318 */
1828 ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]) = fra.me.REG[1];
1829 /* ./metamodel//partial_order.nit:319 */
1830 ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]) = fra.me.REG[2];
1831 /* ./metamodel//partial_order.nit:320 */
1832 ATTR_metamodel___partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0]) = fra.me.REG[3];
1833 /* ./metamodel//partial_order.nit:321 */
1834 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
1835 ATTR_metamodel___partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0]) = fra.me.REG[1];
1836 /* ./metamodel//partial_order.nit:323 */
1837 fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
1838 ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]) = fra.me.REG[1];
1839 /* ./metamodel//partial_order.nit:324 */
1840 fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
1841 ATTR_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0]) = fra.me.REG[1];
1842 /* ./metamodel//partial_order.nit:326 */
1843 REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
1844 if (UNTAG_Bool(REGB0)) {
1845 } else {
1846 nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 326);
1847 }
1848 fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
1849 /* ./metamodel//partial_order.nit:327 */
1850 REGB0 = TAG_Int(0);
1851 /* ./../lib/standard//collection//array.nit:269 */
1852 REGB1 = TAG_Int(0);
1853 /* ./../lib/standard//collection//array.nit:270 */
1854 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1855 if (UNTAG_Bool(REGB2)) {
1856 } else {
1857 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1858 }
1859 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1860 /* ./../lib/standard//collection//array.nit:271 */
1861 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1862 /* ./../lib/standard//collection//array.nit:272 */
1863 while(1) {
1864 /* ./../lib/standard//collection//array.nit:24 */
1865 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1866 if (UNTAG_Bool(REGB2)) {
1867 } else {
1868 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1869 }
1870 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1871 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1872 if (UNTAG_Bool(REGB3)) {
1873 } else {
1874 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1875 }
1876 /* ./../lib/standard//kernel.nit:232 */
1877 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1878 /* ./../lib/standard//collection//array.nit:272 */
1879 if (UNTAG_Bool(REGB2)) {
1880 /* ./../lib/standard//collection//array.nit:273 */
1881 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1882 if (UNTAG_Bool(REGB2)) {
1883 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1884 }
1885 /* ./../lib/standard//collection//array.nit:718 */
1886 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
1887 /* ./metamodel//partial_order.nit:329 */
1888 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
1889 /* ./metamodel//partial_order.nit:330 */
1890 REGB2 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
1891 if (UNTAG_Bool(REGB2)) {
1892 } else {
1893 nit_abort("Uninitialized attribute %s", "_order", LOCATE_metamodel___partial_order, 330);
1894 }
1895 fra.me.REG[6] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
1896 fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1897 /* ./metamodel//partial_order.nit:331 */
1898 REGB2 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[5])(fra.me.REG[5]);
1899 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1900 if (UNTAG_Bool(REGB3)) {
1901 } else {
1902 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1903 }
1904 /* ./../lib/standard//kernel.nit:233 */
1905 REGB2 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
1906 /* ./metamodel//partial_order.nit:331 */
1907 if (UNTAG_Bool(REGB2)) {
1908 /* ./metamodel//partial_order.nit:332 */
1909 REGB2 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[5])(fra.me.REG[5]);
1910 REGB3 = TAG_Int(1);
1911 /* ./../lib/standard//kernel.nit:235 */
1912 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1913 /* ./metamodel//partial_order.nit:332 */
1914 REGB0 = REGB3;
1915 }
1916 /* ./metamodel//partial_order.nit:334 */
1917 CALL_metamodel___partial_order___PartialOrderElement___register_direct_smallers(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
1918 /* ./metamodel//partial_order.nit:335 */
1919 fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra.me.REG[5])(fra.me.REG[5]);
1920 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrderElement___init_1));
1921 /* ./../lib/standard//collection//array.nit:274 */
1922 REGB3 = TAG_Int(1);
1923 /* ./../lib/standard//kernel.nit:235 */
1924 REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
1925 /* ./../lib/standard//collection//array.nit:274 */
1926 REGB1 = REGB3;
1927 } else {
1928 /* ./../lib/standard//collection//array.nit:272 */
1929 goto label2;
1930 }
1931 }
1932 label2: while(0);
1933 /* ./metamodel//partial_order.nit:339 */
1934 ATTR_metamodel___partial_order___PartialOrderElement____rank(fra.me.REG[0]) = REGB0;
1935 stack_frame_head = fra.me.prev;
1936 init_table[itpos1] = 1;
1937 return;
1938 }
1939 void OC_metamodel___partial_order___PartialOrderElement___init_1(struct stack_frame_t *closctx, val_t p0){
1940 struct {struct stack_frame_t me;} fra;
1941 val_t tmp;
1942 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1943 fra.me.file = LOCATE_metamodel___partial_order;
1944 fra.me.line = 0;
1945 fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___init;
1946 fra.me.has_broke = 0;
1947 fra.me.REG_size = 1;
1948 fra.me.nitni_local_ref_head = NULL;
1949 fra.me.REG[0] = NIT_NULL;
1950 fra.me.REG[0] = p0;
1951 /* ./metamodel//partial_order.nit:336 */
1952 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
1953 stack_frame_head = fra.me.prev;
1954 return;
1955 }