Update c_src
[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_____bra(val_t self, val_t param0) {
4 struct trace_t trace = {NULL, LOCATE_list, 21, LOCATE_list___List_____bra};
5 val_t variable0;
6 val_t variable1;
7 trace.prev = tracehead; tracehead = &trace;
8 variable0 = param0;
9 variable1 = ((list___List___get_node_t)CALL( self,COLOR_list___List___get_node))( self, variable0 /*index*/) /*List::get_node*/;
10 variable1 = ((abstract_collection___Container___item_t)CALL(variable1,COLOR_abstract_collection___Container___item))(variable1) /*Container::item*/;
11 goto return_label0;
12 return_label0: while(false);
13 tracehead = trace.prev;
14 return variable1;
15 }
16 void list___List_____braeq(val_t self, val_t param0, val_t param1) {
17 struct trace_t trace = {NULL, LOCATE_list, 24, LOCATE_list___List_____braeq};
18 val_t variable0;
19 val_t variable1;
20 val_t variable2;
21 trace.prev = tracehead; tracehead = &trace;
22 variable0 = param0;
23 variable1 = param1;
24 variable2 = ((list___List___get_node_t)CALL( self,COLOR_list___List___get_node))( self, variable0 /*index*/) /*List::get_node*/;
25 ((abstract_collection___Container___item__eq_t)CALL(variable2,COLOR_abstract_collection___Container___item__eq))(variable2, variable1 /*item*/) /*Container::item=*/;
26 tracehead = trace.prev;
27 return;
28 }
29 val_t list___List___first(val_t self) {
30 struct trace_t trace = {NULL, LOCATE_list, 26, LOCATE_list___List___first};
31 val_t variable0;
32 trace.prev = tracehead; tracehead = &trace;
33 variable0 = ATTR_list___List____head( self) /*List::_head*/;
34 variable0 = ((abstract_collection___Container___item_t)CALL(variable0,COLOR_abstract_collection___Container___item))(variable0) /*Container::item*/;
35 goto return_label2;
36 return_label2: while(false);
37 tracehead = trace.prev;
38 return variable0;
39 }
40 void list___List___first__eq(val_t self, val_t param0) {
41 struct trace_t trace = {NULL, LOCATE_list, 29, LOCATE_list___List___first__eq};
42 val_t variable0;
43 val_t variable1;
44 trace.prev = tracehead; tracehead = &trace;
45 variable0 = param0;
46 variable1 = ATTR_list___List____head( self) /*List::_head*/;
47 ((abstract_collection___Container___item__eq_t)CALL(variable1,COLOR_abstract_collection___Container___item__eq))(variable1, variable0 /*e*/) /*Container::item=*/;
48 tracehead = trace.prev;
49 return;
50 }
51 val_t list___List___last(val_t self) {
52 struct trace_t trace = {NULL, LOCATE_list, 32, LOCATE_list___List___last};
53 val_t variable0;
54 trace.prev = tracehead; tracehead = &trace;
55 variable0 = ATTR_list___List____tail( self) /*List::_tail*/;
56 variable0 = ((abstract_collection___Container___item_t)CALL(variable0,COLOR_abstract_collection___Container___item))(variable0) /*Container::item*/;
57 goto return_label4;
58 return_label4: while(false);
59 tracehead = trace.prev;
60 return variable0;
61 }
62 void list___List___last__eq(val_t self, val_t param0) {
63 struct trace_t trace = {NULL, LOCATE_list, 35, LOCATE_list___List___last__eq};
64 val_t variable0;
65 val_t variable1;
66 trace.prev = tracehead; tracehead = &trace;
67 variable0 = param0;
68 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
69 ((abstract_collection___Container___item__eq_t)CALL(variable1,COLOR_abstract_collection___Container___item__eq))(variable1, variable0 /*e*/) /*Container::item=*/;
70 tracehead = trace.prev;
71 return;
72 }
73 val_t list___List___is_empty(val_t self) {
74 struct trace_t trace = {NULL, LOCATE_list, 40, LOCATE_list___List___is_empty};
75 val_t variable0;
76 trace.prev = tracehead; tracehead = &trace;
77 variable0 = ATTR_list___List____head( self) /*List::_head*/;
78 variable0 = TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Object::==*/)))));
79 goto return_label6;
80 return_label6: while(false);
81 tracehead = trace.prev;
82 return variable0;
83 }
84 val_t list___List___length(val_t self) {
85 struct trace_t trace = {NULL, LOCATE_list, 43, LOCATE_list___List___length};
86 val_t variable0;
87 val_t variable1;
88 val_t variable2;
89 trace.prev = tracehead; tracehead = &trace;
90 variable0 = TAG_Int(0);
91 variable2 = ATTR_list___List____head( self) /*List::_head*/;
92 variable1 = variable2;
93 while (true) { /*while*/
94 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*t*/ == NIT_NULL /*null*/) || (( variable1 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))( variable1 /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
95 if (!UNTAG_Bool(variable2)) break; /* while*/
96 variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int( TAG_Int(1))) /*l*/;
97 variable2 = ((list___ListNode___next_t)CALL( variable1 /*t*/,COLOR_list___ListNode___next))( variable1 /*t*/) /*ListNode::next*/;
98 variable1 = variable2 /*t=*/;
99 continue_8: while(0);
100 }
101 break_8: while(0);
102 variable0 = variable0 /*l*/;
103 goto return_label7;
104 return_label7: while(false);
105 tracehead = trace.prev;
106 return variable0;
107 }
108 val_t list___List___has(val_t self, val_t param0) {
109 struct trace_t trace = {NULL, LOCATE_list, 55, LOCATE_list___List___has};
110 val_t variable0;
111 val_t variable1;
112 trace.prev = tracehead; tracehead = &trace;
113 variable0 = param0;
114 variable1 = ATTR_list___List____head( self) /*List::_head*/;
115 variable1 = ((list___List___search_node_after_t)CALL( self,COLOR_list___List___search_node_after))( self, variable0 /*e*/, variable1) /*List::search_node_after*/;
116 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))))));
117 goto return_label9;
118 return_label9: while(false);
119 tracehead = trace.prev;
120 return variable1;
121 }
122 val_t list___List___has_only(val_t self, val_t param0) {
123 struct trace_t trace = {NULL, LOCATE_list, 58, LOCATE_list___List___has_only};
124 val_t variable0;
125 val_t variable1;
126 val_t variable2;
127 trace.prev = tracehead; tracehead = &trace;
128 variable0 = param0;
129 variable2 = ATTR_list___List____head( self) /*List::_head*/;
130 variable1 = variable2;
131 while (true) { /*while*/
132 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*node*/ == NIT_NULL /*null*/) || (( variable1 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))( variable1 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
133 if (!UNTAG_Bool(variable2)) break; /* while*/
134 variable2 = ((abstract_collection___Container___item_t)CALL( variable1 /*node*/,COLOR_abstract_collection___Container___item))( variable1 /*node*/) /*Container::item*/;
135 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == variable0 /*e*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*e*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, variable0 /*e*/) /*Object::==*/)))))));
136 if (UNTAG_Bool(variable2)) { /*if*/
137 variable1 = TAG_Bool(false);
138 goto return_label10;
139 }
140 variable2 = ((list___ListNode___next_t)CALL( variable1 /*node*/,COLOR_list___ListNode___next))( variable1 /*node*/) /*ListNode::next*/;
141 variable1 = variable2 /*node=*/;
142 continue_11: while(0);
143 }
144 break_11: while(0);
145 variable1 = TAG_Bool(true);
146 goto return_label10;
147 return_label10: while(false);
148 tracehead = trace.prev;
149 return variable1;
150 }
151 val_t list___List___count(val_t self, val_t param0) {
152 struct trace_t trace = {NULL, LOCATE_list, 68, LOCATE_list___List___count};
153 val_t variable0;
154 val_t variable1;
155 val_t variable2;
156 val_t variable3;
157 trace.prev = tracehead; tracehead = &trace;
158 variable0 = param0;
159 variable1 = TAG_Int(0);
160 variable3 = ATTR_list___List____head( self) /*List::_head*/;
161 variable2 = variable3;
162 while (true) { /*while*/
163 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*node*/ == NIT_NULL /*null*/) || (( variable2 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*node*/,COLOR_kernel___Object_____eqeq))( variable2 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
164 if (!UNTAG_Bool(variable3)) break; /* while*/
165 variable3 = ((abstract_collection___Container___item_t)CALL( variable2 /*node*/,COLOR_abstract_collection___Container___item))( variable2 /*node*/) /*Container::item*/;
166 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable0 /*e*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*e*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*e*/) /*Object::==*/)))))));
167 if (UNTAG_Bool(variable3)) { /*if*/
168 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*nb*/;
169 }
170 variable3 = ((list___ListNode___next_t)CALL( variable2 /*node*/,COLOR_list___ListNode___next))( variable2 /*node*/) /*ListNode::next*/;
171 variable2 = variable3 /*node=*/;
172 continue_13: while(0);
173 }
174 break_13: while(0);
175 variable1 = variable1 /*nb*/;
176 goto return_label12;
177 return_label12: while(false);
178 tracehead = trace.prev;
179 return variable1;
180 }
181 val_t list___List___has_key(val_t self, val_t param0) {
182 struct trace_t trace = {NULL, LOCATE_list, 79, LOCATE_list___List___has_key};
183 val_t variable0;
184 val_t variable1;
185 trace.prev = tracehead; tracehead = &trace;
186 variable0 = param0;
187 variable1 = ((list___List___get_node_t)CALL( self,COLOR_list___List___get_node))( self, variable0 /*index*/) /*List::get_node*/;
188 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))))));
189 goto return_label14;
190 return_label14: while(false);
191 tracehead = trace.prev;
192 return variable1;
193 }
194 void list___List___push(val_t self, val_t param0) {
195 struct trace_t trace = {NULL, LOCATE_list, 83, LOCATE_list___List___push};
196 val_t variable0;
197 val_t variable1;
198 val_t variable2;
199 trace.prev = tracehead; tracehead = &trace;
200 variable0 = param0;
201 variable2 = NEW_list___ListNode___init( variable0 /*e*/); /*new ListNode[E]*/
202 variable1 = variable2;
203 variable2 = ATTR_list___List____tail( self) /*List::_tail*/;
204 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))));
205 if (UNTAG_Bool(variable2)) { /*if*/
206 ATTR_list___List____head( self) /*List::_head*/ = variable1 /*node*/;
207 } else { /*if*/
208 variable2 = ATTR_list___List____tail( self) /*List::_tail*/;
209 ((list___ListNode___next__eq_t)CALL(variable2,COLOR_list___ListNode___next__eq))(variable2, variable1 /*node*/) /*ListNode::next=*/;
210 variable2 = ATTR_list___List____tail( self) /*List::_tail*/;
211 ((list___ListNode___prev__eq_t)CALL( variable1 /*node*/,COLOR_list___ListNode___prev__eq))( variable1 /*node*/, variable2) /*ListNode::prev=*/;
212 }
213 ATTR_list___List____tail( self) /*List::_tail*/ = variable1 /*node*/;
214 tracehead = trace.prev;
215 return;
216 }
217 void list___List___unshift(val_t self, val_t param0) {
218 struct trace_t trace = {NULL, LOCATE_list, 96, LOCATE_list___List___unshift};
219 val_t variable0;
220 val_t variable1;
221 val_t variable2;
222 trace.prev = tracehead; tracehead = &trace;
223 variable0 = param0;
224 variable2 = NEW_list___ListNode___init( variable0 /*e*/); /*new ListNode[E]*/
225 variable1 = variable2;
226 variable2 = ATTR_list___List____head( self) /*List::_head*/;
227 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))));
228 if (UNTAG_Bool(variable2)) { /*if*/
229 ATTR_list___List____tail( self) /*List::_tail*/ = variable1 /*node*/;
230 } else { /*if*/
231 variable2 = ATTR_list___List____head( self) /*List::_head*/;
232 ((list___ListNode___next__eq_t)CALL( variable1 /*node*/,COLOR_list___ListNode___next__eq))( variable1 /*node*/, variable2) /*ListNode::next=*/;
233 variable2 = ATTR_list___List____head( self) /*List::_head*/;
234 ((list___ListNode___prev__eq_t)CALL(variable2,COLOR_list___ListNode___prev__eq))(variable2, variable1 /*node*/) /*ListNode::prev=*/;
235 }
236 ATTR_list___List____head( self) /*List::_head*/ = variable1 /*node*/;
237 tracehead = trace.prev;
238 return;
239 }
240 void list___List___link(val_t self, val_t param0) {
241 struct trace_t trace = {NULL, LOCATE_list, 109, LOCATE_list___List___link};
242 val_t variable0;
243 val_t variable1;
244 val_t variable2;
245 trace.prev = tracehead; tracehead = &trace;
246 variable0 = param0;
247 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
248 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
249 if (UNTAG_Bool(variable1)) { /*if*/
250 variable1 = ATTR_list___List____head( variable0 /*l*/) /*List::_head*/;
251 ATTR_list___List____head( self) /*List::_head*/ = variable1;
252 } else { /*if*/
253 variable1 = ATTR_list___List____head( variable0 /*l*/) /*List::_head*/;
254 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))))));
255 if (UNTAG_Bool(variable1)) { /*if*/
256 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
257 variable2 = ATTR_list___List____head( variable0 /*l*/) /*List::_head*/;
258 ((list___ListNode___next__eq_t)CALL(variable1,COLOR_list___ListNode___next__eq))(variable1, variable2) /*ListNode::next=*/;
259 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
260 variable1 = ((list___ListNode___next_t)CALL(variable1,COLOR_list___ListNode___next))(variable1) /*ListNode::next*/;
261 variable2 = ATTR_list___List____tail( self) /*List::_tail*/;
262 ((list___ListNode___prev__eq_t)CALL(variable1,COLOR_list___ListNode___prev__eq))(variable1, variable2) /*ListNode::prev=*/;
263 }
264 }
265 variable1 = ATTR_list___List____tail( variable0 /*l*/) /*List::_tail*/;
266 ATTR_list___List____tail( self) /*List::_tail*/ = variable1;
267 ((list___List___clear_t)CALL( variable0 /*l*/,COLOR_abstract_collection___RemovableCollection___clear))( variable0 /*l*/) /*List::clear*/;
268 tracehead = trace.prev;
269 return;
270 }
271 val_t list___List___pop(val_t self) {
272 struct trace_t trace = {NULL, LOCATE_list, 126, LOCATE_list___List___pop};
273 val_t variable0;
274 val_t variable1;
275 trace.prev = tracehead; tracehead = &trace;
276 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
277 variable0 = variable1;
278 variable1 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
279 ATTR_list___List____tail( self) /*List::_tail*/ = variable1;
280 ((list___ListNode___prev__eq_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev__eq))( variable0 /*node*/, NIT_NULL /*null*/) /*ListNode::prev=*/;
281 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
282 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
283 if (UNTAG_Bool(variable1)) { /*if*/
284 ATTR_list___List____head( self) /*List::_head*/ = NIT_NULL /*null*/;
285 } else { /*if*/
286 variable1 = ATTR_list___List____tail( self) /*List::_tail*/;
287 ((list___ListNode___next__eq_t)CALL(variable1,COLOR_list___ListNode___next__eq))(variable1, NIT_NULL /*null*/) /*ListNode::next=*/;
288 }
289 variable1 = ((abstract_collection___Container___item_t)CALL( variable0 /*node*/,COLOR_abstract_collection___Container___item))( variable0 /*node*/) /*Container::item*/;
290 variable0 = variable1;
291 goto return_label18;
292 return_label18: while(false);
293 tracehead = trace.prev;
294 return variable0;
295 }
296 val_t list___List___shift(val_t self) {
297 struct trace_t trace = {NULL, LOCATE_list, 140, LOCATE_list___List___shift};
298 val_t variable0;
299 val_t variable1;
300 trace.prev = tracehead; tracehead = &trace;
301 variable1 = ATTR_list___List____head( self) /*List::_head*/;
302 variable0 = variable1;
303 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
304 ATTR_list___List____head( self) /*List::_head*/ = variable1;
305 ((list___ListNode___next__eq_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next__eq))( variable0 /*node*/, NIT_NULL /*null*/) /*ListNode::next=*/;
306 variable1 = ATTR_list___List____head( self) /*List::_head*/;
307 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
308 if (UNTAG_Bool(variable1)) { /*if*/
309 ATTR_list___List____tail( self) /*List::_tail*/ = NIT_NULL /*null*/;
310 } else { /*if*/
311 variable1 = ATTR_list___List____head( self) /*List::_head*/;
312 ((list___ListNode___prev__eq_t)CALL(variable1,COLOR_list___ListNode___prev__eq))(variable1, NIT_NULL /*null*/) /*ListNode::prev=*/;
313 }
314 variable1 = ((abstract_collection___Container___item_t)CALL( variable0 /*node*/,COLOR_abstract_collection___Container___item))( variable0 /*node*/) /*Container::item*/;
315 variable0 = variable1;
316 goto return_label19;
317 return_label19: while(false);
318 tracehead = trace.prev;
319 return variable0;
320 }
321 void list___List___remove(val_t self, val_t param0) {
322 struct trace_t trace = {NULL, LOCATE_list, 154, LOCATE_list___List___remove};
323 val_t variable0;
324 val_t variable1;
325 val_t variable2;
326 trace.prev = tracehead; tracehead = &trace;
327 variable0 = param0;
328 variable2 = ATTR_list___List____head( self) /*List::_head*/;
329 variable2 = ((list___List___search_node_after_t)CALL( self,COLOR_list___List___search_node_after))( self, variable0 /*e*/, variable2) /*List::search_node_after*/;
330 variable1 = variable2;
331 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*node*/ == NIT_NULL /*null*/) || (( variable1 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))( variable1 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
332 if (UNTAG_Bool(variable2)) { /*if*/
333 ((list___List___remove_node_t)CALL( self,COLOR_list___List___remove_node))( self, variable1 /*node*/) /*List::remove_node*/;
334 }
335 tracehead = trace.prev;
336 return;
337 }
338 void list___List___remove_at(val_t self, val_t param0) {
339 struct trace_t trace = {NULL, LOCATE_list, 160, LOCATE_list___List___remove_at};
340 val_t variable0;
341 val_t variable1;
342 val_t variable2;
343 trace.prev = tracehead; tracehead = &trace;
344 variable0 = param0;
345 variable2 = ((list___List___get_node_t)CALL( self,COLOR_list___List___get_node))( self, variable0 /*i*/) /*List::get_node*/;
346 variable1 = variable2;
347 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*node*/ == NIT_NULL /*null*/) || (( variable1 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))( variable1 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
348 if (UNTAG_Bool(variable2)) { /*if*/
349 ((list___List___remove_node_t)CALL( self,COLOR_list___List___remove_node))( self, variable1 /*node*/) /*List::remove_node*/;
350 }
351 tracehead = trace.prev;
352 return;
353 }
354 void list___List___clear(val_t self) {
355 struct trace_t trace = {NULL, LOCATE_list, 166, LOCATE_list___List___clear};
356 trace.prev = tracehead; tracehead = &trace;
357 ATTR_list___List____head( self) /*List::_head*/ = NIT_NULL /*null*/;
358 ATTR_list___List____tail( self) /*List::_tail*/ = NIT_NULL /*null*/;
359 tracehead = trace.prev;
360 return;
361 }
362 val_t list___List___iterator(val_t self) {
363 struct trace_t trace = {NULL, LOCATE_list, 173, LOCATE_list___List___iterator};
364 val_t variable0;
365 val_t variable1;
366 trace.prev = tracehead; tracehead = &trace;
367 variable0 = ATTR_list___List____head( self) /*List::_head*/;
368 variable1 = NEW_list___ListIterator___init(variable0); /*new ListIterator[E]*/
369 variable0 = variable1;
370 goto return_label23;
371 return_label23: while(false);
372 tracehead = trace.prev;
373 return variable0;
374 }
375 void list___List___init(val_t self, int* init_table) {
376 struct trace_t trace = {NULL, LOCATE_list, 175, LOCATE_list___List___init};
377 trace.prev = tracehead; tracehead = &trace;
378 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_List].i]) return;
379 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_List].i] = 1;
380 tracehead = trace.prev;
381 return;
382 }
383 void list___List___from(val_t self, val_t param0, int* init_table) {
384 struct trace_t trace = {NULL, LOCATE_list, 178, LOCATE_list___List___from};
385 val_t variable0;
386 trace.prev = tracehead; tracehead = &trace;
387 variable0 = param0;
388 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_List].i]) return;
389 ((abstract_collection___IndexedCollection___append_t)CALL( self,COLOR_abstract_collection___IndexedCollection___append))( self, variable0 /*coll*/) /*IndexedCollection::append*/;
390 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_List].i] = 1;
391 tracehead = trace.prev;
392 return;
393 }
394 val_t list___List___get_node(val_t self, val_t param0) {
395 struct trace_t trace = {NULL, LOCATE_list, 187, LOCATE_list___List___get_node};
396 val_t variable0;
397 val_t variable1;
398 val_t variable2;
399 val_t variable3;
400 trace.prev = tracehead; tracehead = &trace;
401 variable0 = param0;
402 variable2 = ATTR_list___List____head( self) /*List::_head*/;
403 variable1 = variable2;
404 variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( TAG_Int(0)));
405 if (UNTAG_Bool(variable2)) { /*if*/
406 variable1 = NIT_NULL /*null*/;
407 goto return_label26;
408 }
409 while (true) { /*while*/
410 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n*/ == NIT_NULL /*null*/) || (( variable1 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n*/,COLOR_kernel___Object_____eqeq))( variable1 /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
411 variable3 = variable2;
412 if (UNTAG_Bool(variable3)) { /* and */
413 variable3 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>UNTAG_Int( TAG_Int(0)));
414 }
415 variable2 = variable3;
416 if (!UNTAG_Bool(variable2)) break; /* while*/
417 variable2 = ((list___ListNode___next_t)CALL( variable1 /*n*/,COLOR_list___ListNode___next))( variable1 /*n*/) /*ListNode::next*/;
418 variable1 = variable2 /*n=*/;
419 variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*i*/;
420 continue_27: while(0);
421 }
422 break_27: while(0);
423 variable1 = variable1 /*n*/;
424 goto return_label26;
425 return_label26: while(false);
426 tracehead = trace.prev;
427 return variable1;
428 }
429 val_t list___List___search_node_after(val_t self, val_t param0, val_t param1) {
430 struct trace_t trace = {NULL, LOCATE_list, 201, LOCATE_list___List___search_node_after};
431 val_t variable0;
432 val_t variable1;
433 val_t variable2;
434 val_t variable3;
435 val_t variable4;
436 trace.prev = tracehead; tracehead = &trace;
437 variable0 = param0;
438 variable1 = param1;
439 variable2 = variable1 /*after*/;
440 while (true) { /*while*/
441 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n*/ == NIT_NULL /*null*/) || (( variable2 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n*/,COLOR_kernel___Object_____eqeq))( variable2 /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
442 variable4 = variable3;
443 if (UNTAG_Bool(variable4)) { /* and */
444 variable4 = ((abstract_collection___Container___item_t)CALL( variable2 /*n*/,COLOR_abstract_collection___Container___item))( variable2 /*n*/) /*Container::item*/;
445 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 == variable0 /*e*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*e*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*e*/) /*Object::==*/)))))));
446 }
447 variable3 = variable4;
448 if (!UNTAG_Bool(variable3)) break; /* while*/
449 variable3 = ((list___ListNode___next_t)CALL( variable2 /*n*/,COLOR_list___ListNode___next))( variable2 /*n*/) /*ListNode::next*/;
450 variable2 = variable3 /*n=*/;
451 continue_29: while(0);
452 }
453 break_29: while(0);
454 variable2 = variable2 /*n*/;
455 goto return_label28;
456 return_label28: while(false);
457 tracehead = trace.prev;
458 return variable2;
459 }
460 void list___List___remove_node(val_t self, val_t param0) {
461 struct trace_t trace = {NULL, LOCATE_list, 209, LOCATE_list___List___remove_node};
462 val_t variable0;
463 val_t variable1;
464 val_t variable2;
465 trace.prev = tracehead; tracehead = &trace;
466 variable0 = param0;
467 variable1 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
468 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
469 if (UNTAG_Bool(variable1)) { /*if*/
470 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
471 ATTR_list___List____head( self) /*List::_head*/ = variable1;
472 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
473 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
474 if (UNTAG_Bool(variable1)) { /*if*/
475 ATTR_list___List____tail( self) /*List::_tail*/ = NIT_NULL /*null*/;
476 } else { /*if*/
477 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
478 ((list___ListNode___prev__eq_t)CALL(variable1,COLOR_list___ListNode___prev__eq))(variable1, NIT_NULL /*null*/) /*ListNode::prev=*/;
479 }
480 } else { /*if*/
481 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
482 variable1 = TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))));
483 if (UNTAG_Bool(variable1)) { /*if*/
484 variable1 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
485 ATTR_list___List____tail( self) /*List::_tail*/ = variable1;
486 variable1 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
487 ((list___ListNode___next__eq_t)CALL(variable1,COLOR_list___ListNode___next__eq))(variable1, NIT_NULL /*null*/) /*ListNode::next=*/;
488 } else { /*if*/
489 variable1 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
490 variable2 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
491 ((list___ListNode___next__eq_t)CALL(variable1,COLOR_list___ListNode___next__eq))(variable1, variable2) /*ListNode::next=*/;
492 variable1 = ((list___ListNode___next_t)CALL( variable0 /*node*/,COLOR_list___ListNode___next))( variable0 /*node*/) /*ListNode::next*/;
493 variable2 = ((list___ListNode___prev_t)CALL( variable0 /*node*/,COLOR_list___ListNode___prev))( variable0 /*node*/) /*ListNode::prev*/;
494 ((list___ListNode___prev__eq_t)CALL(variable1,COLOR_list___ListNode___prev__eq))(variable1, variable2) /*ListNode::prev=*/;
495 }
496 }
497 tracehead = trace.prev;
498 return;
499 }
500 void list___List___insert_before(val_t self, val_t param0, val_t param1) {
501 struct trace_t trace = {NULL, LOCATE_list, 228, LOCATE_list___List___insert_before};
502 val_t variable0;
503 val_t variable1;
504 val_t variable2;
505 val_t variable3;
506 val_t variable4;
507 trace.prev = tracehead; tracehead = &trace;
508 variable0 = param0;
509 variable1 = param1;
510 variable3 = NEW_list___ListNode___init( variable0 /*element*/); /*new ListNode[E]*/
511 variable2 = variable3;
512 variable4 = ((list___ListNode___prev_t)CALL( variable1 /*node*/,COLOR_list___ListNode___prev))( variable1 /*node*/) /*ListNode::prev*/;
513 variable3 = variable4;
514 variable4 = TAG_Bool(( variable3 /*prev*/ == NIT_NULL /*null*/) || (( variable3 /*prev*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*prev*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*prev*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*prev*/,COLOR_kernel___Object_____eqeq))( variable3 /*prev*/, NIT_NULL /*null*/) /*Object::==*/)))));
515 if (UNTAG_Bool(variable4)) { /*if*/
516 ATTR_list___List____head( self) /*List::_head*/ = variable2 /*nnode*/;
517 } else { /*if*/
518 ((list___ListNode___next__eq_t)CALL( variable3 /*prev*/,COLOR_list___ListNode___next__eq))( variable3 /*prev*/, variable2 /*nnode*/) /*ListNode::next=*/;
519 }
520 ((list___ListNode___prev__eq_t)CALL( variable2 /*nnode*/,COLOR_list___ListNode___prev__eq))( variable2 /*nnode*/, variable3 /*prev*/) /*ListNode::prev=*/;
521 ((list___ListNode___next__eq_t)CALL( variable2 /*nnode*/,COLOR_list___ListNode___next__eq))( variable2 /*nnode*/, variable1 /*node*/) /*ListNode::next=*/;
522 ((list___ListNode___prev__eq_t)CALL( variable1 /*node*/,COLOR_list___ListNode___prev__eq))( variable1 /*node*/, variable2 /*nnode*/) /*ListNode::prev=*/;
523 tracehead = trace.prev;
524 return;
525 }
526 val_t list___ListIterator___item(val_t self) {
527 struct trace_t trace = {NULL, LOCATE_list, 246, LOCATE_list___ListIterator___item};
528 val_t variable0;
529 trace.prev = tracehead; tracehead = &trace;
530 variable0 = ATTR_list___ListIterator____node( self) /*ListIterator::_node*/;
531 variable0 = ((abstract_collection___Container___item_t)CALL(variable0,COLOR_abstract_collection___Container___item))(variable0) /*Container::item*/;
532 goto return_label32;
533 return_label32: while(false);
534 tracehead = trace.prev;
535 return variable0;
536 }
537 void list___ListIterator___item__eq(val_t self, val_t param0) {
538 struct trace_t trace = {NULL, LOCATE_list, 248, LOCATE_list___ListIterator___item__eq};
539 val_t variable0;
540 val_t variable1;
541 trace.prev = tracehead; tracehead = &trace;
542 variable0 = param0;
543 variable1 = ATTR_list___ListIterator____node( self) /*ListIterator::_node*/;
544 ((abstract_collection___Container___item__eq_t)CALL(variable1,COLOR_abstract_collection___Container___item__eq))(variable1, variable0 /*e*/) /*Container::item=*/;
545 tracehead = trace.prev;
546 return;
547 }
548 val_t list___ListIterator___is_ok(val_t self) {
549 struct trace_t trace = {NULL, LOCATE_list, 250, LOCATE_list___ListIterator___is_ok};
550 val_t variable0;
551 trace.prev = tracehead; tracehead = &trace;
552 variable0 = ATTR_list___ListIterator____node( self) /*ListIterator::_node*/;
553 variable0 = TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Object::==*/)))));
554 variable0 = TAG_Bool(!UNTAG_Bool(variable0));
555 goto return_label34;
556 return_label34: while(false);
557 tracehead = trace.prev;
558 return variable0;
559 }
560 void list___ListIterator___next(val_t self) {
561 struct trace_t trace = {NULL, LOCATE_list, 252, LOCATE_list___ListIterator___next};
562 val_t variable0;
563 trace.prev = tracehead; tracehead = &trace;
564 variable0 = ATTR_list___ListIterator____node( self) /*ListIterator::_node*/;
565 variable0 = ((list___ListNode___next_t)CALL(variable0,COLOR_list___ListNode___next))(variable0) /*ListNode::next*/;
566 ATTR_list___ListIterator____node( self) /*ListIterator::_node*/ = variable0;
567 ATTR_list___ListIterator____index( self) /*ListIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_list___ListIterator____index( self) /*ListIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
568 tracehead = trace.prev;
569 return;
570 }
571 void list___ListIterator___init(val_t self, val_t param0, int* init_table) {
572 struct trace_t trace = {NULL, LOCATE_list, 258, LOCATE_list___ListIterator___init};
573 val_t variable0;
574 trace.prev = tracehead; tracehead = &trace;
575 variable0 = param0;
576 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ListIterator].i]) return;
577 ATTR_list___ListIterator____node( self) /*ListIterator::_node*/ = variable0 /*node*/;
578 ATTR_list___ListIterator____index( self) /*ListIterator::_index*/ = TAG_Int(0);
579 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ListIterator].i] = 1;
580 tracehead = trace.prev;
581 return;
582 }
583 val_t list___ListIterator___index(val_t self) {
584 struct trace_t trace = {NULL, LOCATE_list, 268, LOCATE_list___ListIterator___index};
585 trace.prev = tracehead; tracehead = &trace;
586 tracehead = trace.prev;
587 return ATTR_list___ListIterator____index( self) /*ListIterator::_index*/;
588 }
589 void list___ListNode___init(val_t self, val_t param0, int* init_table) {
590 struct trace_t trace = {NULL, LOCATE_list, 275, LOCATE_list___ListNode___init};
591 val_t variable0;
592 trace.prev = tracehead; tracehead = &trace;
593 variable0 = param0;
594 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ListNode].i]) return;
595 ((abstract_collection___Container___item__eq_t)CALL( self,COLOR_abstract_collection___Container___item__eq))( self, variable0 /*i*/) /*Container::item=*/;
596 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ListNode].i] = 1;
597 tracehead = trace.prev;
598 return;
599 }
600 val_t list___ListNode___next(val_t self) {
601 struct trace_t trace = {NULL, LOCATE_list, 280, LOCATE_list___ListNode___next};
602 trace.prev = tracehead; tracehead = &trace;
603 tracehead = trace.prev;
604 return ATTR_list___ListNode____next( self) /*ListNode::_next*/;
605 }
606 void list___ListNode___next__eq(val_t self, val_t param0) {
607 struct trace_t trace = {NULL, LOCATE_list, 280, LOCATE_list___ListNode___next__eq};
608 trace.prev = tracehead; tracehead = &trace;
609 ATTR_list___ListNode____next( self) /*ListNode::_next*/ = param0;
610 tracehead = trace.prev;
611 return;
612 }
613 val_t list___ListNode___prev(val_t self) {
614 struct trace_t trace = {NULL, LOCATE_list, 283, LOCATE_list___ListNode___prev};
615 trace.prev = tracehead; tracehead = &trace;
616 tracehead = trace.prev;
617 return ATTR_list___ListNode____prev( self) /*ListNode::_prev*/;
618 }
619 void list___ListNode___prev__eq(val_t self, val_t param0) {
620 struct trace_t trace = {NULL, LOCATE_list, 283, LOCATE_list___ListNode___prev__eq};
621 trace.prev = tracehead; tracehead = &trace;
622 ATTR_list___ListNode____prev( self) /*ListNode::_prev*/ = param0;
623 tracehead = trace.prev;
624 return;
625 }