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
, NULL
, 21, LOCATE_string_search___Pattern___search_index_in
};
5 trace
.prev
= tracehead
; tracehead
= &trace
;
6 trace
.file
= LOCATE_string_search
;
7 fprintf(stderr
, "Deferred method %s called");
8 fprintf(stderr
, " (%s:%d)\n", LOCATE_string_search
, 21);
10 tracehead
= trace
.prev
;
13 val_t
string_search___Pattern___search_in(val_t self
, val_t param0
, val_t param1
) {
14 struct trace_t trace
= {NULL
, NULL
, 26, LOCATE_string_search___Pattern___search_in
};
15 trace
.prev
= tracehead
; tracehead
= &trace
;
16 trace
.file
= LOCATE_string_search
;
17 fprintf(stderr
, "Deferred method %s called");
18 fprintf(stderr
, " (%s:%d)\n", LOCATE_string_search
, 26);
20 tracehead
= trace
.prev
;
23 val_t
string_search___Pattern___search_all_in(val_t self
, val_t param0
) {
24 struct trace_t trace
= {NULL
, NULL
, 30, LOCATE_string_search___Pattern___search_all_in
};
29 trace
.prev
= tracehead
; tracehead
= &trace
;
30 trace
.file
= LOCATE_string_search
;
32 variable2
= NEW_Array_array___Array___init(); /*new Array[Match]*/
33 variable1
= variable2
;
34 variable3
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, TAG_Int(0)) /*Pattern::search_in*/;
35 variable2
= variable3
;
36 while (true) { /*while*/
37 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::==*/)))))));
38 if (!UNTAG_Bool(variable3
)) break; /* while*/
39 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable2
/*match*/) /*AbstractArray::add*/;
40 variable3
= ((string_search___Match___after_t
)CALL( variable2
/*match*/,COLOR_string_search___Match___after
))( variable2
/*match*/) /*Match::after*/;
41 variable3
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, variable3
) /*Pattern::search_in*/;
42 variable2
= variable3
/*match=*/;
46 variable1
= variable1
/*res*/;
48 return_label0
: while(false);
49 tracehead
= trace
.prev
;
52 val_t
string_search___Pattern___split_in(val_t self
, val_t param0
) {
53 struct trace_t trace
= {NULL
, NULL
, 42, LOCATE_string_search___Pattern___split_in
};
60 trace
.prev
= tracehead
; tracehead
= &trace
;
61 trace
.file
= LOCATE_string_search
;
63 variable2
= NEW_Array_array___Array___init(); /*new Array[Match]*/
64 variable1
= variable2
;
65 variable2
= TAG_Int(0);
66 variable4
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, TAG_Int(0)) /*Pattern::search_in*/;
67 variable3
= variable4
;
68 while (true) { /*while*/
69 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::==*/)))))));
70 if (!UNTAG_Bool(variable4
)) break; /* while*/
71 variable5
= ((string_search___Match___from_t
)CALL( variable3
/*match*/,COLOR_string_search___Match___from
))( variable3
/*match*/) /*Match::from*/;
72 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( variable2
/*i*/));
73 variable4
= variable5
;
74 variable5
= NEW_Match_string_search___Match___init( variable0
/*s*/, variable2
/*i*/, variable4
/*len*/); /*new Match*/
75 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable5
) /*AbstractArray::add*/;
76 variable5
= ((string_search___Match___after_t
)CALL( variable3
/*match*/,COLOR_string_search___Match___after
))( variable3
/*match*/) /*Match::after*/;
77 variable2
= variable5
/*i=*/;
78 variable5
= ((string_search___Pattern___search_in_t
)CALL( self
,COLOR_string_search___Pattern___search_in
))( self
, variable0
/*s*/, variable2
/*i*/) /*Pattern::search_in*/;
79 variable3
= variable5
/*match=*/;
83 variable4
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
84 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( variable2
/*i*/));
85 variable5
= NEW_Match_string_search___Match___init( variable0
/*s*/, variable2
/*i*/, variable4
); /*new Match*/
86 variable4
= variable5
;
87 ((array___AbstractArray___add_t
)CALL( variable1
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable1
/*res*/, variable4
) /*AbstractArray::add*/;
88 variable1
= variable1
/*res*/;
90 return_label2
: while(false);
91 tracehead
= trace
.prev
;
94 void string_search___Pattern___init(val_t self
, int* init_table
) {
95 struct trace_t trace
= {NULL
, NULL
, 0, LOCATE_string_search___Pattern___init
};
96 trace
.prev
= tracehead
; tracehead
= &trace
;
97 trace
.file
= LOCATE_string_search
;
98 tracehead
= trace
.prev
;
101 val_t
string_search___BM_Pattern___to_s(val_t self
) {
102 struct trace_t trace
= {NULL
, NULL
, 67, LOCATE_string_search___BM_Pattern___to_s
};
104 trace
.prev
= tracehead
; tracehead
= &trace
;
105 trace
.file
= LOCATE_string_search
;
106 variable0
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
108 return_label4
: while(false);
109 tracehead
= trace
.prev
;
112 val_t
string_search___BM_Pattern___search_index_in(val_t self
, val_t param0
, val_t param1
) {
113 struct trace_t trace
= {NULL
, NULL
, 69, LOCATE_string_search___BM_Pattern___search_index_in
};
125 trace
.prev
= tracehead
; tracehead
= &trace
;
126 trace
.file
= LOCATE_string_search
;
129 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
130 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);}
131 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
132 variable2
= variable3
;
133 variable4
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
134 variable3
= variable4
;
135 variable4
= variable1
/*from*/;
136 while (true) { /*while*/
137 variable5
= TAG_Int(UNTAG_Int( variable2
/*n*/)-UNTAG_Int( variable3
/*m*/));
138 variable5
= TAG_Int(UNTAG_Int(variable5
)+UNTAG_Int( TAG_Int(1)));
139 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
140 if (!UNTAG_Bool(variable5
)) break; /* while*/
141 variable6
= TAG_Int(UNTAG_Int( variable3
/*m*/)-UNTAG_Int( TAG_Int(1)));
142 variable5
= variable6
;
143 while (true) { /*while*/
144 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
145 variable7
= variable6
;
146 if (UNTAG_Bool(variable7
)) { /* and */
147 variable7
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
148 variable7
= ((string___String_____bra_t
)CALL(variable7
,COLOR_abstract_collection___Map_____bra
))(variable7
, variable5
/*i*/) /*String::[]*/;
149 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
150 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
151 variable7
= TAG_Bool((variable7
)==(variable8
));
153 variable6
= variable7
;
154 if (!UNTAG_Bool(variable6
)) break; /* while*/
155 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
156 continue_7
: while(0);
159 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( TAG_Int(0)));
160 if (UNTAG_Bool(variable6
)) { /*if*/
161 variable2
= variable4
/*j*/;
164 variable7
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
165 variable8
= variable5
/*i*/;
166 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
167 variable10
= variable9
;
168 if (UNTAG_Bool(variable10
)) { /* and */
169 variable10
= variable7
;
170 variable10
= ATTR_array___AbstractArray____length(variable10
) /*AbstractArray::_length*/;
171 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
173 variable9
= variable10
;
174 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);}
175 variable9
= variable7
;
176 variable9
= ATTR_array___Array____items(variable9
) /*Array::_items*/;
177 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
179 return_label8
: while(false);
180 variable7
= variable9
;
181 variable6
= variable7
;
182 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
183 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
184 variable8
= ((string_search___BM_Pattern___bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___bc
))( self
, variable8
) /*BM_Pattern::bc*/;
185 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*m*/));
186 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( TAG_Int(1)));
187 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( variable5
/*i*/));
188 variable7
= variable8
;
189 variable8
= TAG_Bool(UNTAG_Int( variable6
/*gs*/)>UNTAG_Int( variable7
/*bc*/));
190 if (UNTAG_Bool(variable8
)) { /*if*/
191 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable6
/*gs*/)) /*j*/;
193 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable7
/*bc*/)) /*j*/;
196 continue_6
: while(0);
199 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
200 variable2
= variable5
;
202 return_label5
: while(false);
203 tracehead
= trace
.prev
;
206 val_t
string_search___BM_Pattern___search_in(val_t self
, val_t param0
, val_t param1
) {
207 struct trace_t trace
= {NULL
, NULL
, 96, LOCATE_string_search___BM_Pattern___search_in
};
213 trace
.prev
= tracehead
; tracehead
= &trace
;
214 trace
.file
= LOCATE_string_search
;
217 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*/;
218 variable2
= variable3
;
219 variable3
= TAG_Bool(UNTAG_Int( variable2
/*to*/)<UNTAG_Int( TAG_Int(0)));
220 if (UNTAG_Bool(variable3
)) { /*if*/
221 variable2
= NIT_NULL
/*null*/;
224 variable3
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
225 variable4
= NEW_Match_string_search___Match___init( variable0
/*s*/, variable2
/*to*/, variable3
); /*new Match*/
226 variable3
= variable4
;
227 variable2
= variable3
;
230 return_label9
: while(false);
231 tracehead
= trace
.prev
;
234 void string_search___BM_Pattern___init(val_t self
, val_t param0
, int* init_table
) {
235 struct trace_t trace
= {NULL
, NULL
, 107, LOCATE_string_search___BM_Pattern___init
};
239 trace
.prev
= tracehead
; tracehead
= &trace
;
240 trace
.file
= LOCATE_string_search
;
242 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
]) return;
243 ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/ = variable0
/*motif*/;
244 variable1
= ((array___AbstractArray___length_t
)CALL( variable0
/*motif*/,COLOR_abstract_collection___Collection___length
))( variable0
/*motif*/) /*AbstractArray::length*/;
245 ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/ = variable1
;
246 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
247 variable2
= NEW_Array_array___Array___with_capacity(variable1
); /*new Array[Int]*/
248 variable1
= variable2
;
249 ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/ = variable1
;
250 variable1
= NEW_ArrayMap_array___ArrayMap___init(); /*new ArrayMap[Char, Int]*/
251 ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/ = variable1
;
252 ((string_search___BM_Pattern___compute_gs_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_gs
))( self
) /*BM_Pattern::compute_gs*/;
253 ((string_search___BM_Pattern___compute_bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_bc
))( self
) /*BM_Pattern::compute_bc*/;
254 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
] = 1;
255 tracehead
= trace
.prev
;
258 val_t
string_search___BM_Pattern___bc(val_t self
, val_t param0
) {
259 struct trace_t trace
= {NULL
, NULL
, 124, LOCATE_string_search___BM_Pattern___bc
};
262 trace
.prev
= tracehead
; tracehead
= &trace
;
263 trace
.file
= LOCATE_string_search
;
265 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
266 variable1
= ((abstract_collection___Map___has_key_t
)CALL(variable1
,COLOR_abstract_collection___Map___has_key
))(variable1
, variable0
/*e*/) /*Map::has_key*/;
267 if (UNTAG_Bool(variable1
)) { /*if*/
268 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
269 variable1
= ((abstract_collection___Map_____bra_t
)CALL(variable1
,COLOR_abstract_collection___Map_____bra
))(variable1
, variable0
/*e*/) /*Map::[]*/;
272 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
275 return_label11
: while(false);
276 tracehead
= trace
.prev
;
279 void string_search___BM_Pattern___compute_bc(val_t self
) {
280 struct trace_t trace
= {NULL
, NULL
, 139, LOCATE_string_search___BM_Pattern___compute_bc
};
287 trace
.prev
= tracehead
; tracehead
= &trace
;
288 trace
.file
= LOCATE_string_search
;
289 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
290 variable0
= variable1
;
291 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
292 variable1
= variable2
;
293 variable2
= TAG_Int(0);
294 while (true) { /*while*/
295 variable3
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
296 variable3
= TAG_Bool(UNTAG_Int( variable2
/*i*/)<UNTAG_Int(variable3
));
297 if (!UNTAG_Bool(variable3
)) break; /* while*/
298 variable3
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
299 variable4
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable2
/*i*/) /*String::[]*/;
300 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( variable2
/*i*/));
301 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1)));
302 ((abstract_collection___Map_____braeq_t
)CALL(variable3
,COLOR_abstract_collection___Map_____braeq
))(variable3
, variable4
, variable5
) /*Map::[]=*/;
303 variable2
= TAG_Int(UNTAG_Int(variable2
)+UNTAG_Int( TAG_Int(1))) /*i*/;
304 continue_13
: while(0);
307 tracehead
= trace
.prev
;
310 val_t
string_search___BM_Pattern___suffixes(val_t self
) {
311 struct trace_t trace
= {NULL
, NULL
, 150, LOCATE_string_search___BM_Pattern___suffixes
};
323 trace
.prev
= tracehead
; tracehead
= &trace
;
324 trace
.file
= LOCATE_string_search
;
325 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
326 variable0
= variable1
;
327 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
328 variable1
= variable2
;
329 variable3
= NEW_Array_array___Array___filled_with( variable1
/*m*/, variable1
/*m*/); /*new Array[Int]*/
330 variable2
= variable3
;
331 variable3
= TAG_Int(0);
332 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
333 variable4
= variable5
;
334 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(2)));
335 variable5
= variable6
;
336 while (true) { /*while*/
337 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
338 if (!UNTAG_Bool(variable6
)) break; /* while*/
339 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>UNTAG_Int( variable4
/*g*/));
340 variable7
= variable6
;
341 if (UNTAG_Bool(variable7
)) { /* and */
342 variable7
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
343 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( TAG_Int(1)));
344 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*f*/));
345 variable8
= variable7
;
346 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
347 variable10
= variable9
;
348 if (UNTAG_Bool(variable10
)) { /* and */
349 variable10
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
350 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
352 variable9
= variable10
;
353 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);}
354 variable9
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
355 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
357 return_label16
: while(false);
358 variable7
= variable9
;
359 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)-UNTAG_Int( variable4
/*g*/));
360 variable7
= TAG_Bool(UNTAG_Int(variable7
)<UNTAG_Int(variable8
));
362 variable6
= variable7
;
363 if (UNTAG_Bool(variable6
)) { /*if*/
364 variable6
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
365 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( TAG_Int(1)));
366 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*f*/));
367 variable7
= variable6
;
368 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
369 variable9
= variable8
;
370 if (UNTAG_Bool(variable9
)) { /* and */
371 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
372 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
374 variable8
= variable9
;
375 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);}
376 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
377 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
379 return_label17
: while(false);
380 variable6
= variable8
;
381 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
383 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( variable4
/*g*/));
384 if (UNTAG_Bool(variable6
)) { /*if*/
385 variable4
= variable5
/*i*/ /*g=*/;
387 variable3
= variable5
/*i*/ /*f=*/;
388 while (true) { /*while*/
389 variable6
= TAG_Bool(UNTAG_Int( variable4
/*g*/)>=UNTAG_Int( TAG_Int(0)));
390 variable7
= variable6
;
391 if (UNTAG_Bool(variable7
)) { /* and */
392 variable7
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable4
/*g*/) /*String::[]*/;
393 variable8
= TAG_Int(UNTAG_Int( variable4
/*g*/)+UNTAG_Int( variable1
/*m*/));
394 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( TAG_Int(1)));
395 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*f*/));
396 variable8
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable8
) /*String::[]*/;
397 variable7
= TAG_Bool((variable7
)==(variable8
));
399 variable6
= variable7
;
400 if (!UNTAG_Bool(variable6
)) break; /* while*/
401 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1))) /*g*/;
402 continue_18
: while(0);
405 variable6
= TAG_Int(UNTAG_Int( variable3
/*f*/)-UNTAG_Int( variable4
/*g*/));
406 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
408 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
409 continue_15
: while(0);
412 variable0
= variable2
/*suff*/;
414 return_label14
: while(false);
415 tracehead
= trace
.prev
;
418 void string_search___BM_Pattern___compute_gs(val_t self
) {
419 struct trace_t trace
= {NULL
, NULL
, 173, LOCATE_string_search___BM_Pattern___compute_gs
};
430 trace
.prev
= tracehead
; tracehead
= &trace
;
431 trace
.file
= LOCATE_string_search
;
432 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
433 variable0
= variable1
;
434 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
435 variable1
= variable2
;
436 variable3
= ((string_search___BM_Pattern___suffixes_t
)CALL( self
,COLOR_string_search___BM_Pattern___suffixes
))( self
) /*BM_Pattern::suffixes*/;
437 variable2
= variable3
;
438 variable3
= TAG_Int(0);
439 while (true) { /*while*/
440 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( variable1
/*m*/));
441 if (!UNTAG_Bool(variable4
)) break; /* while*/
442 variable4
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
443 ((array___Array_____braeq_t
)CALL(variable4
,COLOR_abstract_collection___Map_____braeq
))(variable4
, variable3
/*i*/, variable1
/*m*/) /*Array::[]=*/;
444 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
445 continue_20
: while(0);
448 variable4
= TAG_Int(0);
449 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
450 variable3
= variable5
/*i=*/;
451 while (true) { /*while*/
452 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
453 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int(variable5
));
454 if (!UNTAG_Bool(variable5
)) break; /* while*/
455 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
456 variable5
= TAG_Bool(( variable3
/*i*/)==(variable5
));
457 variable6
= variable5
;
458 if (!UNTAG_Bool(variable6
)) { /* or */
459 variable6
= variable3
/*i*/;
460 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
461 variable8
= variable7
;
462 if (UNTAG_Bool(variable8
)) { /* and */
463 variable8
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
464 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
466 variable7
= variable8
;
467 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);}
468 variable7
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
469 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
471 return_label22
: while(false);
472 variable6
= variable7
;
473 variable7
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( TAG_Int(1)));
474 variable6
= TAG_Bool((variable6
)==(variable7
));
476 variable5
= variable6
;
477 if (UNTAG_Bool(variable5
)) { /*if*/
478 while (true) { /*while*/
479 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
480 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( variable3
/*i*/));
481 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
482 if (!UNTAG_Bool(variable5
)) break; /* while*/
483 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
484 variable6
= variable4
/*j*/;
485 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
486 variable8
= variable7
;
487 if (UNTAG_Bool(variable8
)) { /* and */
488 variable8
= variable5
;
489 variable8
= ATTR_array___AbstractArray____length(variable8
) /*AbstractArray::_length*/;
490 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
492 variable7
= variable8
;
493 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);}
494 variable7
= variable5
;
495 variable7
= ATTR_array___Array____items(variable7
) /*Array::_items*/;
496 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
498 return_label24
: while(false);
499 variable5
= variable7
;
500 variable5
= TAG_Bool((variable5
)==( variable1
/*m*/));
501 if (UNTAG_Bool(variable5
)) { /*if*/
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 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*i*/));
505 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable4
/*j*/, variable6
) /*Array::[]=*/;
507 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( TAG_Int(1))) /*j*/;
508 continue_23
: while(0);
512 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
513 continue_21
: while(0);
516 variable3
= TAG_Int(0) /*i=*/;
517 while (true) { /*while*/
518 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
519 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int(variable5
));
520 if (!UNTAG_Bool(variable5
)) break; /* while*/
521 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
522 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
523 variable7
= variable3
/*i*/;
524 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
525 variable9
= variable8
;
526 if (UNTAG_Bool(variable9
)) { /* and */
527 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
528 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
530 variable8
= variable9
;
531 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);}
532 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
533 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
535 return_label26
: while(false);
536 variable7
= variable8
;
537 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int(variable7
));
538 variable7
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
539 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*i*/));
540 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable6
, variable7
) /*Array::[]=*/;
541 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
542 continue_25
: while(0);
545 tracehead
= trace
.prev
;
548 val_t
string_search___Match___string(val_t self
) {
549 struct trace_t trace
= {NULL
, NULL
, 204, LOCATE_string_search___Match___string
};
550 trace
.prev
= tracehead
; tracehead
= &trace
;
551 trace
.file
= LOCATE_string_search
;
552 tracehead
= trace
.prev
;
553 return ATTR_string_search___Match____string( self
) /*Match::_string*/;
555 val_t
string_search___Match___from(val_t self
) {
556 struct trace_t trace
= {NULL
, NULL
, 207, LOCATE_string_search___Match___from
};
557 trace
.prev
= tracehead
; tracehead
= &trace
;
558 trace
.file
= LOCATE_string_search
;
559 tracehead
= trace
.prev
;
560 return ATTR_string_search___Match____from( self
) /*Match::_from*/;
562 val_t
string_search___Match___length(val_t self
) {
563 struct trace_t trace
= {NULL
, NULL
, 210, LOCATE_string_search___Match___length
};
564 trace
.prev
= tracehead
; tracehead
= &trace
;
565 trace
.file
= LOCATE_string_search
;
566 tracehead
= trace
.prev
;
567 return ATTR_string_search___Match____length( self
) /*Match::_length*/;
569 val_t
string_search___Match___after(val_t self
) {
570 struct trace_t trace
= {NULL
, NULL
, 213, LOCATE_string_search___Match___after
};
573 trace
.prev
= tracehead
; tracehead
= &trace
;
574 trace
.file
= LOCATE_string_search
;
575 variable0
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
576 variable1
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
577 variable0
= TAG_Int(UNTAG_Int(variable0
)+UNTAG_Int(variable1
));
579 return_label27
: while(false);
580 tracehead
= trace
.prev
;
583 val_t
string_search___Match___to_s(val_t self
) {
584 struct trace_t trace
= {NULL
, NULL
, 217, LOCATE_string_search___Match___to_s
};
588 trace
.prev
= tracehead
; tracehead
= &trace
;
589 trace
.file
= LOCATE_string_search
;
590 variable0
= ATTR_string_search___Match____string( self
) /*Match::_string*/;
591 variable1
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
592 variable2
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
593 variable0
= ((string___String___substring_t
)CALL(variable0
,COLOR_string___String___substring
))(variable0
, variable1
, variable2
) /*String::substring*/;
595 return_label28
: while(false);
596 tracehead
= trace
.prev
;
599 void string_search___Match___init(val_t self
, val_t param0
, val_t param1
, val_t param2
, int* init_table
) {
600 struct trace_t trace
= {NULL
, NULL
, 220, LOCATE_string_search___Match___init
};
606 trace
.prev
= tracehead
; tracehead
= &trace
;
607 trace
.file
= LOCATE_string_search
;
611 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
]) return;
612 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::==*/)))))));
613 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);}
614 variable3
= TAG_Bool(UNTAG_Int( variable2
/*len*/)>=UNTAG_Int( TAG_Int(0)));
615 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);}
616 variable3
= TAG_Bool(UNTAG_Int( variable1
/*f*/)>=UNTAG_Int( TAG_Int(0)));
617 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);}
618 variable3
= TAG_Int(UNTAG_Int( variable1
/*f*/)+UNTAG_Int( variable2
/*len*/));
619 variable4
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
620 variable3
= TAG_Bool(UNTAG_Int(variable3
)<=UNTAG_Int(variable4
));
621 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);}
622 ATTR_string_search___Match____string( self
) /*Match::_string*/ = variable0
/*s*/;
623 ATTR_string_search___Match____from( self
) /*Match::_from*/ = variable1
/*f*/;
624 ATTR_string_search___Match____length( self
) /*Match::_length*/ = variable2
/*len*/;
625 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
] = 1;
626 tracehead
= trace
.prev
;
629 val_t
string_search___Char___search_index_in(val_t self
, val_t param0
, val_t param1
) {
630 struct trace_t trace
= {NULL
, NULL
, 235, LOCATE_string_search___Char___search_index_in
};
635 trace
.prev
= tracehead
; tracehead
= &trace
;
636 trace
.file
= LOCATE_string_search
;
639 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
640 variable2
= variable3
;
641 while (true) { /*while*/
642 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
643 if (!UNTAG_Bool(variable3
)) break; /* while*/
644 variable3
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable1
/*from*/) /*String::[]*/;
645 variable3
= TAG_Bool((variable3
)==( self
));
646 if (UNTAG_Bool(variable3
)) { /*if*/
647 variable2
= variable1
/*from*/;
650 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
651 continue_31
: while(0);
654 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
655 variable2
= variable3
;
657 return_label30
: while(false);
658 tracehead
= trace
.prev
;
661 val_t
string_search___Char___search_in(val_t self
, val_t param0
, val_t param1
) {
662 struct trace_t trace
= {NULL
, NULL
, 245, LOCATE_string_search___Char___search_in
};
667 trace
.prev
= tracehead
; tracehead
= &trace
;
668 trace
.file
= LOCATE_string_search
;
671 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*/;
672 variable2
= variable3
;
673 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
674 if (UNTAG_Bool(variable3
)) { /*if*/
675 variable2
= NIT_NULL
/*null*/;
678 variable3
= NEW_Match_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, TAG_Int(1)); /*new Match*/
679 variable2
= variable3
;
682 return_label32
: while(false);
683 tracehead
= trace
.prev
;
686 val_t
string_search___String___search_index_in(val_t self
, val_t param0
, val_t param1
) {
687 struct trace_t trace
= {NULL
, NULL
, 258, LOCATE_string_search___String___search_index_in
};
695 trace
.prev
= tracehead
; tracehead
= &trace
;
696 trace
.file
= LOCATE_string_search
;
699 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
700 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);}
701 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
702 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
703 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int(variable4
));
704 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1)));
705 variable2
= variable3
;
706 while (true) { /*while*/
707 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
708 if (!UNTAG_Bool(variable3
)) break; /* while*/
709 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
710 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1)));
711 variable3
= variable4
;
712 while (true) { /*while*/
713 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int( TAG_Int(0)));
714 variable5
= variable4
;
715 if (UNTAG_Bool(variable5
)) { /* and */
716 variable5
= ((string___String_____bra_t
)CALL( self
,COLOR_abstract_collection___Map_____bra
))( self
, variable3
/*i*/) /*String::[]*/;
717 variable6
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( variable1
/*from*/));
718 variable6
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable6
) /*String::[]*/;
719 variable5
= TAG_Bool((variable5
)==(variable6
));
721 variable4
= variable5
;
722 if (!UNTAG_Bool(variable4
)) break; /* while*/
723 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
724 continue_35
: while(0);
727 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( TAG_Int(0)));
728 if (UNTAG_Bool(variable4
)) { /*if*/
729 variable2
= variable1
/*from*/;
732 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
733 continue_34
: while(0);
736 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
737 variable2
= variable3
;
739 return_label33
: while(false);
740 tracehead
= trace
.prev
;
743 val_t
string_search___String___search_in(val_t self
, val_t param0
, val_t param1
) {
744 struct trace_t trace
= {NULL
, NULL
, 273, LOCATE_string_search___String___search_in
};
750 trace
.prev
= tracehead
; tracehead
= &trace
;
751 trace
.file
= LOCATE_string_search
;
754 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*/;
755 variable2
= variable3
;
756 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
757 if (UNTAG_Bool(variable3
)) { /*if*/
758 variable2
= NIT_NULL
/*null*/;
761 variable3
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
762 variable4
= NEW_Match_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, variable3
); /*new Match*/
763 variable3
= variable4
;
764 variable2
= variable3
;
767 return_label36
: while(false);
768 tracehead
= trace
.prev
;
771 val_t
string_search___String___search(val_t self
, val_t param0
) {
772 struct trace_t trace
= {NULL
, NULL
, 283, LOCATE_string_search___String___search
};
775 trace
.prev
= tracehead
; tracehead
= &trace
;
776 trace
.file
= LOCATE_string_search
;
778 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*/;
780 return_label37
: while(false);
781 tracehead
= trace
.prev
;
784 val_t
string_search___String___search_from(val_t self
, val_t param0
, val_t param1
) {
785 struct trace_t trace
= {NULL
, NULL
, 286, LOCATE_string_search___String___search_from
};
789 trace
.prev
= tracehead
; tracehead
= &trace
;
790 trace
.file
= LOCATE_string_search
;
793 variable2
= ((string_search___Pattern___search_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___search_in
))( variable0
/*p*/, self
, variable1
/*from*/) /*Pattern::search_in*/;
795 return_label38
: while(false);
796 tracehead
= trace
.prev
;
799 val_t
string_search___String___search_all(val_t self
, val_t param0
) {
800 struct trace_t trace
= {NULL
, NULL
, 291, LOCATE_string_search___String___search_all
};
803 trace
.prev
= tracehead
; tracehead
= &trace
;
804 trace
.file
= LOCATE_string_search
;
806 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*/;
808 return_label39
: while(false);
809 tracehead
= trace
.prev
;
812 val_t
string_search___String___split_with(val_t self
, val_t param0
) {
813 struct trace_t trace
= {NULL
, NULL
, 300, LOCATE_string_search___String___split_with
};
820 trace
.prev
= tracehead
; tracehead
= &trace
;
821 trace
.file
= LOCATE_string_search
;
823 variable2
= ((string_search___Pattern___split_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___split_in
))( variable0
/*p*/, self
) /*Pattern::split_in*/;
824 variable1
= variable2
;
825 variable3
= ((array___AbstractArray___length_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___length
))( variable1
/*matches*/) /*AbstractArray::length*/;
826 variable4
= NEW_Array_array___Array___with_capacity(variable3
); /*new Array[String]*/
827 variable3
= variable4
;
828 variable2
= variable3
;
829 variable3
= ((array___AbstractArray___iterator_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___iterator
))( variable1
/*matches*/) /*AbstractArray::iterator*/;
830 while (true) { /*for*/
831 variable4
= ((array___ArrayIterator___is_ok_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___is_ok
))(variable3
) /*ArrayIterator::is_ok*/;
832 if (!UNTAG_Bool(variable4
)) break; /*for*/
833 variable4
= ((array___ArrayIterator___item_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___item
))(variable3
) /*ArrayIterator::item*/;
834 variable5
= ((string_search___Match___to_s_t
)CALL( variable4
/*m*/,COLOR_string___Object___to_s
))( variable4
/*m*/) /*Match::to_s*/;
835 ((array___AbstractArray___add_t
)CALL( variable2
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable2
/*res*/, variable5
) /*AbstractArray::add*/;
836 continue_41
: while(0);
837 ((array___ArrayIterator___next_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___next
))(variable3
) /*ArrayIterator::next*/;
840 variable1
= variable2
/*res*/;
842 return_label40
: while(false);
843 tracehead
= trace
.prev
;
846 val_t
string_search___String___split(val_t self
) {
847 struct trace_t trace
= {NULL
, NULL
, 310, LOCATE_string_search___String___split
};
849 trace
.prev
= tracehead
; tracehead
= &trace
;
850 trace
.file
= LOCATE_string_search
;
851 variable0
= ((string_search___String___split_with_t
)CALL( self
,COLOR_string_search___String___split_with
))( self
, TAG_Char('\n')) /*String::split_with*/;
853 return_label42
: while(false);
854 tracehead
= trace
.prev
;