misc: update Changelog and NOTICE; remove BUGS and TODO
[nit.git] / c_src / list._sep.c
1 /* This C file is generated by NIT to compile module list. */
2 #include "list._sep.h"
3 val_t list___List___iterator(val_t self) {
4 struct trace_t trace = {NULL, NULL, 173, LOCATE_list___List___iterator};
5 val_t variable[3];
6 struct WBT_ **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_list;
9 /* Register variable[0]: Local variable */
10 variable[0] = self;
11 /* Register variable[1]: Method return value and escape marker */
12 /* Register variable[2]: Result */
13 variable[2] = ATTR_list___List____head(variable[0]) /*List::_head*/;
14 /* Register variable[2]: Result */
15 variable[2] = NEW_ListIterator_list___ListIterator___init(variable[2]) /*new ListIterator[E]*/;
16 variable[1] = variable[2];
17 goto return_label0;
18 return_label0: while(false);
19 tracehead = trace.prev;
20 return variable[1];
21 }
22 val_t list___List___is_empty(val_t self) {
23 struct trace_t trace = {NULL, NULL, 40, LOCATE_list___List___is_empty};
24 val_t variable[3];
25 struct WBT_ **closurevariable = NULL;
26 trace.prev = tracehead; tracehead = &trace;
27 trace.file = LOCATE_list;
28 /* Register variable[0]: Local variable */
29 variable[0] = self;
30 /* Register variable[1]: Method return value and escape marker */
31 /* Register variable[2]: Result */
32 variable[2] = ATTR_list___List____head(variable[0]) /*List::_head*/;
33 /* Register variable[2]: Result */
34 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
35 variable[1] = variable[2];
36 goto return_label1;
37 return_label1: while(false);
38 tracehead = trace.prev;
39 return variable[1];
40 }
41 val_t list___List___length(val_t self) {
42 struct trace_t trace = {NULL, NULL, 43, LOCATE_list___List___length};
43 val_t variable[5];
44 struct WBT_ **closurevariable = NULL;
45 trace.prev = tracehead; tracehead = &trace;
46 trace.file = LOCATE_list;
47 /* Register variable[0]: Local variable */
48 variable[0] = self;
49 /* Register variable[1]: Method return value and escape marker */
50 /* Register variable[2]: Local variable */
51 variable[2] = TAG_Int(0);
52 /* Register variable[3]: Local variable */
53 /* Register variable[4]: Result */
54 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
55 variable[3] = variable[4];
56 while (true) { /*while*/
57 /* Register variable[4]: Result */
58 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
59 if (!UNTAG_Bool(variable[4])) break; /* while*/
60 variable[2] = TAG_Int(UNTAG_Int(variable[2])+UNTAG_Int( TAG_Int(1))) /*l*/;
61 /* Register variable[4]: Result */
62 variable[4] = CALL_list___ListNode___next( variable[3] /*t*/)( variable[3] /*t*/) /*ListNode::next*/;
63 variable[3] = variable[4] /*t=*/;
64 continue_3: while(0);
65 }
66 break_3: while(0);
67 variable[1] = variable[2] /*l*/;
68 goto return_label2;
69 return_label2: while(false);
70 tracehead = trace.prev;
71 return variable[1];
72 }
73 val_t list___List___has(val_t self, val_t param0) {
74 struct trace_t trace = {NULL, NULL, 55, LOCATE_list___List___has};
75 val_t variable[4];
76 struct WBT_ **closurevariable = NULL;
77 trace.prev = tracehead; tracehead = &trace;
78 trace.file = LOCATE_list;
79 /* Register variable[0]: Local variable */
80 variable[0] = self;
81 /* Register variable[1]: Local variable */
82 variable[1] = param0;
83 /* Register variable[2]: Method return value and escape marker */
84 /* Register variable[3]: Result */
85 variable[3] = ATTR_list___List____head(variable[0]) /*List::_head*/;
86 /* Register variable[3]: Result */
87 variable[3] = CALL_list___List___search_node_after(variable[0])(variable[0], variable[1] /*e*/, variable[3]) /*List::search_node_after*/;
88 /* Register variable[3]: Result */
89 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
90 variable[2] = variable[3];
91 goto return_label4;
92 return_label4: while(false);
93 tracehead = trace.prev;
94 return variable[2];
95 }
96 val_t list___List___has_only(val_t self, val_t param0) {
97 struct trace_t trace = {NULL, NULL, 58, LOCATE_list___List___has_only};
98 val_t variable[5];
99 struct WBT_ **closurevariable = NULL;
100 trace.prev = tracehead; tracehead = &trace;
101 trace.file = LOCATE_list;
102 /* Register variable[0]: Local variable */
103 variable[0] = self;
104 /* Register variable[1]: Local variable */
105 variable[1] = param0;
106 /* Register variable[2]: Method return value and escape marker */
107 /* Register variable[3]: Local variable */
108 /* Register variable[4]: Result */
109 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
110 variable[3] = variable[4];
111 while (true) { /*while*/
112 /* Register variable[4]: Result */
113 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*node*/ == NIT_NULL /*null*/) || (( variable[3] /*node*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*node*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*node*/)( variable[3] /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
114 if (!UNTAG_Bool(variable[4])) break; /* while*/
115 /* Register variable[4]: Result */
116 variable[4] = CALL_abstract_collection___Container___item( variable[3] /*node*/)( variable[3] /*node*/) /*Container::item*/;
117 /* Register variable[4]: Result */
118 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[1] /*e*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*e*/) /*Object::==*/)))))));
119 if (UNTAG_Bool(variable[4])) { /*if*/
120 variable[2] = TAG_Bool(false);
121 goto return_label5;
122 }
123 /* Register variable[4]: Result */
124 variable[4] = CALL_list___ListNode___next( variable[3] /*node*/)( variable[3] /*node*/) /*ListNode::next*/;
125 variable[3] = variable[4] /*node=*/;
126 continue_6: while(0);
127 }
128 break_6: while(0);
129 variable[2] = TAG_Bool(true);
130 goto return_label5;
131 return_label5: while(false);
132 tracehead = trace.prev;
133 return variable[2];
134 }
135 val_t list___List___count(val_t self, val_t param0) {
136 struct trace_t trace = {NULL, NULL, 68, LOCATE_list___List___count};
137 val_t variable[6];
138 struct WBT_ **closurevariable = NULL;
139 trace.prev = tracehead; tracehead = &trace;
140 trace.file = LOCATE_list;
141 /* Register variable[0]: Local variable */
142 variable[0] = self;
143 /* Register variable[1]: Local variable */
144 variable[1] = param0;
145 /* Register variable[2]: Method return value and escape marker */
146 /* Register variable[3]: Local variable */
147 variable[3] = TAG_Int(0);
148 /* Register variable[4]: Local variable */
149 /* Register variable[5]: Result */
150 variable[5] = ATTR_list___List____head(variable[0]) /*List::_head*/;
151 variable[4] = variable[5];
152 while (true) { /*while*/
153 /* Register variable[5]: Result */
154 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*node*/ == NIT_NULL /*null*/) || (( variable[4] /*node*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*node*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*node*/)( variable[4] /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
155 if (!UNTAG_Bool(variable[5])) break; /* while*/
156 /* Register variable[5]: Result */
157 variable[5] = CALL_abstract_collection___Container___item( variable[4] /*node*/)( variable[4] /*node*/) /*Container::item*/;
158 /* Register variable[5]: Result */
159 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[5] == variable[1] /*e*/) || ((variable[5] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[5])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[5], variable[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[5])(variable[5], variable[1] /*e*/) /*Object::==*/)))))));
160 if (UNTAG_Bool(variable[5])) { /*if*/
161 variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1))) /*nb*/;
162 }
163 /* Register variable[5]: Result */
164 variable[5] = CALL_list___ListNode___next( variable[4] /*node*/)( variable[4] /*node*/) /*ListNode::next*/;
165 variable[4] = variable[5] /*node=*/;
166 continue_8: while(0);
167 }
168 break_8: while(0);
169 variable[2] = variable[3] /*nb*/;
170 goto return_label7;
171 return_label7: while(false);
172 tracehead = trace.prev;
173 return variable[2];
174 }
175 val_t list___List___first(val_t self) {
176 struct trace_t trace = {NULL, NULL, 26, LOCATE_list___List___first};
177 val_t variable[3];
178 struct WBT_ **closurevariable = NULL;
179 trace.prev = tracehead; tracehead = &trace;
180 trace.file = LOCATE_list;
181 /* Register variable[0]: Local variable */
182 variable[0] = self;
183 /* Register variable[1]: Method return value and escape marker */
184 /* Register variable[2]: Result */
185 variable[2] = ATTR_list___List____head(variable[0]) /*List::_head*/;
186 /* Register variable[2]: Result */
187 variable[2] = CALL_abstract_collection___Container___item(variable[2])(variable[2]) /*Container::item*/;
188 variable[1] = variable[2];
189 goto return_label9;
190 return_label9: while(false);
191 tracehead = trace.prev;
192 return variable[1];
193 }
194 val_t list___List_____bra(val_t self, val_t param0) {
195 struct trace_t trace = {NULL, NULL, 21, LOCATE_list___List_____bra};
196 val_t variable[4];
197 struct WBT_ **closurevariable = NULL;
198 trace.prev = tracehead; tracehead = &trace;
199 trace.file = LOCATE_list;
200 /* Register variable[0]: Local variable */
201 variable[0] = self;
202 /* Register variable[1]: Local variable */
203 variable[1] = param0;
204 /* Register variable[2]: Method return value and escape marker */
205 /* Register variable[3]: Result */
206 variable[3] = CALL_list___List___get_node(variable[0])(variable[0], variable[1] /*index*/) /*List::get_node*/;
207 /* Register variable[3]: Result */
208 variable[3] = CALL_abstract_collection___Container___item(variable[3])(variable[3]) /*Container::item*/;
209 variable[2] = variable[3];
210 goto return_label10;
211 return_label10: while(false);
212 tracehead = trace.prev;
213 return variable[2];
214 }
215 val_t list___List___has_key(val_t self, val_t param0) {
216 struct trace_t trace = {NULL, NULL, 79, LOCATE_list___List___has_key};
217 val_t variable[4];
218 struct WBT_ **closurevariable = NULL;
219 trace.prev = tracehead; tracehead = &trace;
220 trace.file = LOCATE_list;
221 /* Register variable[0]: Local variable */
222 variable[0] = self;
223 /* Register variable[1]: Local variable */
224 variable[1] = param0;
225 /* Register variable[2]: Method return value and escape marker */
226 /* Register variable[3]: Result */
227 variable[3] = CALL_list___List___get_node(variable[0])(variable[0], variable[1] /*index*/) /*List::get_node*/;
228 /* Register variable[3]: Result */
229 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
230 variable[2] = variable[3];
231 goto return_label11;
232 return_label11: while(false);
233 tracehead = trace.prev;
234 return variable[2];
235 }
236 val_t list___List___last(val_t self) {
237 struct trace_t trace = {NULL, NULL, 32, LOCATE_list___List___last};
238 val_t variable[3];
239 struct WBT_ **closurevariable = NULL;
240 trace.prev = tracehead; tracehead = &trace;
241 trace.file = LOCATE_list;
242 /* Register variable[0]: Local variable */
243 variable[0] = self;
244 /* Register variable[1]: Method return value and escape marker */
245 /* Register variable[2]: Result */
246 variable[2] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
247 /* Register variable[2]: Result */
248 variable[2] = CALL_abstract_collection___Container___item(variable[2])(variable[2]) /*Container::item*/;
249 variable[1] = variable[2];
250 goto return_label12;
251 return_label12: while(false);
252 tracehead = trace.prev;
253 return variable[1];
254 }
255 void list___List___clear(val_t self) {
256 struct trace_t trace = {NULL, NULL, 166, LOCATE_list___List___clear};
257 val_t variable[2];
258 struct WBT_ **closurevariable = NULL;
259 trace.prev = tracehead; tracehead = &trace;
260 trace.file = LOCATE_list;
261 /* Register variable[0]: Local variable */
262 variable[0] = self;
263 /* Register variable[1]: Method return value and escape marker */
264 ATTR_list___List____head(variable[0]) /*List::_head*/ = NIT_NULL /*null*/;
265 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = NIT_NULL /*null*/;
266 return_label13: while(false);
267 tracehead = trace.prev;
268 return;
269 }
270 void list___List___remove(val_t self, val_t param0) {
271 struct trace_t trace = {NULL, NULL, 154, LOCATE_list___List___remove};
272 val_t variable[5];
273 struct WBT_ **closurevariable = NULL;
274 trace.prev = tracehead; tracehead = &trace;
275 trace.file = LOCATE_list;
276 /* Register variable[0]: Local variable */
277 variable[0] = self;
278 /* Register variable[1]: Local variable */
279 variable[1] = param0;
280 /* Register variable[2]: Method return value and escape marker */
281 /* Register variable[3]: Local variable */
282 /* Register variable[4]: Result */
283 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
284 /* Register variable[4]: Result */
285 variable[4] = CALL_list___List___search_node_after(variable[0])(variable[0], variable[1] /*e*/, variable[4]) /*List::search_node_after*/;
286 variable[3] = variable[4];
287 /* Register variable[4]: Result */
288 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*node*/ == NIT_NULL /*null*/) || (( variable[3] /*node*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*node*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*node*/)( variable[3] /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
289 if (UNTAG_Bool(variable[4])) { /*if*/
290 CALL_list___List___remove_node(variable[0])(variable[0], variable[3] /*node*/) /*List::remove_node*/;
291 }
292 return_label14: while(false);
293 tracehead = trace.prev;
294 return;
295 }
296 void list___List_____braeq(val_t self, val_t param0, val_t param1) {
297 struct trace_t trace = {NULL, NULL, 24, LOCATE_list___List_____braeq};
298 val_t variable[5];
299 struct WBT_ **closurevariable = NULL;
300 trace.prev = tracehead; tracehead = &trace;
301 trace.file = LOCATE_list;
302 /* Register variable[0]: Local variable */
303 variable[0] = self;
304 /* Register variable[1]: Local variable */
305 variable[1] = param0;
306 /* Register variable[2]: Local variable */
307 variable[2] = param1;
308 /* Register variable[3]: Method return value and escape marker */
309 /* Register variable[4]: Result */
310 variable[4] = CALL_list___List___get_node(variable[0])(variable[0], variable[1] /*index*/) /*List::get_node*/;
311 CALL_abstract_collection___Container___item__eq(variable[4])(variable[4], variable[2] /*item*/) /*Container::item=*/;
312 return_label15: while(false);
313 tracehead = trace.prev;
314 return;
315 }
316 void list___List___remove_at(val_t self, val_t param0) {
317 struct trace_t trace = {NULL, NULL, 160, LOCATE_list___List___remove_at};
318 val_t variable[5];
319 struct WBT_ **closurevariable = NULL;
320 trace.prev = tracehead; tracehead = &trace;
321 trace.file = LOCATE_list;
322 /* Register variable[0]: Local variable */
323 variable[0] = self;
324 /* Register variable[1]: Local variable */
325 variable[1] = param0;
326 /* Register variable[2]: Method return value and escape marker */
327 /* Register variable[3]: Local variable */
328 /* Register variable[4]: Result */
329 variable[4] = CALL_list___List___get_node(variable[0])(variable[0], variable[1] /*i*/) /*List::get_node*/;
330 variable[3] = variable[4];
331 /* Register variable[4]: Result */
332 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*node*/ == NIT_NULL /*null*/) || (( variable[3] /*node*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*node*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*node*/)( variable[3] /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
333 if (UNTAG_Bool(variable[4])) { /*if*/
334 CALL_list___List___remove_node(variable[0])(variable[0], variable[3] /*node*/) /*List::remove_node*/;
335 }
336 return_label16: while(false);
337 tracehead = trace.prev;
338 return;
339 }
340 void list___List___first__eq(val_t self, val_t param0) {
341 struct trace_t trace = {NULL, NULL, 29, LOCATE_list___List___first__eq};
342 val_t variable[4];
343 struct WBT_ **closurevariable = NULL;
344 trace.prev = tracehead; tracehead = &trace;
345 trace.file = LOCATE_list;
346 /* Register variable[0]: Local variable */
347 variable[0] = self;
348 /* Register variable[1]: Local variable */
349 variable[1] = param0;
350 /* Register variable[2]: Method return value and escape marker */
351 /* Register variable[3]: Result */
352 variable[3] = ATTR_list___List____head(variable[0]) /*List::_head*/;
353 CALL_abstract_collection___Container___item__eq(variable[3])(variable[3], variable[1] /*e*/) /*Container::item=*/;
354 return_label17: while(false);
355 tracehead = trace.prev;
356 return;
357 }
358 void list___List___last__eq(val_t self, val_t param0) {
359 struct trace_t trace = {NULL, NULL, 35, LOCATE_list___List___last__eq};
360 val_t variable[4];
361 struct WBT_ **closurevariable = NULL;
362 trace.prev = tracehead; tracehead = &trace;
363 trace.file = LOCATE_list;
364 /* Register variable[0]: Local variable */
365 variable[0] = self;
366 /* Register variable[1]: Local variable */
367 variable[1] = param0;
368 /* Register variable[2]: Method return value and escape marker */
369 /* Register variable[3]: Result */
370 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
371 CALL_abstract_collection___Container___item__eq(variable[3])(variable[3], variable[1] /*e*/) /*Container::item=*/;
372 return_label18: while(false);
373 tracehead = trace.prev;
374 return;
375 }
376 void list___List___push(val_t self, val_t param0) {
377 struct trace_t trace = {NULL, NULL, 83, LOCATE_list___List___push};
378 val_t variable[5];
379 struct WBT_ **closurevariable = NULL;
380 trace.prev = tracehead; tracehead = &trace;
381 trace.file = LOCATE_list;
382 /* Register variable[0]: Local variable */
383 variable[0] = self;
384 /* Register variable[1]: Local variable */
385 variable[1] = param0;
386 /* Register variable[2]: Method return value and escape marker */
387 /* Register variable[3]: Local variable */
388 /* Register variable[4]: Result */
389 variable[4] = NEW_ListNode_list___ListNode___init( variable[1] /*e*/) /*new ListNode[E]*/;
390 variable[3] = variable[4];
391 /* Register variable[4]: Result */
392 variable[4] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
393 /* Register variable[4]: Result */
394 variable[4] = TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], NIT_NULL /*null*/) /*Object::==*/)))));
395 if (UNTAG_Bool(variable[4])) { /*if*/
396 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[3] /*node*/;
397 } else { /*if*/
398 /* Register variable[4]: Result */
399 variable[4] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
400 CALL_list___ListNode___next__eq(variable[4])(variable[4], variable[3] /*node*/) /*ListNode::next=*/;
401 /* Register variable[4]: Result */
402 variable[4] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
403 CALL_list___ListNode___prev__eq( variable[3] /*node*/)( variable[3] /*node*/, variable[4]) /*ListNode::prev=*/;
404 }
405 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = variable[3] /*node*/;
406 return_label19: while(false);
407 tracehead = trace.prev;
408 return;
409 }
410 val_t list___List___pop(val_t self) {
411 struct trace_t trace = {NULL, NULL, 126, LOCATE_list___List___pop};
412 val_t variable[4];
413 struct WBT_ **closurevariable = NULL;
414 trace.prev = tracehead; tracehead = &trace;
415 trace.file = LOCATE_list;
416 /* Register variable[0]: Local variable */
417 variable[0] = self;
418 /* Register variable[1]: Method return value and escape marker */
419 /* Register variable[2]: Local variable */
420 /* Register variable[3]: Result */
421 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
422 variable[2] = variable[3];
423 /* Register variable[3]: Result */
424 variable[3] = CALL_list___ListNode___prev( variable[2] /*node*/)( variable[2] /*node*/) /*ListNode::prev*/;
425 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = variable[3];
426 CALL_list___ListNode___prev__eq( variable[2] /*node*/)( variable[2] /*node*/, NIT_NULL /*null*/) /*ListNode::prev=*/;
427 /* Register variable[3]: Result */
428 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
429 /* Register variable[3]: Result */
430 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
431 if (UNTAG_Bool(variable[3])) { /*if*/
432 ATTR_list___List____head(variable[0]) /*List::_head*/ = NIT_NULL /*null*/;
433 } else { /*if*/
434 /* Register variable[3]: Result */
435 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
436 CALL_list___ListNode___next__eq(variable[3])(variable[3], NIT_NULL /*null*/) /*ListNode::next=*/;
437 }
438 /* Register variable[3]: Result */
439 variable[3] = CALL_abstract_collection___Container___item( variable[2] /*node*/)( variable[2] /*node*/) /*Container::item*/;
440 variable[1] = variable[3];
441 goto return_label20;
442 return_label20: while(false);
443 tracehead = trace.prev;
444 return variable[1];
445 }
446 void list___List___unshift(val_t self, val_t param0) {
447 struct trace_t trace = {NULL, NULL, 96, LOCATE_list___List___unshift};
448 val_t variable[5];
449 struct WBT_ **closurevariable = NULL;
450 trace.prev = tracehead; tracehead = &trace;
451 trace.file = LOCATE_list;
452 /* Register variable[0]: Local variable */
453 variable[0] = self;
454 /* Register variable[1]: Local variable */
455 variable[1] = param0;
456 /* Register variable[2]: Method return value and escape marker */
457 /* Register variable[3]: Local variable */
458 /* Register variable[4]: Result */
459 variable[4] = NEW_ListNode_list___ListNode___init( variable[1] /*e*/) /*new ListNode[E]*/;
460 variable[3] = variable[4];
461 /* Register variable[4]: Result */
462 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
463 /* Register variable[4]: Result */
464 variable[4] = TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], NIT_NULL /*null*/) /*Object::==*/)))));
465 if (UNTAG_Bool(variable[4])) { /*if*/
466 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = variable[3] /*node*/;
467 } else { /*if*/
468 /* Register variable[4]: Result */
469 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
470 CALL_list___ListNode___next__eq( variable[3] /*node*/)( variable[3] /*node*/, variable[4]) /*ListNode::next=*/;
471 /* Register variable[4]: Result */
472 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
473 CALL_list___ListNode___prev__eq(variable[4])(variable[4], variable[3] /*node*/) /*ListNode::prev=*/;
474 }
475 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[3] /*node*/;
476 return_label21: while(false);
477 tracehead = trace.prev;
478 return;
479 }
480 val_t list___List___shift(val_t self) {
481 struct trace_t trace = {NULL, NULL, 140, LOCATE_list___List___shift};
482 val_t variable[4];
483 struct WBT_ **closurevariable = NULL;
484 trace.prev = tracehead; tracehead = &trace;
485 trace.file = LOCATE_list;
486 /* Register variable[0]: Local variable */
487 variable[0] = self;
488 /* Register variable[1]: Method return value and escape marker */
489 /* Register variable[2]: Local variable */
490 /* Register variable[3]: Result */
491 variable[3] = ATTR_list___List____head(variable[0]) /*List::_head*/;
492 variable[2] = variable[3];
493 /* Register variable[3]: Result */
494 variable[3] = CALL_list___ListNode___next( variable[2] /*node*/)( variable[2] /*node*/) /*ListNode::next*/;
495 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[3];
496 CALL_list___ListNode___next__eq( variable[2] /*node*/)( variable[2] /*node*/, NIT_NULL /*null*/) /*ListNode::next=*/;
497 /* Register variable[3]: Result */
498 variable[3] = ATTR_list___List____head(variable[0]) /*List::_head*/;
499 /* Register variable[3]: Result */
500 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
501 if (UNTAG_Bool(variable[3])) { /*if*/
502 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = NIT_NULL /*null*/;
503 } else { /*if*/
504 /* Register variable[3]: Result */
505 variable[3] = ATTR_list___List____head(variable[0]) /*List::_head*/;
506 CALL_list___ListNode___prev__eq(variable[3])(variable[3], NIT_NULL /*null*/) /*ListNode::prev=*/;
507 }
508 /* Register variable[3]: Result */
509 variable[3] = CALL_abstract_collection___Container___item( variable[2] /*node*/)( variable[2] /*node*/) /*Container::item*/;
510 variable[1] = variable[3];
511 goto return_label22;
512 return_label22: while(false);
513 tracehead = trace.prev;
514 return variable[1];
515 }
516 void list___List___link(val_t self, val_t param0) {
517 struct trace_t trace = {NULL, NULL, 109, LOCATE_list___List___link};
518 val_t variable[5];
519 struct WBT_ **closurevariable = NULL;
520 trace.prev = tracehead; tracehead = &trace;
521 trace.file = LOCATE_list;
522 /* Register variable[0]: Local variable */
523 variable[0] = self;
524 /* Register variable[1]: Local variable */
525 variable[1] = param0;
526 /* Register variable[2]: Method return value and escape marker */
527 /* Register variable[3]: Result */
528 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
529 /* Register variable[3]: Result */
530 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
531 if (UNTAG_Bool(variable[3])) { /*if*/
532 /* Register variable[3]: Result */
533 variable[3] = ATTR_list___List____head( variable[1] /*l*/) /*List::_head*/;
534 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[3];
535 } else { /*if*/
536 /* Register variable[3]: Result */
537 variable[3] = ATTR_list___List____head( variable[1] /*l*/) /*List::_head*/;
538 /* Register variable[3]: Result */
539 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
540 if (UNTAG_Bool(variable[3])) { /*if*/
541 /* Register variable[3]: Result */
542 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
543 /* Register variable[4]: Result */
544 variable[4] = ATTR_list___List____head( variable[1] /*l*/) /*List::_head*/;
545 CALL_list___ListNode___next__eq(variable[3])(variable[3], variable[4]) /*ListNode::next=*/;
546 /* Register variable[3]: Result */
547 variable[3] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
548 /* Register variable[3]: Result */
549 variable[3] = CALL_list___ListNode___next(variable[3])(variable[3]) /*ListNode::next*/;
550 /* Register variable[4]: Result */
551 variable[4] = ATTR_list___List____tail(variable[0]) /*List::_tail*/;
552 CALL_list___ListNode___prev__eq(variable[3])(variable[3], variable[4]) /*ListNode::prev=*/;
553 }
554 }
555 /* Register variable[3]: Result */
556 variable[3] = ATTR_list___List____tail( variable[1] /*l*/) /*List::_tail*/;
557 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = variable[3];
558 CALL_abstract_collection___RemovableCollection___clear( variable[1] /*l*/)( variable[1] /*l*/) /*List::clear*/;
559 return_label23: while(false);
560 tracehead = trace.prev;
561 return;
562 }
563 void list___List___init(val_t self, int* init_table) {
564 struct trace_t trace = {NULL, NULL, 175, LOCATE_list___List___init};
565 val_t variable[2];
566 struct WBT_ **closurevariable = NULL;
567 trace.prev = tracehead; tracehead = &trace;
568 trace.file = LOCATE_list;
569 /* Register variable[0]: Local variable */
570 variable[0] = self;
571 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_List].i]) return;
572 /* Register variable[1]: Method return value and escape marker */
573 return_label24: while(false);
574 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_List].i] = 1;
575 tracehead = trace.prev;
576 return;
577 }
578 void list___List___from(val_t self, val_t param0, int* init_table) {
579 struct trace_t trace = {NULL, NULL, 178, LOCATE_list___List___from};
580 val_t variable[3];
581 struct WBT_ **closurevariable = NULL;
582 trace.prev = tracehead; tracehead = &trace;
583 trace.file = LOCATE_list;
584 /* Register variable[0]: Local variable */
585 variable[0] = self;
586 /* Register variable[1]: Local variable */
587 variable[1] = param0;
588 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_List].i]) return;
589 /* Register variable[2]: Method return value and escape marker */
590 CALL_abstract_collection___IndexedCollection___append(variable[0])(variable[0], variable[1] /*coll*/) /*IndexedCollection::append*/;
591 return_label25: while(false);
592 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_List].i] = 1;
593 tracehead = trace.prev;
594 return;
595 }
596 val_t list___List___get_node(val_t self, val_t param0) {
597 struct trace_t trace = {NULL, NULL, 187, LOCATE_list___List___get_node};
598 val_t variable[5];
599 struct WBT_ **closurevariable = NULL;
600 trace.prev = tracehead; tracehead = &trace;
601 trace.file = LOCATE_list;
602 /* Register variable[0]: Local variable */
603 variable[0] = self;
604 /* Register variable[1]: Local variable */
605 variable[1] = param0;
606 /* Register variable[2]: Method return value and escape marker */
607 /* Register variable[3]: Local variable */
608 /* Register variable[4]: Result */
609 variable[4] = ATTR_list___List____head(variable[0]) /*List::_head*/;
610 variable[3] = variable[4];
611 /* Register variable[4]: Result */
612 variable[4] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)<UNTAG_Int( TAG_Int(0)));
613 if (UNTAG_Bool(variable[4])) { /*if*/
614 variable[2] = NIT_NULL /*null*/;
615 goto return_label26;
616 }
617 while (true) { /*while*/
618 /* Register variable[4]: Result */
619 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n*/ == NIT_NULL /*null*/) || (( variable[3] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n*/)( variable[3] /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
620 /* Ensure var variable[4]: Left 'and' operand*/
621 if (UNTAG_Bool(variable[4])) { /* and */
622 /* Register variable[4]: Result */
623 variable[4] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
624 }
625 /* Register variable[4]: Result */
626 if (!UNTAG_Bool(variable[4])) break; /* while*/
627 /* Register variable[4]: Result */
628 variable[4] = CALL_list___ListNode___next( variable[3] /*n*/)( variable[3] /*n*/) /*ListNode::next*/;
629 variable[3] = variable[4] /*n=*/;
630 variable[1] = TAG_Int(UNTAG_Int(variable[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
631 continue_27: while(0);
632 }
633 break_27: while(0);
634 variable[2] = variable[3] /*n*/;
635 goto return_label26;
636 return_label26: while(false);
637 tracehead = trace.prev;
638 return variable[2];
639 }
640 val_t list___List___search_node_after(val_t self, val_t param0, val_t param1) {
641 struct trace_t trace = {NULL, NULL, 201, LOCATE_list___List___search_node_after};
642 val_t variable[6];
643 struct WBT_ **closurevariable = NULL;
644 trace.prev = tracehead; tracehead = &trace;
645 trace.file = LOCATE_list;
646 /* Register variable[0]: Local variable */
647 variable[0] = self;
648 /* Register variable[1]: Local variable */
649 variable[1] = param0;
650 /* Register variable[2]: Local variable */
651 variable[2] = param1;
652 /* Register variable[3]: Method return value and escape marker */
653 /* Register variable[4]: Local variable */
654 variable[4] = variable[2] /*after*/;
655 while (true) { /*while*/
656 /* Register variable[5]: Result */
657 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n*/ == NIT_NULL /*null*/) || (( variable[4] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n*/)( variable[4] /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
658 /* Ensure var variable[5]: Left 'and' operand*/
659 if (UNTAG_Bool(variable[5])) { /* and */
660 /* Register variable[5]: Result */
661 variable[5] = CALL_abstract_collection___Container___item( variable[4] /*n*/)( variable[4] /*n*/) /*Container::item*/;
662 /* Register variable[5]: Result */
663 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[5] == variable[1] /*e*/) || ((variable[5] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[5])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[5], variable[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[5])(variable[5], variable[1] /*e*/) /*Object::==*/)))))));
664 }
665 /* Register variable[5]: Result */
666 if (!UNTAG_Bool(variable[5])) break; /* while*/
667 /* Register variable[5]: Result */
668 variable[5] = CALL_list___ListNode___next( variable[4] /*n*/)( variable[4] /*n*/) /*ListNode::next*/;
669 variable[4] = variable[5] /*n=*/;
670 continue_29: while(0);
671 }
672 break_29: while(0);
673 variable[3] = variable[4] /*n*/;
674 goto return_label28;
675 return_label28: while(false);
676 tracehead = trace.prev;
677 return variable[3];
678 }
679 void list___List___remove_node(val_t self, val_t param0) {
680 struct trace_t trace = {NULL, NULL, 209, LOCATE_list___List___remove_node};
681 val_t variable[5];
682 struct WBT_ **closurevariable = NULL;
683 trace.prev = tracehead; tracehead = &trace;
684 trace.file = LOCATE_list;
685 /* Register variable[0]: Local variable */
686 variable[0] = self;
687 /* Register variable[1]: Local variable */
688 variable[1] = param0;
689 /* Register variable[2]: Method return value and escape marker */
690 /* Register variable[3]: Result */
691 variable[3] = CALL_list___ListNode___prev( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::prev*/;
692 /* Register variable[3]: Result */
693 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
694 if (UNTAG_Bool(variable[3])) { /*if*/
695 /* Register variable[3]: Result */
696 variable[3] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
697 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[3];
698 /* Register variable[3]: Result */
699 variable[3] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
700 /* Register variable[3]: Result */
701 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
702 if (UNTAG_Bool(variable[3])) { /*if*/
703 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = NIT_NULL /*null*/;
704 } else { /*if*/
705 /* Register variable[3]: Result */
706 variable[3] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
707 CALL_list___ListNode___prev__eq(variable[3])(variable[3], NIT_NULL /*null*/) /*ListNode::prev=*/;
708 }
709 } else { /*if*/
710 /* Register variable[3]: Result */
711 variable[3] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
712 /* Register variable[3]: Result */
713 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
714 if (UNTAG_Bool(variable[3])) { /*if*/
715 /* Register variable[3]: Result */
716 variable[3] = CALL_list___ListNode___prev( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::prev*/;
717 ATTR_list___List____tail(variable[0]) /*List::_tail*/ = variable[3];
718 /* Register variable[3]: Result */
719 variable[3] = CALL_list___ListNode___prev( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::prev*/;
720 CALL_list___ListNode___next__eq(variable[3])(variable[3], NIT_NULL /*null*/) /*ListNode::next=*/;
721 } else { /*if*/
722 /* Register variable[3]: Result */
723 variable[3] = CALL_list___ListNode___prev( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::prev*/;
724 /* Register variable[4]: Result */
725 variable[4] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
726 CALL_list___ListNode___next__eq(variable[3])(variable[3], variable[4]) /*ListNode::next=*/;
727 /* Register variable[3]: Result */
728 variable[3] = CALL_list___ListNode___next( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::next*/;
729 /* Register variable[4]: Result */
730 variable[4] = CALL_list___ListNode___prev( variable[1] /*node*/)( variable[1] /*node*/) /*ListNode::prev*/;
731 CALL_list___ListNode___prev__eq(variable[3])(variable[3], variable[4]) /*ListNode::prev=*/;
732 }
733 }
734 return_label30: while(false);
735 tracehead = trace.prev;
736 return;
737 }
738 void list___List___insert_before(val_t self, val_t param0, val_t param1) {
739 struct trace_t trace = {NULL, NULL, 228, LOCATE_list___List___insert_before};
740 val_t variable[7];
741 struct WBT_ **closurevariable = NULL;
742 trace.prev = tracehead; tracehead = &trace;
743 trace.file = LOCATE_list;
744 /* Register variable[0]: Local variable */
745 variable[0] = self;
746 /* Register variable[1]: Local variable */
747 variable[1] = param0;
748 /* Register variable[2]: Local variable */
749 variable[2] = param1;
750 /* Register variable[3]: Method return value and escape marker */
751 /* Register variable[4]: Local variable */
752 /* Register variable[5]: Result */
753 variable[5] = NEW_ListNode_list___ListNode___init( variable[1] /*element*/) /*new ListNode[E]*/;
754 variable[4] = variable[5];
755 /* Register variable[5]: Local variable */
756 /* Register variable[6]: Result */
757 variable[6] = CALL_list___ListNode___prev( variable[2] /*node*/)( variable[2] /*node*/) /*ListNode::prev*/;
758 variable[5] = variable[6];
759 /* Register variable[6]: Result */
760 variable[6] = TAG_Bool(( variable[5] /*prev*/ == NIT_NULL /*null*/) || (( variable[5] /*prev*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*prev*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*prev*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*prev*/)( variable[5] /*prev*/, NIT_NULL /*null*/) /*Object::==*/)))));
761 if (UNTAG_Bool(variable[6])) { /*if*/
762 ATTR_list___List____head(variable[0]) /*List::_head*/ = variable[4] /*nnode*/;
763 } else { /*if*/
764 CALL_list___ListNode___next__eq( variable[5] /*prev*/)( variable[5] /*prev*/, variable[4] /*nnode*/) /*ListNode::next=*/;
765 }
766 CALL_list___ListNode___prev__eq( variable[4] /*nnode*/)( variable[4] /*nnode*/, variable[5] /*prev*/) /*ListNode::prev=*/;
767 CALL_list___ListNode___next__eq( variable[4] /*nnode*/)( variable[4] /*nnode*/, variable[2] /*node*/) /*ListNode::next=*/;
768 CALL_list___ListNode___prev__eq( variable[2] /*node*/)( variable[2] /*node*/, variable[4] /*nnode*/) /*ListNode::prev=*/;
769 return_label31: while(false);
770 tracehead = trace.prev;
771 return;
772 }
773 val_t list___ListIterator___item(val_t self) {
774 struct trace_t trace = {NULL, NULL, 246, LOCATE_list___ListIterator___item};
775 val_t variable[3];
776 struct WBT_ **closurevariable = NULL;
777 trace.prev = tracehead; tracehead = &trace;
778 trace.file = LOCATE_list;
779 /* Register variable[0]: Local variable */
780 variable[0] = self;
781 /* Register variable[1]: Method return value and escape marker */
782 /* Register variable[2]: Result */
783 variable[2] = ATTR_list___ListIterator____node(variable[0]) /*ListIterator::_node*/;
784 /* Register variable[2]: Result */
785 variable[2] = CALL_abstract_collection___Container___item(variable[2])(variable[2]) /*Container::item*/;
786 variable[1] = variable[2];
787 goto return_label32;
788 return_label32: while(false);
789 tracehead = trace.prev;
790 return variable[1];
791 }
792 void list___ListIterator___next(val_t self) {
793 struct trace_t trace = {NULL, NULL, 252, LOCATE_list___ListIterator___next};
794 val_t variable[3];
795 struct WBT_ **closurevariable = NULL;
796 trace.prev = tracehead; tracehead = &trace;
797 trace.file = LOCATE_list;
798 /* Register variable[0]: Local variable */
799 variable[0] = self;
800 /* Register variable[1]: Method return value and escape marker */
801 /* Register variable[2]: Result */
802 variable[2] = ATTR_list___ListIterator____node(variable[0]) /*ListIterator::_node*/;
803 /* Register variable[2]: Result */
804 variable[2] = CALL_list___ListNode___next(variable[2])(variable[2]) /*ListNode::next*/;
805 ATTR_list___ListIterator____node(variable[0]) /*ListIterator::_node*/ = variable[2];
806 ATTR_list___ListIterator____index(variable[0]) /*ListIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_list___ListIterator____index(variable[0]) /*ListIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
807 return_label33: while(false);
808 tracehead = trace.prev;
809 return;
810 }
811 val_t list___ListIterator___is_ok(val_t self) {
812 struct trace_t trace = {NULL, NULL, 250, LOCATE_list___ListIterator___is_ok};
813 val_t variable[3];
814 struct WBT_ **closurevariable = NULL;
815 trace.prev = tracehead; tracehead = &trace;
816 trace.file = LOCATE_list;
817 /* Register variable[0]: Local variable */
818 variable[0] = self;
819 /* Register variable[1]: Method return value and escape marker */
820 /* Register variable[2]: Result */
821 variable[2] = ATTR_list___ListIterator____node(variable[0]) /*ListIterator::_node*/;
822 /* Register variable[2]: Result */
823 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
824 variable[1] = TAG_Bool(!UNTAG_Bool(variable[2]));
825 goto return_label34;
826 return_label34: while(false);
827 tracehead = trace.prev;
828 return variable[1];
829 }
830 val_t list___ListIterator___index(val_t self) {
831 struct trace_t trace = {NULL, NULL, 268, LOCATE_list___ListIterator___index};
832 val_t *variable = NULL;
833 struct WBT_ **closurevariable = NULL;
834 trace.prev = tracehead; tracehead = &trace;
835 trace.file = LOCATE_list;
836 tracehead = trace.prev;
837 return ATTR_list___ListIterator____index( self) /*ListIterator::_index*/;
838 }
839 void list___ListIterator___init(val_t self, val_t param0, int* init_table) {
840 struct trace_t trace = {NULL, NULL, 258, LOCATE_list___ListIterator___init};
841 val_t variable[3];
842 struct WBT_ **closurevariable = NULL;
843 trace.prev = tracehead; tracehead = &trace;
844 trace.file = LOCATE_list;
845 /* Register variable[0]: Local variable */
846 variable[0] = self;
847 /* Register variable[1]: Local variable */
848 variable[1] = param0;
849 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ListIterator].i]) return;
850 /* Register variable[2]: Method return value and escape marker */
851 ATTR_list___ListIterator____node(variable[0]) /*ListIterator::_node*/ = variable[1] /*node*/;
852 ATTR_list___ListIterator____index(variable[0]) /*ListIterator::_index*/ = TAG_Int(0);
853 return_label35: while(false);
854 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ListIterator].i] = 1;
855 tracehead = trace.prev;
856 return;
857 }
858 void list___ListNode___init(val_t self, val_t param0, int* init_table) {
859 struct trace_t trace = {NULL, NULL, 275, LOCATE_list___ListNode___init};
860 val_t variable[3];
861 struct WBT_ **closurevariable = NULL;
862 trace.prev = tracehead; tracehead = &trace;
863 trace.file = LOCATE_list;
864 /* Register variable[0]: Local variable */
865 variable[0] = self;
866 /* Register variable[1]: Local variable */
867 variable[1] = param0;
868 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ListNode].i]) return;
869 /* Register variable[2]: Method return value and escape marker */
870 CALL_abstract_collection___Container___init(variable[0])(variable[0], variable[1], init_table /*YYY*/) /*Container::init*/;
871 CALL_abstract_collection___Container___item__eq(variable[0])(variable[0], variable[1] /*i*/) /*Container::item=*/;
872 return_label36: while(false);
873 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ListNode].i] = 1;
874 tracehead = trace.prev;
875 return;
876 }
877 val_t list___ListNode___next(val_t self) {
878 struct trace_t trace = {NULL, NULL, 280, LOCATE_list___ListNode___next};
879 val_t *variable = NULL;
880 struct WBT_ **closurevariable = NULL;
881 trace.prev = tracehead; tracehead = &trace;
882 trace.file = LOCATE_list;
883 tracehead = trace.prev;
884 return ATTR_list___ListNode____next( self) /*ListNode::_next*/;
885 }
886 void list___ListNode___next__eq(val_t self, val_t param0) {
887 struct trace_t trace = {NULL, NULL, 280, LOCATE_list___ListNode___next__eq};
888 val_t *variable = NULL;
889 struct WBT_ **closurevariable = NULL;
890 trace.prev = tracehead; tracehead = &trace;
891 trace.file = LOCATE_list;
892 ATTR_list___ListNode____next( self) /*ListNode::_next*/ = param0;
893 tracehead = trace.prev;
894 return;
895 }
896 val_t list___ListNode___prev(val_t self) {
897 struct trace_t trace = {NULL, NULL, 283, LOCATE_list___ListNode___prev};
898 val_t *variable = NULL;
899 struct WBT_ **closurevariable = NULL;
900 trace.prev = tracehead; tracehead = &trace;
901 trace.file = LOCATE_list;
902 tracehead = trace.prev;
903 return ATTR_list___ListNode____prev( self) /*ListNode::_prev*/;
904 }
905 void list___ListNode___prev__eq(val_t self, val_t param0) {
906 struct trace_t trace = {NULL, NULL, 283, LOCATE_list___ListNode___prev__eq};
907 val_t *variable = NULL;
908 struct WBT_ **closurevariable = NULL;
909 trace.prev = tracehead; tracehead = &trace;
910 trace.file = LOCATE_list;
911 ATTR_list___ListNode____prev( self) /*ListNode::_prev*/ = param0;
912 tracehead = trace.prev;
913 return;
914 }