2 val_t
list___List_____bra(val_t self
, val_t param0
) {
3 struct trace_t trace
= {NULL
, "list::List::[] (bin/../lib/standard//list.nit:21,1--22:52)"};
6 trace
.prev
= tracehead
; tracehead
= &trace
;
8 variable1
= ((list___List___get_node_t
)CALL( self
,COLOR_list___List___get_node
))( self
, variable0
/*index*/) /*List::get_node*/;
9 variable1
= ((abstract_collection___Container___item_t
)CALL(variable1
,COLOR_abstract_collection___Container___item
))(variable1
) /*ListNode::item*/;
11 return_label0
: while(false);
12 tracehead
= trace
.prev
;
15 void list___List_____braeq(val_t self
, val_t param0
, val_t param1
) {
16 struct trace_t trace
= {NULL
, "list::List::[]= (bin/../lib/standard//list.nit:24,2--59)"};
20 trace
.prev
= tracehead
; tracehead
= &trace
;
23 variable2
= ((list___List___get_node_t
)CALL( self
,COLOR_list___List___get_node
))( self
, variable0
/*index*/) /*List::get_node*/;
24 ((abstract_collection___Container___item__eq_t
)CALL(variable2
,COLOR_abstract_collection___Container___item__eq
))(variable2
, variable1
/*item*/) /*ListNode::item=*/;
25 tracehead
= trace
.prev
;
28 val_t
list___List___first(val_t self
) {
29 struct trace_t trace
= {NULL
, "list::List::first (bin/../lib/standard//list.nit:26,2--27:38)"};
31 trace
.prev
= tracehead
; tracehead
= &trace
;
32 variable0
= ATTR_list___List____head( self
) /*List::_head*/;
33 variable0
= ((abstract_collection___Container___item_t
)CALL(variable0
,COLOR_abstract_collection___Container___item
))(variable0
) /*ListNode::item*/;
35 return_label2
: while(false);
36 tracehead
= trace
.prev
;
39 void list___List___first__eq(val_t self
, val_t param0
) {
40 struct trace_t trace
= {NULL
, "list::List::first= (bin/../lib/standard//list.nit:29,2--30:39)"};
43 trace
.prev
= tracehead
; tracehead
= &trace
;
45 variable1
= ATTR_list___List____head( self
) /*List::_head*/;
46 ((abstract_collection___Container___item__eq_t
)CALL(variable1
,COLOR_abstract_collection___Container___item__eq
))(variable1
, variable0
/*e*/) /*ListNode::item=*/;
47 tracehead
= trace
.prev
;
50 val_t
list___List___last(val_t self
) {
51 struct trace_t trace
= {NULL
, "list::List::last (bin/../lib/standard//list.nit:32,2--33:37)"};
53 trace
.prev
= tracehead
; tracehead
= &trace
;
54 variable0
= ATTR_list___List____tail( self
) /*List::_tail*/;
55 variable0
= ((abstract_collection___Container___item_t
)CALL(variable0
,COLOR_abstract_collection___Container___item
))(variable0
) /*ListNode::item*/;
57 return_label4
: while(false);
58 tracehead
= trace
.prev
;
61 void list___List___last__eq(val_t self
, val_t param0
) {
62 struct trace_t trace
= {NULL
, "list::List::last= (bin/../lib/standard//list.nit:35,2--36:38)"};
65 trace
.prev
= tracehead
; tracehead
= &trace
;
67 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
68 ((abstract_collection___Container___item__eq_t
)CALL(variable1
,COLOR_abstract_collection___Container___item__eq
))(variable1
, variable0
/*e*/) /*ListNode::item=*/;
69 tracehead
= trace
.prev
;
72 val_t
list___List___is_empty(val_t self
) {
73 struct trace_t trace
= {NULL
, "list::List::is_empty (bin/../lib/standard//list.nit:40,2--41:44)"};
75 trace
.prev
= tracehead
; tracehead
= &trace
;
76 variable0
= ATTR_list___List____head( self
) /*List::_head*/;
77 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*/) /*ListNode::==*/)))));
79 return_label6
: while(false);
80 tracehead
= trace
.prev
;
83 val_t
list___List___length(val_t self
) {
84 struct trace_t trace
= {NULL
, "list::List::length (bin/../lib/standard//list.nit:43,2--52:10)"};
88 trace
.prev
= tracehead
; tracehead
= &trace
;
89 variable0
= TAG_Int(0);
90 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
91 variable1
= variable2
;
92 while (true) { /*while*/
93 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*/) /*ListNode::==*/)))))));
94 if (!UNTAG_Bool(variable2
)) break; /* while*/
95 variable0
= TAG_Int(UNTAG_Int(variable0
)+UNTAG_Int( TAG_Int(1))) /*l*/;
96 variable2
= ((list___ListNode___next_t
)CALL( variable1
/*t*/,COLOR_list___ListNode___next
))( variable1
/*t*/) /*ListNode::next*/;
97 variable1
= variable2
/*t=*/;
101 variable0
= variable0
/*l*/;
103 return_label7
: while(false);
104 tracehead
= trace
.prev
;
107 val_t
list___List___has(val_t self
, val_t param0
) {
108 struct trace_t trace
= {NULL
, "list::List::has (bin/../lib/standard//list.nit:55,2--56:64)"};
111 trace
.prev
= tracehead
; tracehead
= &trace
;
113 variable1
= ATTR_list___List____head( self
) /*List::_head*/;
114 variable1
= ((list___List___search_node_after_t
)CALL( self
,COLOR_list___List___search_node_after
))( self
, variable0
/*e*/, variable1
) /*List::search_node_after*/;
115 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*/) /*ListNode::==*/)))))));
117 return_label9
: while(false);
118 tracehead
= trace
.prev
;
121 val_t
list___List___has_only(val_t self
, val_t param0
) {
122 struct trace_t trace
= {NULL
, "list::List::has_only (bin/../lib/standard//list.nit:58,2--65:13)"};
126 trace
.prev
= tracehead
; tracehead
= &trace
;
128 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
129 variable1
= variable2
;
130 while (true) { /*while*/
131 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*/) /*ListNode::==*/)))))));
132 if (!UNTAG_Bool(variable2
)) break; /* while*/
133 variable2
= ((abstract_collection___Container___item_t
)CALL( variable1
/*node*/,COLOR_abstract_collection___Container___item
))( variable1
/*node*/) /*ListNode::item*/;
134 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::==*/)))))));
135 if (UNTAG_Bool(variable2
)) { /*if*/
136 variable1
= TAG_Bool(false);
139 variable2
= ((list___ListNode___next_t
)CALL( variable1
/*node*/,COLOR_list___ListNode___next
))( variable1
/*node*/) /*ListNode::next*/;
140 variable1
= variable2
/*node=*/;
141 continue_11
: while(0);
144 variable1
= TAG_Bool(true);
146 return_label10
: while(false);
147 tracehead
= trace
.prev
;
150 val_t
list___List___count(val_t self
, val_t param0
) {
151 struct trace_t trace
= {NULL
, "list::List::count (bin/../lib/standard//list.nit:68,2--76:11)"};
156 trace
.prev
= tracehead
; tracehead
= &trace
;
158 variable1
= TAG_Int(0);
159 variable3
= ATTR_list___List____head( self
) /*List::_head*/;
160 variable2
= variable3
;
161 while (true) { /*while*/
162 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*/) /*ListNode::==*/)))))));
163 if (!UNTAG_Bool(variable3
)) break; /* while*/
164 variable3
= ((abstract_collection___Container___item_t
)CALL( variable2
/*node*/,COLOR_abstract_collection___Container___item
))( variable2
/*node*/) /*ListNode::item*/;
165 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::==*/)))))));
166 if (UNTAG_Bool(variable3
)) { /*if*/
167 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*nb*/;
169 variable3
= ((list___ListNode___next_t
)CALL( variable2
/*node*/,COLOR_list___ListNode___next
))( variable2
/*node*/) /*ListNode::next*/;
170 variable2
= variable3
/*node=*/;
171 continue_13
: while(0);
174 variable1
= variable1
/*nb*/;
176 return_label12
: while(false);
177 tracehead
= trace
.prev
;
180 val_t
list___List___has_key(val_t self
, val_t param0
) {
181 struct trace_t trace
= {NULL
, "list::List::has_key (bin/../lib/standard//list.nit:79,2--60)"};
184 trace
.prev
= tracehead
; tracehead
= &trace
;
186 variable1
= ((list___List___get_node_t
)CALL( self
,COLOR_list___List___get_node
))( self
, variable0
/*index*/) /*List::get_node*/;
187 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*/) /*ListNode::==*/)))))));
189 return_label14
: while(false);
190 tracehead
= trace
.prev
;
193 void list___List___push(val_t self
, val_t param0
) {
194 struct trace_t trace
= {NULL
, "list::List::push (bin/../lib/standard//list.nit:83,2--93:14)"};
198 trace
.prev
= tracehead
; tracehead
= &trace
;
200 variable2
= NEW_list___ListNode___init( variable0
/*e*/); /*new ListNode[E]*/
201 variable1
= variable2
;
202 variable2
= ATTR_list___List____tail( self
) /*List::_tail*/;
203 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*/) /*ListNode::==*/)))));
204 if (UNTAG_Bool(variable2
)) { /*if*/
205 ATTR_list___List____head( self
) /*List::_head*/ = variable1
/*node*/;
207 variable2
= ATTR_list___List____tail( self
) /*List::_tail*/;
208 ((list___ListNode___next__eq_t
)CALL(variable2
,COLOR_list___ListNode___next__eq
))(variable2
, variable1
/*node*/) /*ListNode::next=*/;
209 variable2
= ATTR_list___List____tail( self
) /*List::_tail*/;
210 ((list___ListNode___prev__eq_t
)CALL( variable1
/*node*/,COLOR_list___ListNode___prev__eq
))( variable1
/*node*/, variable2
) /*ListNode::prev=*/;
212 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
/*node*/;
213 tracehead
= trace
.prev
;
216 void list___List___unshift(val_t self
, val_t param0
) {
217 struct trace_t trace
= {NULL
, "list::List::unshift (bin/../lib/standard//list.nit:96,2--106:14)"};
221 trace
.prev
= tracehead
; tracehead
= &trace
;
223 variable2
= NEW_list___ListNode___init( variable0
/*e*/); /*new ListNode[E]*/
224 variable1
= variable2
;
225 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
226 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*/) /*ListNode::==*/)))));
227 if (UNTAG_Bool(variable2
)) { /*if*/
228 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
/*node*/;
230 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
231 ((list___ListNode___next__eq_t
)CALL( variable1
/*node*/,COLOR_list___ListNode___next__eq
))( variable1
/*node*/, variable2
) /*ListNode::next=*/;
232 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
233 ((list___ListNode___prev__eq_t
)CALL(variable2
,COLOR_list___ListNode___prev__eq
))(variable2
, variable1
/*node*/) /*ListNode::prev=*/;
235 ATTR_list___List____head( self
) /*List::_head*/ = variable1
/*node*/;
236 tracehead
= trace
.prev
;
239 void list___List___link(val_t self
, val_t param0
) {
240 struct trace_t trace
= {NULL
, "list::List::link (bin/../lib/standard//list.nit:109,2--121:9)"};
244 trace
.prev
= tracehead
; tracehead
= &trace
;
246 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
247 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*/) /*ListNode::==*/)))));
248 if (UNTAG_Bool(variable1
)) { /*if*/
249 variable1
= ATTR_list___List____head( variable0
/*l*/) /*List::_head*/;
250 ATTR_list___List____head( self
) /*List::_head*/ = variable1
;
252 variable1
= ATTR_list___List____head( variable0
/*l*/) /*List::_head*/;
253 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*/) /*ListNode::==*/)))))));
254 if (UNTAG_Bool(variable1
)) { /*if*/
255 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
256 variable2
= ATTR_list___List____head( variable0
/*l*/) /*List::_head*/;
257 ((list___ListNode___next__eq_t
)CALL(variable1
,COLOR_list___ListNode___next__eq
))(variable1
, variable2
) /*ListNode::next=*/;
258 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
259 variable1
= ((list___ListNode___next_t
)CALL(variable1
,COLOR_list___ListNode___next
))(variable1
) /*ListNode::next*/;
260 variable2
= ATTR_list___List____tail( self
) /*List::_tail*/;
261 ((list___ListNode___prev__eq_t
)CALL(variable1
,COLOR_list___ListNode___prev__eq
))(variable1
, variable2
) /*ListNode::prev=*/;
264 variable1
= ATTR_list___List____tail( variable0
/*l*/) /*List::_tail*/;
265 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
;
266 ((list___List___clear_t
)CALL( variable0
/*l*/,COLOR_abstract_collection___RemovableCollection___clear
))( variable0
/*l*/) /*List::clear*/;
267 tracehead
= trace
.prev
;
270 val_t
list___List___pop(val_t self
) {
271 struct trace_t trace
= {NULL
, "list::List::pop (bin/../lib/standard//list.nit:126,2--137:18)"};
274 trace
.prev
= tracehead
; tracehead
= &trace
;
275 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
276 variable0
= variable1
;
277 variable1
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
278 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
;
279 ((list___ListNode___prev__eq_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev__eq
))( variable0
/*node*/, NIT_NULL
/*null*/) /*ListNode::prev=*/;
280 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
281 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*/) /*ListNode::==*/)))));
282 if (UNTAG_Bool(variable1
)) { /*if*/
283 ATTR_list___List____head( self
) /*List::_head*/ = NIT_NULL
/*null*/;
285 variable1
= ATTR_list___List____tail( self
) /*List::_tail*/;
286 ((list___ListNode___next__eq_t
)CALL(variable1
,COLOR_list___ListNode___next__eq
))(variable1
, NIT_NULL
/*null*/) /*ListNode::next=*/;
288 variable1
= ((abstract_collection___Container___item_t
)CALL( variable0
/*node*/,COLOR_abstract_collection___Container___item
))( variable0
/*node*/) /*ListNode::item*/;
289 variable0
= variable1
;
291 return_label18
: while(false);
292 tracehead
= trace
.prev
;
295 val_t
list___List___shift(val_t self
) {
296 struct trace_t trace
= {NULL
, "list::List::shift (bin/../lib/standard//list.nit:140,2--151:18)"};
299 trace
.prev
= tracehead
; tracehead
= &trace
;
300 variable1
= ATTR_list___List____head( self
) /*List::_head*/;
301 variable0
= variable1
;
302 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
303 ATTR_list___List____head( self
) /*List::_head*/ = variable1
;
304 ((list___ListNode___next__eq_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next__eq
))( variable0
/*node*/, NIT_NULL
/*null*/) /*ListNode::next=*/;
305 variable1
= ATTR_list___List____head( self
) /*List::_head*/;
306 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*/) /*ListNode::==*/)))));
307 if (UNTAG_Bool(variable1
)) { /*if*/
308 ATTR_list___List____tail( self
) /*List::_tail*/ = NIT_NULL
/*null*/;
310 variable1
= ATTR_list___List____head( self
) /*List::_head*/;
311 ((list___ListNode___prev__eq_t
)CALL(variable1
,COLOR_list___ListNode___prev__eq
))(variable1
, NIT_NULL
/*null*/) /*ListNode::prev=*/;
313 variable1
= ((abstract_collection___Container___item_t
)CALL( variable0
/*node*/,COLOR_abstract_collection___Container___item
))( variable0
/*node*/) /*ListNode::item*/;
314 variable0
= variable1
;
316 return_label19
: while(false);
317 tracehead
= trace
.prev
;
320 void list___List___remove(val_t self
, val_t param0
) {
321 struct trace_t trace
= {NULL
, "list::List::remove (bin/../lib/standard//list.nit:154,2--157:39)"};
325 trace
.prev
= tracehead
; tracehead
= &trace
;
327 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
328 variable2
= ((list___List___search_node_after_t
)CALL( self
,COLOR_list___List___search_node_after
))( self
, variable0
/*e*/, variable2
) /*List::search_node_after*/;
329 variable1
= variable2
;
330 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*/) /*ListNode::==*/)))))));
331 if (UNTAG_Bool(variable2
)) { /*if*/
332 ((list___List___remove_node_t
)CALL( self
,COLOR_list___List___remove_node
))( self
, variable1
/*node*/) /*List::remove_node*/;
334 tracehead
= trace
.prev
;
337 void list___List___remove_at(val_t self
, val_t param0
) {
338 struct trace_t trace
= {NULL
, "list::List::remove_at (bin/../lib/standard//list.nit:160,2--163:39)"};
342 trace
.prev
= tracehead
; tracehead
= &trace
;
344 variable2
= ((list___List___get_node_t
)CALL( self
,COLOR_list___List___get_node
))( self
, variable0
/*i*/) /*List::get_node*/;
345 variable1
= variable2
;
346 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*/) /*ListNode::==*/)))))));
347 if (UNTAG_Bool(variable2
)) { /*if*/
348 ((list___List___remove_node_t
)CALL( self
,COLOR_list___List___remove_node
))( self
, variable1
/*node*/) /*List::remove_node*/;
350 tracehead
= trace
.prev
;
353 void list___List___clear(val_t self
) {
354 struct trace_t trace
= {NULL
, "list::List::clear (bin/../lib/standard//list.nit:166,2--169:14)"};
355 trace
.prev
= tracehead
; tracehead
= &trace
;
356 ATTR_list___List____head( self
) /*List::_head*/ = NIT_NULL
/*null*/;
357 ATTR_list___List____tail( self
) /*List::_tail*/ = NIT_NULL
/*null*/;
358 tracehead
= trace
.prev
;
361 val_t
list___List___iterator(val_t self
) {
362 struct trace_t trace
= {NULL
, "list::List::iterator (bin/../lib/standard//list.nit:173,2--73)"};
365 trace
.prev
= tracehead
; tracehead
= &trace
;
366 variable0
= ATTR_list___List____head( self
) /*List::_head*/;
367 variable1
= NEW_list___ListIterator___init(variable0
); /*new ListIterator[E]*/
368 variable0
= variable1
;
370 return_label23
: while(false);
371 tracehead
= trace
.prev
;
374 void list___List___init(val_t self
, int* init_table
) {
375 struct trace_t trace
= {NULL
, "list::List::init (bin/../lib/standard//list.nit:175,2--176:5)"};
376 trace
.prev
= tracehead
; tracehead
= &trace
;
377 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_List
].i
]) return;
378 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_List
].i
] = 1;
379 tracehead
= trace
.prev
;
382 void list___List___from(val_t self
, val_t param0
, int* init_table
) {
383 struct trace_t trace
= {NULL
, "list::List::from (bin/../lib/standard//list.nit:178,2--179:46)"};
385 trace
.prev
= tracehead
; tracehead
= &trace
;
387 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_List
].i
]) return;
388 ((abstract_collection___IndexedCollection___append_t
)CALL( self
,COLOR_abstract_collection___IndexedCollection___append
))( self
, variable0
/*coll*/) /*List::append*/;
389 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_List
].i
] = 1;
390 tracehead
= trace
.prev
;
393 val_t
list___List___get_node(val_t self
, val_t param0
) {
394 struct trace_t trace
= {NULL
, "list::List::get_node (bin/../lib/standard//list.nit:187,2--198:10)"};
399 trace
.prev
= tracehead
; tracehead
= &trace
;
401 variable2
= ATTR_list___List____head( self
) /*List::_head*/;
402 variable1
= variable2
;
403 variable2
= TAG_Bool(UNTAG_Int( variable0
/*i*/)<UNTAG_Int( TAG_Int(0)));
404 if (UNTAG_Bool(variable2
)) { /*if*/
405 variable1
= NIT_NULL
/*null*/;
408 while (true) { /*while*/
409 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*/) /*ListNode::==*/)))))));
410 variable3
= variable2
;
411 if (UNTAG_Bool(variable3
)) { /* and */
412 variable3
= TAG_Bool(UNTAG_Int( variable0
/*i*/)>UNTAG_Int( TAG_Int(0)));
414 variable2
= variable3
;
415 if (!UNTAG_Bool(variable2
)) break; /* while*/
416 variable2
= ((list___ListNode___next_t
)CALL( variable1
/*n*/,COLOR_list___ListNode___next
))( variable1
/*n*/) /*ListNode::next*/;
417 variable1
= variable2
/*n=*/;
418 variable0
= TAG_Int(UNTAG_Int(variable0
)-UNTAG_Int( TAG_Int(1))) /*i*/;
419 continue_27
: while(0);
422 variable1
= variable1
/*n*/;
424 return_label26
: while(false);
425 tracehead
= trace
.prev
;
428 val_t
list___List___search_node_after(val_t self
, val_t param0
, val_t param1
) {
429 struct trace_t trace
= {NULL
, "list::List::search_node_after (bin/../lib/standard//list.nit:201,2--206:10)"};
435 trace
.prev
= tracehead
; tracehead
= &trace
;
438 variable2
= variable1
/*after*/;
439 while (true) { /*while*/
440 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*/) /*ListNode::==*/)))))));
441 variable4
= variable3
;
442 if (UNTAG_Bool(variable4
)) { /* and */
443 variable4
= ((abstract_collection___Container___item_t
)CALL( variable2
/*n*/,COLOR_abstract_collection___Container___item
))( variable2
/*n*/) /*ListNode::item*/;
444 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 variable3
= variable4
;
447 if (!UNTAG_Bool(variable3
)) break; /* while*/
448 variable3
= ((list___ListNode___next_t
)CALL( variable2
/*n*/,COLOR_list___ListNode___next
))( variable2
/*n*/) /*ListNode::next*/;
449 variable2
= variable3
/*n=*/;
450 continue_29
: while(0);
453 variable2
= variable2
/*n*/;
455 return_label28
: while(false);
456 tracehead
= trace
.prev
;
459 void list___List___remove_node(val_t self
, val_t param0
) {
460 struct trace_t trace
= {NULL
, "list::List::remove_node (bin/../lib/standard//list.nit:209,2--224:29)"};
464 trace
.prev
= tracehead
; tracehead
= &trace
;
466 variable1
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
467 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*/) /*ListNode::==*/)))));
468 if (UNTAG_Bool(variable1
)) { /*if*/
469 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
470 ATTR_list___List____head( self
) /*List::_head*/ = variable1
;
471 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
472 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*/) /*ListNode::==*/)))));
473 if (UNTAG_Bool(variable1
)) { /*if*/
474 ATTR_list___List____tail( self
) /*List::_tail*/ = NIT_NULL
/*null*/;
476 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
477 ((list___ListNode___prev__eq_t
)CALL(variable1
,COLOR_list___ListNode___prev__eq
))(variable1
, NIT_NULL
/*null*/) /*ListNode::prev=*/;
480 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
481 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*/) /*ListNode::==*/)))));
482 if (UNTAG_Bool(variable1
)) { /*if*/
483 variable1
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
484 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
;
485 variable1
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
486 ((list___ListNode___next__eq_t
)CALL(variable1
,COLOR_list___ListNode___next__eq
))(variable1
, NIT_NULL
/*null*/) /*ListNode::next=*/;
488 variable1
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
489 variable2
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
490 ((list___ListNode___next__eq_t
)CALL(variable1
,COLOR_list___ListNode___next__eq
))(variable1
, variable2
) /*ListNode::next=*/;
491 variable1
= ((list___ListNode___next_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___next
))( variable0
/*node*/) /*ListNode::next*/;
492 variable2
= ((list___ListNode___prev_t
)CALL( variable0
/*node*/,COLOR_list___ListNode___prev
))( variable0
/*node*/) /*ListNode::prev*/;
493 ((list___ListNode___prev__eq_t
)CALL(variable1
,COLOR_list___ListNode___prev__eq
))(variable1
, variable2
) /*ListNode::prev=*/;
496 tracehead
= trace
.prev
;
499 void list___List___insert_before(val_t self
, val_t param0
, val_t param1
) {
500 struct trace_t trace
= {NULL
, "list::List::insert_before (bin/../lib/standard//list.nit:228,2--239:19)"};
506 trace
.prev
= tracehead
; tracehead
= &trace
;
509 variable3
= NEW_list___ListNode___init( variable0
/*element*/); /*new ListNode[E]*/
510 variable2
= variable3
;
511 variable4
= ((list___ListNode___prev_t
)CALL( variable1
/*node*/,COLOR_list___ListNode___prev
))( variable1
/*node*/) /*ListNode::prev*/;
512 variable3
= variable4
;
513 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*/) /*ListNode::==*/)))));
514 if (UNTAG_Bool(variable4
)) { /*if*/
515 ATTR_list___List____head( self
) /*List::_head*/ = variable2
/*nnode*/;
517 ((list___ListNode___next__eq_t
)CALL( variable3
/*prev*/,COLOR_list___ListNode___next__eq
))( variable3
/*prev*/, variable2
/*nnode*/) /*ListNode::next=*/;
519 ((list___ListNode___prev__eq_t
)CALL( variable2
/*nnode*/,COLOR_list___ListNode___prev__eq
))( variable2
/*nnode*/, variable3
/*prev*/) /*ListNode::prev=*/;
520 ((list___ListNode___next__eq_t
)CALL( variable2
/*nnode*/,COLOR_list___ListNode___next__eq
))( variable2
/*nnode*/, variable1
/*node*/) /*ListNode::next=*/;
521 ((list___ListNode___prev__eq_t
)CALL( variable1
/*node*/,COLOR_list___ListNode___prev__eq
))( variable1
/*node*/, variable2
/*nnode*/) /*ListNode::prev=*/;
522 tracehead
= trace
.prev
;
525 val_t
list___ListIterator___item(val_t self
) {
526 struct trace_t trace
= {NULL
, "list::ListIterator::item (bin/../lib/standard//list.nit:246,2--37)"};
528 trace
.prev
= tracehead
; tracehead
= &trace
;
529 variable0
= ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/;
530 variable0
= ((abstract_collection___Container___item_t
)CALL(variable0
,COLOR_abstract_collection___Container___item
))(variable0
) /*ListNode::item*/;
532 return_label32
: while(false);
533 tracehead
= trace
.prev
;
536 void list___ListIterator___item__eq(val_t self
, val_t param0
) {
537 struct trace_t trace
= {NULL
, "list::ListIterator::item= (bin/../lib/standard//list.nit:248,2--38)"};
540 trace
.prev
= tracehead
; tracehead
= &trace
;
542 variable1
= ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/;
543 ((abstract_collection___Container___item__eq_t
)CALL(variable1
,COLOR_abstract_collection___Container___item__eq
))(variable1
, variable0
/*e*/) /*ListNode::item=*/;
544 tracehead
= trace
.prev
;
547 val_t
list___ListIterator___is_ok(val_t self
) {
548 struct trace_t trace
= {NULL
, "list::ListIterator::is_ok (bin/../lib/standard//list.nit:250,2--45)"};
550 trace
.prev
= tracehead
; tracehead
= &trace
;
551 variable0
= ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/;
552 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*/) /*ListNode::==*/)))));
553 variable0
= TAG_Bool(!UNTAG_Bool(variable0
));
555 return_label34
: while(false);
556 tracehead
= trace
.prev
;
559 void list___ListIterator___next(val_t self
) {
560 struct trace_t trace
= {NULL
, "list::ListIterator::next (bin/../lib/standard//list.nit:252,2--255:13)"};
562 trace
.prev
= tracehead
; tracehead
= &trace
;
563 variable0
= ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/;
564 variable0
= ((list___ListNode___next_t
)CALL(variable0
,COLOR_list___ListNode___next
))(variable0
) /*ListNode::next*/;
565 ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/ = variable0
;
566 ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
567 tracehead
= trace
.prev
;
570 void list___ListIterator___init(val_t self
, val_t param0
, int* init_table
) {
571 struct trace_t trace
= {NULL
, "list::ListIterator::init (bin/../lib/standard//list.nit:258,2--262:12)"};
573 trace
.prev
= tracehead
; tracehead
= &trace
;
575 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_ListIterator
].i
]) return;
576 ATTR_list___ListIterator____node( self
) /*ListIterator::_node*/ = variable0
/*node*/;
577 ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/ = TAG_Int(0);
578 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_ListIterator
].i
] = 1;
579 tracehead
= trace
.prev
;
582 val_t
list___ListIterator___index(val_t self
) {
583 struct trace_t trace
= {NULL
, "list::ListIterator::index (bin/../lib/standard//list.nit:268,2--269:32)"};
584 trace
.prev
= tracehead
; tracehead
= &trace
;
585 tracehead
= trace
.prev
;
586 return ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/;
588 void list___ListNode___init(val_t self
, val_t param0
, int* init_table
) {
589 struct trace_t trace
= {NULL
, "list::ListNode::init (bin/../lib/standard//list.nit:275,2--277:10)"};
591 trace
.prev
= tracehead
; tracehead
= &trace
;
593 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_ListNode
].i
]) return;
594 ((abstract_collection___Container___item__eq_t
)CALL( self
,COLOR_abstract_collection___Container___item__eq
))( self
, variable0
/*i*/) /*ListNode::item=*/;
595 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_ListNode
].i
] = 1;
596 tracehead
= trace
.prev
;
599 val_t
list___ListNode___next(val_t self
) {
600 struct trace_t trace
= {NULL
, "list::ListNode::next (bin/../lib/standard//list.nit:280,2--281:41)"};
601 trace
.prev
= tracehead
; tracehead
= &trace
;
602 tracehead
= trace
.prev
;
603 return ATTR_list___ListNode____next( self
) /*ListNode::_next*/;
605 void list___ListNode___next__eq(val_t self
, val_t param0
) {
606 struct trace_t trace
= {NULL
, "list::ListNode::next= (bin/../lib/standard//list.nit:280,2--281:41)"};
607 trace
.prev
= tracehead
; tracehead
= &trace
;
608 ATTR_list___ListNode____next( self
) /*ListNode::_next*/ = param0
;
609 tracehead
= trace
.prev
;
612 val_t
list___ListNode___prev(val_t self
) {
613 struct trace_t trace
= {NULL
, "list::ListNode::prev (bin/../lib/standard//list.nit:283,2--284:41)"};
614 trace
.prev
= tracehead
; tracehead
= &trace
;
615 tracehead
= trace
.prev
;
616 return ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/;
618 void list___ListNode___prev__eq(val_t self
, val_t param0
) {
619 struct trace_t trace
= {NULL
, "list::ListNode::prev= (bin/../lib/standard//list.nit:283,2--284:41)"};
620 trace
.prev
= tracehead
; tracehead
= &trace
;
621 ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/ = param0
;
622 tracehead
= trace
.prev
;