1 /* This C file is generated by NIT to compile module string_search. */
2 #include "string_search._sep.h"
3 val_t
string_search___Pattern___search_index_in(val_t self
, val_t param0
, val_t param1
) {
4 struct trace_t trace
= {NULL
, LOCATE_string_search
, 21, LOCATE_string_search___Pattern___search_index_in
};
5 trace
.prev
= tracehead
; tracehead
= &trace
;
6 fprintf(stderr
, "Deferred method %s called");
7 fprintf(stderr
, " (%s:%d)\n", LOCATE_string_search
, 21);
9 tracehead
= trace
.prev
;
12 val_t
string_search___Pattern___search_in(val_t self
, val_t param0
, val_t param1
) {
13 struct trace_t trace
= {NULL
, LOCATE_string_search
, 26, LOCATE_string_search___Pattern___search_in
};
14 trace
.prev
= tracehead
; tracehead
= &trace
;
15 fprintf(stderr
, "Deferred method %s called");
16 fprintf(stderr
, " (%s:%d)\n", LOCATE_string_search
, 26);
18 tracehead
= trace
.prev
;
21 val_t
string_search___Pattern___search_all_in(val_t self
, val_t param0
) {
22 struct trace_t trace
= {NULL
, LOCATE_string_search
, 30, LOCATE_string_search___Pattern___search_all_in
};
27 trace
.prev
= tracehead
; tracehead
= &trace
;
29 variable2
= NEW_array___Array___init(); /*new Array[E]*/
30 variable1
= variable2
;
31 variable3
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, TAG_Int(0)) /*Pattern::search_in*/;
32 variable2
= variable3
;
33 while (true) { /*while*/
34 variable3
= TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2
/*match*/ == NIT_NULL
/*null*/) || (( variable2
/*match*/ != NIT_NULL
) && ((((kernel___Object_____eqeq_t
)CALL( variable2
/*match*/,COLOR_kernel___Object_____eqeq
))==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable2
/*match*/, NIT_NULL
/*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t
)CALL( variable2
/*match*/,COLOR_kernel___Object_____eqeq
))( variable2
/*match*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
35 if (!UNTAG_Bool(variable3
)) break; /* while*/
36 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable2
/*match*/) /*AbstractArray::add*/;
37 variable3
= ((string_search___Match___after_t
)CALL( variable2
/*match*/,COLOR_string_search___Match___after
))( variable2
/*match*/) /*Match::after*/;
38 variable3
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, variable3
) /*Pattern::search_in*/;
39 variable2
= variable3
/*match=*/;
43 variable1
= variable1
/*res*/;
45 return_label0
: while(false);
46 tracehead
= trace
.prev
;
49 val_t
string_search___Pattern___split_in(val_t self
, val_t param0
) {
50 struct trace_t trace
= {NULL
, LOCATE_string_search
, 42, LOCATE_string_search___Pattern___split_in
};
57 trace
.prev
= tracehead
; tracehead
= &trace
;
59 variable2
= NEW_array___Array___init(); /*new Array[E]*/
60 variable1
= variable2
;
61 variable2
= TAG_Int(0);
62 variable4
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, TAG_Int(0)) /*Pattern::search_in*/;
63 variable3
= variable4
;
64 while (true) { /*while*/
65 variable4
= TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3
/*match*/ == NIT_NULL
/*null*/) || (( variable3
/*match*/ != NIT_NULL
) && ((((kernel___Object_____eqeq_t
)CALL( variable3
/*match*/,COLOR_kernel___Object_____eqeq
))==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable3
/*match*/, NIT_NULL
/*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t
)CALL( variable3
/*match*/,COLOR_kernel___Object_____eqeq
))( variable3
/*match*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
66 if (!UNTAG_Bool(variable4
)) break; /* while*/
67 variable5
= ((string_search___Match___from_t
)CALL( variable3
/*match*/,COLOR_string_search___Match___from
))( variable3
/*match*/) /*Match::from*/;
68 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( variable2
/*i*/));
69 variable4
= variable5
;
70 variable5
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*i*/, variable4
/*len*/); /*new Match*/
71 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable5
) /*AbstractArray::add*/;
72 variable5
= ((string_search___Match___after_t
)CALL( variable3
/*match*/,COLOR_string_search___Match___after
))( variable3
/*match*/) /*Match::after*/;
73 variable2
= variable5
/*i=*/;
74 variable5
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, variable2
/*i*/) /*Pattern::search_in*/;
75 variable3
= variable5
/*match=*/;
79 variable4
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
80 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( variable2
/*i*/));
81 variable5
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*i*/, variable4
); /*new Match*/
82 variable4
= variable5
;
83 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable4
) /*AbstractArray::add*/;
84 variable1
= variable1
/*res*/;
86 return_label2
: while(false);
87 tracehead
= trace
.prev
;
90 val_t
string_search___BM_Pattern___to_s(val_t self
) {
91 struct trace_t trace
= {NULL
, LOCATE_string_search
, 67, LOCATE_string_search___BM_Pattern___to_s
};
93 trace
.prev
= tracehead
; tracehead
= &trace
;
94 variable0
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
96 return_label4
: while(false);
97 tracehead
= trace
.prev
;
100 val_t
string_search___BM_Pattern___search_index_in(val_t self
, val_t param0
, val_t param1
) {
101 struct trace_t trace
= {NULL
, LOCATE_string_search
, 69, LOCATE_string_search___BM_Pattern___search_index_in
};
113 trace
.prev
= tracehead
; tracehead
= &trace
;
116 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
117 if (!UNTAG_Bool(variable2
)) { fprintf(stderr
, "Assert%s failed", ""); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___BM_Pattern___search_index_in
, LOCATE_string_search
, 72); nit_exit(1);}
118 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
119 variable2
= variable3
;
120 variable4
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
121 variable3
= variable4
;
122 variable4
= variable1
/*from*/;
123 while (true) { /*while*/
124 variable5
= TAG_Int(UNTAG_Int( variable2
/*n*/)-UNTAG_Int( variable3
/*m*/));
125 variable5
= TAG_Int(UNTAG_Int(variable5
)+UNTAG_Int( TAG_Int(1)));
126 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
127 if (!UNTAG_Bool(variable5
)) break; /* while*/
128 variable6
= TAG_Int(UNTAG_Int( variable3
/*m*/)-UNTAG_Int( TAG_Int(1)));
129 variable5
= variable6
;
130 while (true) { /*while*/
131 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
132 variable7
= variable6
;
133 if (UNTAG_Bool(variable7
)) { /* and */
134 variable7
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
135 variable7
= ((string___String_____bra_t
)CALL(variable7
,COLOR_abstract_collection___Map_____bra
))(variable7
, variable5
/*i*/) /*String::[]*/;
136 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
137 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
138 variable7
= TAG_Bool((variable7
)==(variable8
));
140 variable6
= variable7
;
141 if (!UNTAG_Bool(variable6
)) break; /* while*/
142 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
143 continue_7
: while(0);
146 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( TAG_Int(0)));
147 if (UNTAG_Bool(variable6
)) { /*if*/
148 variable2
= variable4
/*j*/;
151 variable7
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
152 variable8
= variable5
/*i*/;
153 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
154 variable10
= variable9
;
155 if (UNTAG_Bool(variable10
)) { /* and */
156 variable10
= variable7
;
157 variable10
= ATTR_array___AbstractArray____length(variable10
) /*AbstractArray::_length*/;
158 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
160 variable9
= variable10
;
161 if (!UNTAG_Bool(variable9
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
162 variable9
= variable7
;
163 variable9
= ATTR_array___Array____items(variable9
) /*Array::_items*/;
164 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
166 return_label8
: while(false);
167 variable7
= variable9
;
168 variable6
= variable7
;
169 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
170 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
171 variable8
= ((string_search___BM_Pattern___bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___bc
))( self
, variable8
) /*BM_Pattern::bc*/;
172 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*m*/));
173 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( TAG_Int(1)));
174 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( variable5
/*i*/));
175 variable7
= variable8
;
176 variable8
= TAG_Bool(UNTAG_Int( variable6
/*gs*/)>UNTAG_Int( variable7
/*bc*/));
177 if (UNTAG_Bool(variable8
)) { /*if*/
178 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable6
/*gs*/)) /*j*/;
180 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable7
/*bc*/)) /*j*/;
183 continue_6
: while(0);
186 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
187 variable2
= variable5
;
189 return_label5
: while(false);
190 tracehead
= trace
.prev
;
193 val_t
string_search___BM_Pattern___search_in(val_t self
, val_t param0
, val_t param1
) {
194 struct trace_t trace
= {NULL
, LOCATE_string_search
, 96, LOCATE_string_search___BM_Pattern___search_in
};
200 trace
.prev
= tracehead
; tracehead
= &trace
;
203 variable3
= ((string_search___BM_Pattern___search_index_in_t
)CALL( self
,COLOR_string_search___Pattern___search_index_in
))( self
, variable0
/*s*/, variable1
/*from*/) /*BM_Pattern::search_index_in*/;
204 variable2
= variable3
;
205 variable3
= TAG_Bool(UNTAG_Int( variable2
/*to*/)<UNTAG_Int( TAG_Int(0)));
206 if (UNTAG_Bool(variable3
)) { /*if*/
207 variable2
= NIT_NULL
/*null*/;
210 variable3
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
211 variable4
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*to*/, variable3
); /*new Match*/
212 variable3
= variable4
;
213 variable2
= variable3
;
216 return_label9
: while(false);
217 tracehead
= trace
.prev
;
220 void string_search___BM_Pattern___init(val_t self
, val_t param0
, int* init_table
) {
221 struct trace_t trace
= {NULL
, LOCATE_string_search
, 107, LOCATE_string_search___BM_Pattern___init
};
225 trace
.prev
= tracehead
; tracehead
= &trace
;
227 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
]) return;
228 ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/ = variable0
/*motif*/;
229 variable1
= ((array___AbstractArray___length_t
)CALL( variable0
/*motif*/,COLOR_abstract_collection___Collection___length
))( variable0
/*motif*/) /*AbstractArray::length*/;
230 ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/ = variable1
;
231 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
232 variable2
= NEW_array___Array___with_capacity(variable1
); /*new Array[E]*/
233 variable1
= variable2
;
234 ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/ = variable1
;
235 variable1
= NEW_array___ArrayMap___init(); /*new ArrayMap[K, E]*/
236 ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/ = variable1
;
237 ((string_search___BM_Pattern___compute_gs_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_gs
))( self
) /*BM_Pattern::compute_gs*/;
238 ((string_search___BM_Pattern___compute_bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_bc
))( self
) /*BM_Pattern::compute_bc*/;
239 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
] = 1;
240 tracehead
= trace
.prev
;
243 val_t
string_search___BM_Pattern___bc(val_t self
, val_t param0
) {
244 struct trace_t trace
= {NULL
, LOCATE_string_search
, 124, LOCATE_string_search___BM_Pattern___bc
};
247 trace
.prev
= tracehead
; tracehead
= &trace
;
249 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
250 variable1
= ((abstract_collection___Map___has_key_t
)CALL(variable1
,COLOR_abstract_collection___Map___has_key
))(variable1
, variable0
/*e*/) /*Map::has_key*/;
251 if (UNTAG_Bool(variable1
)) { /*if*/
252 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
253 variable1
= ((abstract_collection___Map_____bra_t
)CALL(variable1
,COLOR_abstract_collection___Map_____bra
))(variable1
, variable0
/*e*/) /*Map::[]*/;
256 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
259 return_label11
: while(false);
260 tracehead
= trace
.prev
;
263 void string_search___BM_Pattern___compute_bc(val_t self
) {
264 struct trace_t trace
= {NULL
, LOCATE_string_search
, 139, LOCATE_string_search___BM_Pattern___compute_bc
};
271 trace
.prev
= tracehead
; tracehead
= &trace
;
272 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
273 variable0
= variable1
;
274 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
275 variable1
= variable2
;
276 variable2
= TAG_Int(0);
277 while (true) { /*while*/
278 variable3
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
279 variable3
= TAG_Bool(UNTAG_Int( variable2
/*i*/)<UNTAG_Int(variable3
));
280 if (!UNTAG_Bool(variable3
)) break; /* while*/
281 variable3
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
282 variable4
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable2
/*i*/) /*String::[]*/;
283 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( variable2
/*i*/));
284 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1)));
285 ((abstract_collection___Map_____braeq_t
)CALL(variable3
,COLOR_abstract_collection___Map_____braeq
))(variable3
, variable4
, variable5
) /*Map::[]=*/;
286 variable2
= TAG_Int(UNTAG_Int(variable2
)+UNTAG_Int( TAG_Int(1))) /*i*/;
287 continue_13
: while(0);
290 tracehead
= trace
.prev
;
293 val_t
string_search___BM_Pattern___suffixes(val_t self
) {
294 struct trace_t trace
= {NULL
, LOCATE_string_search
, 150, LOCATE_string_search___BM_Pattern___suffixes
};
306 trace
.prev
= tracehead
; tracehead
= &trace
;
307 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
308 variable0
= variable1
;
309 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
310 variable1
= variable2
;
311 variable3
= NEW_array___Array___filled_with( variable1
/*m*/, variable1
/*m*/); /*new Array[E]*/
312 variable2
= variable3
;
313 variable3
= TAG_Int(0);
314 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
315 variable4
= variable5
;
316 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(2)));
317 variable5
= variable6
;
318 while (true) { /*while*/
319 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
320 if (!UNTAG_Bool(variable6
)) break; /* while*/
321 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>UNTAG_Int( variable4
/*g*/));
322 variable7
= variable6
;
323 if (UNTAG_Bool(variable7
)) { /* and */
324 variable7
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
325 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( TAG_Int(1)));
326 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*f*/));
327 variable8
= variable7
;
328 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
329 variable10
= variable9
;
330 if (UNTAG_Bool(variable10
)) { /* and */
331 variable10
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
332 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
334 variable9
= variable10
;
335 if (!UNTAG_Bool(variable9
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
336 variable9
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
337 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
339 return_label16
: while(false);
340 variable7
= variable9
;
341 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)-UNTAG_Int( variable4
/*g*/));
342 variable7
= TAG_Bool(UNTAG_Int(variable7
)<UNTAG_Int(variable8
));
344 variable6
= variable7
;
345 if (UNTAG_Bool(variable6
)) { /*if*/
346 variable6
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
347 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( TAG_Int(1)));
348 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*f*/));
349 variable7
= variable6
;
350 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
351 variable9
= variable8
;
352 if (UNTAG_Bool(variable9
)) { /* and */
353 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
354 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
356 variable8
= variable9
;
357 if (!UNTAG_Bool(variable8
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
358 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
359 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
361 return_label17
: while(false);
362 variable6
= variable8
;
363 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
365 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( variable4
/*g*/));
366 if (UNTAG_Bool(variable6
)) { /*if*/
367 variable4
= variable5
/*i*/ /*g=*/;
369 variable3
= variable5
/*i*/ /*f=*/;
370 while (true) { /*while*/
371 variable6
= TAG_Bool(UNTAG_Int( variable4
/*g*/)>=UNTAG_Int( TAG_Int(0)));
372 variable7
= variable6
;
373 if (UNTAG_Bool(variable7
)) { /* and */
374 variable7
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable4
/*g*/) /*String::[]*/;
375 variable8
= TAG_Int(UNTAG_Int( variable4
/*g*/)+UNTAG_Int( variable1
/*m*/));
376 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( TAG_Int(1)));
377 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*f*/));
378 variable8
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable8
) /*String::[]*/;
379 variable7
= TAG_Bool((variable7
)==(variable8
));
381 variable6
= variable7
;
382 if (!UNTAG_Bool(variable6
)) break; /* while*/
383 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1))) /*g*/;
384 continue_18
: while(0);
387 variable6
= TAG_Int(UNTAG_Int( variable3
/*f*/)-UNTAG_Int( variable4
/*g*/));
388 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
390 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
391 continue_15
: while(0);
394 variable0
= variable2
/*suff*/;
396 return_label14
: while(false);
397 tracehead
= trace
.prev
;
400 void string_search___BM_Pattern___compute_gs(val_t self
) {
401 struct trace_t trace
= {NULL
, LOCATE_string_search
, 173, LOCATE_string_search___BM_Pattern___compute_gs
};
412 trace
.prev
= tracehead
; tracehead
= &trace
;
413 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
414 variable0
= variable1
;
415 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
416 variable1
= variable2
;
417 variable3
= ((string_search___BM_Pattern___suffixes_t
)CALL( self
,COLOR_string_search___BM_Pattern___suffixes
))( self
) /*BM_Pattern::suffixes*/;
418 variable2
= variable3
;
419 variable3
= TAG_Int(0);
420 while (true) { /*while*/
421 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( variable1
/*m*/));
422 if (!UNTAG_Bool(variable4
)) break; /* while*/
423 variable4
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
424 ((array___Array_____braeq_t
)CALL(variable4
,COLOR_abstract_collection___Map_____braeq
))(variable4
, variable3
/*i*/, variable1
/*m*/) /*Array::[]=*/;
425 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
426 continue_20
: while(0);
429 variable4
= TAG_Int(0);
430 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
431 variable3
= variable5
/*i=*/;
432 while (true) { /*while*/
433 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
434 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int(variable5
));
435 if (!UNTAG_Bool(variable5
)) break; /* while*/
436 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
437 variable5
= TAG_Bool(( variable3
/*i*/)==(variable5
));
438 variable6
= variable5
;
439 if (!UNTAG_Bool(variable6
)) { /* or */
440 variable6
= variable3
/*i*/;
441 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
442 variable8
= variable7
;
443 if (UNTAG_Bool(variable8
)) { /* and */
444 variable8
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
445 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
447 variable7
= variable8
;
448 if (!UNTAG_Bool(variable7
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
449 variable7
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
450 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
452 return_label22
: while(false);
453 variable6
= variable7
;
454 variable7
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( TAG_Int(1)));
455 variable6
= TAG_Bool((variable6
)==(variable7
));
457 variable5
= variable6
;
458 if (UNTAG_Bool(variable5
)) { /*if*/
459 while (true) { /*while*/
460 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
461 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( variable3
/*i*/));
462 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
463 if (!UNTAG_Bool(variable5
)) break; /* while*/
464 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
465 variable6
= variable4
/*j*/;
466 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
467 variable8
= variable7
;
468 if (UNTAG_Bool(variable8
)) { /* and */
469 variable8
= variable5
;
470 variable8
= ATTR_array___AbstractArray____length(variable8
) /*AbstractArray::_length*/;
471 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
473 variable7
= variable8
;
474 if (!UNTAG_Bool(variable7
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
475 variable7
= variable5
;
476 variable7
= ATTR_array___Array____items(variable7
) /*Array::_items*/;
477 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
479 return_label24
: while(false);
480 variable5
= variable7
;
481 variable5
= TAG_Bool((variable5
)==( variable1
/*m*/));
482 if (UNTAG_Bool(variable5
)) { /*if*/
483 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
484 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
485 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*i*/));
486 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable4
/*j*/, variable6
) /*Array::[]=*/;
488 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( TAG_Int(1))) /*j*/;
489 continue_23
: while(0);
493 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
494 continue_21
: while(0);
497 variable3
= TAG_Int(0) /*i=*/;
498 while (true) { /*while*/
499 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
500 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int(variable5
));
501 if (!UNTAG_Bool(variable5
)) break; /* while*/
502 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
503 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
504 variable7
= variable3
/*i*/;
505 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
506 variable9
= variable8
;
507 if (UNTAG_Bool(variable9
)) { /* and */
508 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
509 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
511 variable8
= variable9
;
512 if (!UNTAG_Bool(variable8
)) { fprintf(stderr
, "Assert%s failed", " 'index' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_array___Array_____bra
, LOCATE_string_search
, 229); nit_exit(1);}
513 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
514 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
516 return_label26
: while(false);
517 variable7
= variable8
;
518 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int(variable7
));
519 variable7
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
520 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*i*/));
521 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable6
, variable7
) /*Array::[]=*/;
522 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
523 continue_25
: while(0);
526 tracehead
= trace
.prev
;
529 val_t
string_search___Match___string(val_t self
) {
530 struct trace_t trace
= {NULL
, LOCATE_string_search
, 204, LOCATE_string_search___Match___string
};
531 trace
.prev
= tracehead
; tracehead
= &trace
;
532 tracehead
= trace
.prev
;
533 return ATTR_string_search___Match____string( self
) /*Match::_string*/;
535 val_t
string_search___Match___from(val_t self
) {
536 struct trace_t trace
= {NULL
, LOCATE_string_search
, 207, LOCATE_string_search___Match___from
};
537 trace
.prev
= tracehead
; tracehead
= &trace
;
538 tracehead
= trace
.prev
;
539 return ATTR_string_search___Match____from( self
) /*Match::_from*/;
541 val_t
string_search___Match___length(val_t self
) {
542 struct trace_t trace
= {NULL
, LOCATE_string_search
, 210, LOCATE_string_search___Match___length
};
543 trace
.prev
= tracehead
; tracehead
= &trace
;
544 tracehead
= trace
.prev
;
545 return ATTR_string_search___Match____length( self
) /*Match::_length*/;
547 val_t
string_search___Match___after(val_t self
) {
548 struct trace_t trace
= {NULL
, LOCATE_string_search
, 213, LOCATE_string_search___Match___after
};
551 trace
.prev
= tracehead
; tracehead
= &trace
;
552 variable0
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
553 variable1
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
554 variable0
= TAG_Int(UNTAG_Int(variable0
)+UNTAG_Int(variable1
));
556 return_label27
: while(false);
557 tracehead
= trace
.prev
;
560 val_t
string_search___Match___to_s(val_t self
) {
561 struct trace_t trace
= {NULL
, LOCATE_string_search
, 217, LOCATE_string_search___Match___to_s
};
565 trace
.prev
= tracehead
; tracehead
= &trace
;
566 variable0
= ATTR_string_search___Match____string( self
) /*Match::_string*/;
567 variable1
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
568 variable2
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
569 variable0
= ((string___String___substring_t
)CALL(variable0
,COLOR_string___String___substring
))(variable0
, variable1
, variable2
) /*String::substring*/;
571 return_label28
: while(false);
572 tracehead
= trace
.prev
;
575 void string_search___Match___init(val_t self
, val_t param0
, val_t param1
, val_t param2
, int* init_table
) {
576 struct trace_t trace
= {NULL
, LOCATE_string_search
, 220, LOCATE_string_search___Match___init
};
582 trace
.prev
= tracehead
; tracehead
= &trace
;
586 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
]) return;
587 variable3
= TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0
/*s*/ == NIT_NULL
/*null*/) || (( variable0
/*s*/ != NIT_NULL
) && ((((kernel___Object_____eqeq_t
)CALL( variable0
/*s*/,COLOR_kernel___Object_____eqeq
))==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable0
/*s*/, NIT_NULL
/*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t
)CALL( variable0
/*s*/,COLOR_kernel___Object_____eqeq
))( variable0
/*s*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
588 if (!UNTAG_Bool(variable3
)) { fprintf(stderr
, "Assert%s failed", " 'non_null_string' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___Match___init
, LOCATE_string_search
, 223); nit_exit(1);}
589 variable3
= TAG_Bool(UNTAG_Int( variable2
/*len*/)>=UNTAG_Int( TAG_Int(0)));
590 if (!UNTAG_Bool(variable3
)) { fprintf(stderr
, "Assert%s failed", " 'positive_length' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___Match___init
, LOCATE_string_search
, 224); nit_exit(1);}
591 variable3
= TAG_Bool(UNTAG_Int( variable1
/*f*/)>=UNTAG_Int( TAG_Int(0)));
592 if (!UNTAG_Bool(variable3
)) { fprintf(stderr
, "Assert%s failed", " 'valid_from' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___Match___init
, LOCATE_string_search
, 225); nit_exit(1);}
593 variable3
= TAG_Int(UNTAG_Int( variable1
/*f*/)+UNTAG_Int( variable2
/*len*/));
594 variable4
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
595 variable3
= TAG_Bool(UNTAG_Int(variable3
)<=UNTAG_Int(variable4
));
596 if (!UNTAG_Bool(variable3
)) { fprintf(stderr
, "Assert%s failed", " 'valid_after' "); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___Match___init
, LOCATE_string_search
, 226); nit_exit(1);}
597 ATTR_string_search___Match____string( self
) /*Match::_string*/ = variable0
/*s*/;
598 ATTR_string_search___Match____from( self
) /*Match::_from*/ = variable1
/*f*/;
599 ATTR_string_search___Match____length( self
) /*Match::_length*/ = variable2
/*len*/;
600 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
] = 1;
601 tracehead
= trace
.prev
;
604 val_t
string_search___Char___search_index_in(val_t self
, val_t param0
, val_t param1
) {
605 struct trace_t trace
= {NULL
, LOCATE_string_search
, 235, LOCATE_string_search___Char___search_index_in
};
610 trace
.prev
= tracehead
; tracehead
= &trace
;
613 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
614 variable2
= variable3
;
615 while (true) { /*while*/
616 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
617 if (!UNTAG_Bool(variable3
)) break; /* while*/
618 variable3
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable1
/*from*/) /*String::[]*/;
619 variable3
= TAG_Bool((variable3
)==( self
));
620 if (UNTAG_Bool(variable3
)) { /*if*/
621 variable2
= variable1
/*from*/;
624 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
625 continue_31
: while(0);
628 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
629 variable2
= variable3
;
631 return_label30
: while(false);
632 tracehead
= trace
.prev
;
635 val_t
string_search___Char___search_in(val_t self
, val_t param0
, val_t param1
) {
636 struct trace_t trace
= {NULL
, LOCATE_string_search
, 245, LOCATE_string_search___Char___search_in
};
641 trace
.prev
= tracehead
; tracehead
= &trace
;
644 variable3
= ((string_search___Char___search_index_in_t
)CALL( self
,COLOR_string_search___Pattern___search_index_in
))( self
, variable0
/*s*/, variable1
/*from*/) /*Char::search_index_in*/;
645 variable2
= variable3
;
646 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
647 if (UNTAG_Bool(variable3
)) { /*if*/
648 variable2
= NIT_NULL
/*null*/;
651 variable3
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, TAG_Int(1)); /*new Match*/
652 variable2
= variable3
;
655 return_label32
: while(false);
656 tracehead
= trace
.prev
;
659 val_t
string_search___String___search_index_in(val_t self
, val_t param0
, val_t param1
) {
660 struct trace_t trace
= {NULL
, LOCATE_string_search
, 258, LOCATE_string_search___String___search_index_in
};
668 trace
.prev
= tracehead
; tracehead
= &trace
;
671 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
672 if (!UNTAG_Bool(variable2
)) { fprintf(stderr
, "Assert%s failed", ""); fprintf(stderr
, " in %s (%s:%d)\n", LOCATE_string_search___String___search_index_in
, LOCATE_string_search
, 260); nit_exit(1);}
673 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
674 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
675 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int(variable4
));
676 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1)));
677 variable2
= variable3
;
678 while (true) { /*while*/
679 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
680 if (!UNTAG_Bool(variable3
)) break; /* while*/
681 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
682 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1)));
683 variable3
= variable4
;
684 while (true) { /*while*/
685 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int( TAG_Int(0)));
686 variable5
= variable4
;
687 if (UNTAG_Bool(variable5
)) { /* and */
688 variable5
= ((string___String_____bra_t
)CALL( self
,COLOR_abstract_collection___Map_____bra
))( self
, variable3
/*i*/) /*String::[]*/;
689 variable6
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( variable1
/*from*/));
690 variable6
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable6
) /*String::[]*/;
691 variable5
= TAG_Bool((variable5
)==(variable6
));
693 variable4
= variable5
;
694 if (!UNTAG_Bool(variable4
)) break; /* while*/
695 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
696 continue_35
: while(0);
699 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( TAG_Int(0)));
700 if (UNTAG_Bool(variable4
)) { /*if*/
701 variable2
= variable1
/*from*/;
704 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
705 continue_34
: while(0);
708 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
709 variable2
= variable3
;
711 return_label33
: while(false);
712 tracehead
= trace
.prev
;
715 val_t
string_search___String___search_in(val_t self
, val_t param0
, val_t param1
) {
716 struct trace_t trace
= {NULL
, LOCATE_string_search
, 273, LOCATE_string_search___String___search_in
};
722 trace
.prev
= tracehead
; tracehead
= &trace
;
725 variable3
= ((string_search___String___search_index_in_t
)CALL( self
,COLOR_string_search___Pattern___search_index_in
))( self
, variable0
/*s*/, variable1
/*from*/) /*String::search_index_in*/;
726 variable2
= variable3
;
727 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
728 if (UNTAG_Bool(variable3
)) { /*if*/
729 variable2
= NIT_NULL
/*null*/;
732 variable3
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
733 variable4
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, variable3
); /*new Match*/
734 variable3
= variable4
;
735 variable2
= variable3
;
738 return_label36
: while(false);
739 tracehead
= trace
.prev
;
742 val_t
string_search___String___search(val_t self
, val_t param0
) {
743 struct trace_t trace
= {NULL
, LOCATE_string_search
, 283, LOCATE_string_search___String___search
};
746 trace
.prev
= tracehead
; tracehead
= &trace
;
748 variable1
= ((string_search___Pattern___search_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___search_in
))( variable0
/*p*/, self
, TAG_Int(0)) /*Pattern::search_in*/;
750 return_label37
: while(false);
751 tracehead
= trace
.prev
;
754 val_t
string_search___String___search_from(val_t self
, val_t param0
, val_t param1
) {
755 struct trace_t trace
= {NULL
, LOCATE_string_search
, 286, LOCATE_string_search___String___search_from
};
759 trace
.prev
= tracehead
; tracehead
= &trace
;
762 variable2
= ((string_search___Pattern___search_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___search_in
))( variable0
/*p*/, self
, variable1
/*from*/) /*Pattern::search_in*/;
764 return_label38
: while(false);
765 tracehead
= trace
.prev
;
768 val_t
string_search___String___search_all(val_t self
, val_t param0
) {
769 struct trace_t trace
= {NULL
, LOCATE_string_search
, 291, LOCATE_string_search___String___search_all
};
772 trace
.prev
= tracehead
; tracehead
= &trace
;
774 variable1
= ((string_search___Pattern___search_all_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___search_all_in
))( variable0
/*p*/, self
) /*Pattern::search_all_in*/;
776 return_label39
: while(false);
777 tracehead
= trace
.prev
;
780 val_t
string_search___String___split_with(val_t self
, val_t param0
) {
781 struct trace_t trace
= {NULL
, LOCATE_string_search
, 300, LOCATE_string_search___String___split_with
};
788 trace
.prev
= tracehead
; tracehead
= &trace
;
790 variable2
= ((string_search___Pattern___split_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___split_in
))( variable0
/*p*/, self
) /*Pattern::split_in*/;
791 variable1
= variable2
;
792 variable3
= ((array___AbstractArray___length_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___length
))( variable1
/*matches*/) /*AbstractArray::length*/;
793 variable4
= NEW_array___Array___with_capacity(variable3
); /*new Array[E]*/
794 variable3
= variable4
;
795 variable2
= variable3
;
796 variable3
= ((array___AbstractArray___iterator_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___iterator
))( variable1
/*matches*/) /*AbstractArray::iterator*/;
797 while (true) { /*for*/
798 variable4
= ((array___ArrayIterator___is_ok_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___is_ok
))(variable3
) /*ArrayIterator::is_ok*/;
799 if (!UNTAG_Bool(variable4
)) break; /*for*/
800 variable4
= ((array___ArrayIterator___item_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___item
))(variable3
) /*ArrayIterator::item*/;
801 variable5
= ((string_search___Match___to_s_t
)CALL( variable4
/*m*/,COLOR_string___Object___to_s
))( variable4
/*m*/) /*Match::to_s*/;
802 ((array___AbstractArray___add_t
)CALL( variable2
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable2
/*res*/, variable5
) /*AbstractArray::add*/;
803 continue_41
: while(0);
804 ((array___ArrayIterator___next_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___next
))(variable3
) /*ArrayIterator::next*/;
807 variable1
= variable2
/*res*/;
809 return_label40
: while(false);
810 tracehead
= trace
.prev
;
813 val_t
string_search___String___split(val_t self
) {
814 struct trace_t trace
= {NULL
, LOCATE_string_search
, 310, LOCATE_string_search___String___split
};
816 trace
.prev
= tracehead
; tracehead
= &trace
;
817 variable0
= ((string_search___String___split_with_t
)CALL( self
,COLOR_string_search___String___split_with
))( self
, TAG_Char('\n')) /*String::split_with*/;
819 return_label42
: while(false);
820 tracehead
= trace
.prev
;