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