1 /* This C file is generated by NIT to compile module list. */
3 val_t
list___List_____bra(val_t self
, val_t param0
) {
4 struct trace_t trace
= {NULL
, LOCATE_list___List_____bra
, 21};
7 trace
.prev
= tracehead
; tracehead
= &trace
;
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
) /*ListNode::item*/;
12 return_label0
: while(false);
13 tracehead
= trace
.prev
;
16 void list___List_____braeq(val_t self
, val_t param0
, val_t param1
) {
17 struct trace_t trace
= {NULL
, LOCATE_list___List_____braeq
, 24};
21 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::item=*/;
26 tracehead
= trace
.prev
;
29 val_t
list___List___first(val_t self
) {
30 struct trace_t trace
= {NULL
, LOCATE_list___List___first
, 26};
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
) /*ListNode::item*/;
36 return_label2
: while(false);
37 tracehead
= trace
.prev
;
40 void list___List___first__eq(val_t self
, val_t param0
) {
41 struct trace_t trace
= {NULL
, LOCATE_list___List___first__eq
, 29};
44 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::item=*/;
48 tracehead
= trace
.prev
;
51 val_t
list___List___last(val_t self
) {
52 struct trace_t trace
= {NULL
, LOCATE_list___List___last
, 32};
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
) /*ListNode::item*/;
58 return_label4
: while(false);
59 tracehead
= trace
.prev
;
62 void list___List___last__eq(val_t self
, val_t param0
) {
63 struct trace_t trace
= {NULL
, LOCATE_list___List___last__eq
, 35};
66 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::item=*/;
70 tracehead
= trace
.prev
;
73 val_t
list___List___is_empty(val_t self
) {
74 struct trace_t trace
= {NULL
, LOCATE_list___List___is_empty
, 40};
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*/) /*ListNode::==*/)))));
80 return_label6
: while(false);
81 tracehead
= trace
.prev
;
84 val_t
list___List___length(val_t self
) {
85 struct trace_t trace
= {NULL
, LOCATE_list___List___length
, 43};
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*/) /*ListNode::==*/)))))));
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=*/;
102 variable0
= variable0
/*l*/;
104 return_label7
: while(false);
105 tracehead
= trace
.prev
;
108 val_t
list___List___has(val_t self
, val_t param0
) {
109 struct trace_t trace
= {NULL
, LOCATE_list___List___has
, 55};
112 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
118 return_label9
: while(false);
119 tracehead
= trace
.prev
;
122 val_t
list___List___has_only(val_t self
, val_t param0
) {
123 struct trace_t trace
= {NULL
, LOCATE_list___List___has_only
, 58};
127 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
133 if (!UNTAG_Bool(variable2
)) break; /* while*/
134 variable2
= ((abstract_collection___Container___item_t
)CALL( variable1
/*node*/,COLOR_abstract_collection___Container___item
))( variable1
/*node*/) /*ListNode::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);
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);
145 variable1
= TAG_Bool(true);
147 return_label10
: while(false);
148 tracehead
= trace
.prev
;
151 val_t
list___List___count(val_t self
, val_t param0
) {
152 struct trace_t trace
= {NULL
, LOCATE_list___List___count
, 68};
157 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
164 if (!UNTAG_Bool(variable3
)) break; /* while*/
165 variable3
= ((abstract_collection___Container___item_t
)CALL( variable2
/*node*/,COLOR_abstract_collection___Container___item
))( variable2
/*node*/) /*ListNode::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*/;
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);
175 variable1
= variable1
/*nb*/;
177 return_label12
: while(false);
178 tracehead
= trace
.prev
;
181 val_t
list___List___has_key(val_t self
, val_t param0
) {
182 struct trace_t trace
= {NULL
, LOCATE_list___List___has_key
, 79};
185 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
190 return_label14
: while(false);
191 tracehead
= trace
.prev
;
194 void list___List___push(val_t self
, val_t param0
) {
195 struct trace_t trace
= {NULL
, LOCATE_list___List___push
, 83};
199 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))));
205 if (UNTAG_Bool(variable2
)) { /*if*/
206 ATTR_list___List____head( self
) /*List::_head*/ = variable1
/*node*/;
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=*/;
213 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
/*node*/;
214 tracehead
= trace
.prev
;
217 void list___List___unshift(val_t self
, val_t param0
) {
218 struct trace_t trace
= {NULL
, LOCATE_list___List___unshift
, 96};
222 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))));
228 if (UNTAG_Bool(variable2
)) { /*if*/
229 ATTR_list___List____tail( self
) /*List::_tail*/ = variable1
/*node*/;
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=*/;
236 ATTR_list___List____head( self
) /*List::_head*/ = variable1
/*node*/;
237 tracehead
= trace
.prev
;
240 void list___List___link(val_t self
, val_t param0
) {
241 struct trace_t trace
= {NULL
, LOCATE_list___List___link
, 109};
245 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))));
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
;
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*/) /*ListNode::==*/)))))));
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=*/;
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
;
271 val_t
list___List___pop(val_t self
) {
272 struct trace_t trace
= {NULL
, LOCATE_list___List___pop
, 126};
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*/) /*ListNode::==*/)))));
283 if (UNTAG_Bool(variable1
)) { /*if*/
284 ATTR_list___List____head( self
) /*List::_head*/ = NIT_NULL
/*null*/;
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=*/;
289 variable1
= ((abstract_collection___Container___item_t
)CALL( variable0
/*node*/,COLOR_abstract_collection___Container___item
))( variable0
/*node*/) /*ListNode::item*/;
290 variable0
= variable1
;
292 return_label18
: while(false);
293 tracehead
= trace
.prev
;
296 val_t
list___List___shift(val_t self
) {
297 struct trace_t trace
= {NULL
, LOCATE_list___List___shift
, 140};
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*/) /*ListNode::==*/)))));
308 if (UNTAG_Bool(variable1
)) { /*if*/
309 ATTR_list___List____tail( self
) /*List::_tail*/ = NIT_NULL
/*null*/;
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=*/;
314 variable1
= ((abstract_collection___Container___item_t
)CALL( variable0
/*node*/,COLOR_abstract_collection___Container___item
))( variable0
/*node*/) /*ListNode::item*/;
315 variable0
= variable1
;
317 return_label19
: while(false);
318 tracehead
= trace
.prev
;
321 void list___List___remove(val_t self
, val_t param0
) {
322 struct trace_t trace
= {NULL
, LOCATE_list___List___remove
, 154};
326 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
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*/;
335 tracehead
= trace
.prev
;
338 void list___List___remove_at(val_t self
, val_t param0
) {
339 struct trace_t trace
= {NULL
, LOCATE_list___List___remove_at
, 160};
343 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
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*/;
351 tracehead
= trace
.prev
;
354 void list___List___clear(val_t self
) {
355 struct trace_t trace
= {NULL
, LOCATE_list___List___clear
, 166};
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
;
362 val_t
list___List___iterator(val_t self
) {
363 struct trace_t trace
= {NULL
, LOCATE_list___List___iterator
, 173};
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
;
371 return_label23
: while(false);
372 tracehead
= trace
.prev
;
375 void list___List___init(val_t self
, int* init_table
) {
376 struct trace_t trace
= {NULL
, LOCATE_list___List___init
, 175};
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
;
383 void list___List___from(val_t self
, val_t param0
, int* init_table
) {
384 struct trace_t trace
= {NULL
, LOCATE_list___List___from
, 178};
386 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*List::append*/;
390 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_List
].i
] = 1;
391 tracehead
= trace
.prev
;
394 val_t
list___List___get_node(val_t self
, val_t param0
) {
395 struct trace_t trace
= {NULL
, LOCATE_list___List___get_node
, 187};
400 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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*/) /*ListNode::==*/)))))));
411 variable3
= variable2
;
412 if (UNTAG_Bool(variable3
)) { /* and */
413 variable3
= TAG_Bool(UNTAG_Int( variable0
/*i*/)>UNTAG_Int( TAG_Int(0)));
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);
423 variable1
= variable1
/*n*/;
425 return_label26
: while(false);
426 tracehead
= trace
.prev
;
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___List___search_node_after
, 201};
436 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))))));
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*/) /*ListNode::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::==*/)))))));
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);
454 variable2
= variable2
/*n*/;
456 return_label28
: while(false);
457 tracehead
= trace
.prev
;
460 void list___List___remove_node(val_t self
, val_t param0
) {
461 struct trace_t trace
= {NULL
, LOCATE_list___List___remove_node
, 209};
465 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))));
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*/) /*ListNode::==*/)))));
474 if (UNTAG_Bool(variable1
)) { /*if*/
475 ATTR_list___List____tail( self
) /*List::_tail*/ = NIT_NULL
/*null*/;
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=*/;
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*/) /*ListNode::==*/)))));
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=*/;
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=*/;
497 tracehead
= trace
.prev
;
500 void list___List___insert_before(val_t self
, val_t param0
, val_t param1
) {
501 struct trace_t trace
= {NULL
, LOCATE_list___List___insert_before
, 228};
507 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::==*/)))));
515 if (UNTAG_Bool(variable4
)) { /*if*/
516 ATTR_list___List____head( self
) /*List::_head*/ = variable2
/*nnode*/;
518 ((list___ListNode___next__eq_t
)CALL( variable3
/*prev*/,COLOR_list___ListNode___next__eq
))( variable3
/*prev*/, variable2
/*nnode*/) /*ListNode::next=*/;
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
;
526 val_t
list___ListIterator___item(val_t self
) {
527 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___item
, 246};
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
) /*ListNode::item*/;
533 return_label32
: while(false);
534 tracehead
= trace
.prev
;
537 void list___ListIterator___item__eq(val_t self
, val_t param0
) {
538 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___item__eq
, 248};
541 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::item=*/;
545 tracehead
= trace
.prev
;
548 val_t
list___ListIterator___is_ok(val_t self
) {
549 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___is_ok
, 250};
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*/) /*ListNode::==*/)))));
554 variable0
= TAG_Bool(!UNTAG_Bool(variable0
));
556 return_label34
: while(false);
557 tracehead
= trace
.prev
;
560 void list___ListIterator___next(val_t self
) {
561 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___next
, 252};
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
;
571 void list___ListIterator___init(val_t self
, val_t param0
, int* init_table
) {
572 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___init
, 258};
574 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
583 val_t
list___ListIterator___index(val_t self
) {
584 struct trace_t trace
= {NULL
, LOCATE_list___ListIterator___index
, 268};
585 trace
.prev
= tracehead
; tracehead
= &trace
;
586 tracehead
= trace
.prev
;
587 return ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/;
589 void list___ListNode___init(val_t self
, val_t param0
, int* init_table
) {
590 struct trace_t trace
= {NULL
, LOCATE_list___ListNode___init
, 275};
592 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/) /*ListNode::item=*/;
596 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_ListNode
].i
] = 1;
597 tracehead
= trace
.prev
;
600 val_t
list___ListNode___next(val_t self
) {
601 struct trace_t trace
= {NULL
, LOCATE_list___ListNode___next
, 280};
602 trace
.prev
= tracehead
; tracehead
= &trace
;
603 tracehead
= trace
.prev
;
604 return ATTR_list___ListNode____next( self
) /*ListNode::_next*/;
606 void list___ListNode___next__eq(val_t self
, val_t param0
) {
607 struct trace_t trace
= {NULL
, LOCATE_list___ListNode___next__eq
, 280};
608 trace
.prev
= tracehead
; tracehead
= &trace
;
609 ATTR_list___ListNode____next( self
) /*ListNode::_next*/ = param0
;
610 tracehead
= trace
.prev
;
613 val_t
list___ListNode___prev(val_t self
) {
614 struct trace_t trace
= {NULL
, LOCATE_list___ListNode___prev
, 283};
615 trace
.prev
= tracehead
; tracehead
= &trace
;
616 tracehead
= trace
.prev
;
617 return ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/;
619 void list___ListNode___prev__eq(val_t self
, val_t param0
) {
620 struct trace_t trace
= {NULL
, LOCATE_list___ListNode___prev__eq
, 283};
621 trace
.prev
= tracehead
; tracehead
= &trace
;
622 ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/ = param0
;
623 tracehead
= trace
.prev
;