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___init(); /*new Array[E]*/
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___init(); /*new Array[E]*/
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_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_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 val_t
string_search___BM_Pattern___to_s(val_t self
) {
95 struct trace_t trace
= {NULL
, NULL
, 67, LOCATE_string_search___BM_Pattern___to_s
};
97 trace
.prev
= tracehead
; tracehead
= &trace
;
98 trace
.file
= LOCATE_string_search
;
99 variable0
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
101 return_label4
: while(false);
102 tracehead
= trace
.prev
;
105 val_t
string_search___BM_Pattern___search_index_in(val_t self
, val_t param0
, val_t param1
) {
106 struct trace_t trace
= {NULL
, NULL
, 69, LOCATE_string_search___BM_Pattern___search_index_in
};
118 trace
.prev
= tracehead
; tracehead
= &trace
;
119 trace
.file
= LOCATE_string_search
;
122 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
123 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);}
124 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
125 variable2
= variable3
;
126 variable4
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
127 variable3
= variable4
;
128 variable4
= variable1
/*from*/;
129 while (true) { /*while*/
130 variable5
= TAG_Int(UNTAG_Int( variable2
/*n*/)-UNTAG_Int( variable3
/*m*/));
131 variable5
= TAG_Int(UNTAG_Int(variable5
)+UNTAG_Int( TAG_Int(1)));
132 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
133 if (!UNTAG_Bool(variable5
)) break; /* while*/
134 variable6
= TAG_Int(UNTAG_Int( variable3
/*m*/)-UNTAG_Int( TAG_Int(1)));
135 variable5
= variable6
;
136 while (true) { /*while*/
137 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
138 variable7
= variable6
;
139 if (UNTAG_Bool(variable7
)) { /* and */
140 variable7
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
141 variable7
= ((string___String_____bra_t
)CALL(variable7
,COLOR_abstract_collection___Map_____bra
))(variable7
, variable5
/*i*/) /*String::[]*/;
142 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
143 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
144 variable7
= TAG_Bool((variable7
)==(variable8
));
146 variable6
= variable7
;
147 if (!UNTAG_Bool(variable6
)) break; /* while*/
148 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
149 continue_7
: while(0);
152 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( TAG_Int(0)));
153 if (UNTAG_Bool(variable6
)) { /*if*/
154 variable2
= variable4
/*j*/;
157 variable7
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
158 variable8
= variable5
/*i*/;
159 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
160 variable10
= variable9
;
161 if (UNTAG_Bool(variable10
)) { /* and */
162 variable10
= variable7
;
163 variable10
= ATTR_array___AbstractArray____length(variable10
) /*AbstractArray::_length*/;
164 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
166 variable9
= variable10
;
167 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);}
168 variable9
= variable7
;
169 variable9
= ATTR_array___Array____items(variable9
) /*Array::_items*/;
170 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
172 return_label8
: while(false);
173 variable7
= variable9
;
174 variable6
= variable7
;
175 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable4
/*j*/));
176 variable8
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable8
) /*String::[]*/;
177 variable8
= ((string_search___BM_Pattern___bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___bc
))( self
, variable8
) /*BM_Pattern::bc*/;
178 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*m*/));
179 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( TAG_Int(1)));
180 variable8
= TAG_Int(UNTAG_Int(variable8
)+UNTAG_Int( variable5
/*i*/));
181 variable7
= variable8
;
182 variable8
= TAG_Bool(UNTAG_Int( variable6
/*gs*/)>UNTAG_Int( variable7
/*bc*/));
183 if (UNTAG_Bool(variable8
)) { /*if*/
184 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable6
/*gs*/)) /*j*/;
186 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( variable7
/*bc*/)) /*j*/;
189 continue_6
: while(0);
192 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
193 variable2
= variable5
;
195 return_label5
: while(false);
196 tracehead
= trace
.prev
;
199 val_t
string_search___BM_Pattern___search_in(val_t self
, val_t param0
, val_t param1
) {
200 struct trace_t trace
= {NULL
, NULL
, 96, LOCATE_string_search___BM_Pattern___search_in
};
206 trace
.prev
= tracehead
; tracehead
= &trace
;
207 trace
.file
= LOCATE_string_search
;
210 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*/;
211 variable2
= variable3
;
212 variable3
= TAG_Bool(UNTAG_Int( variable2
/*to*/)<UNTAG_Int( TAG_Int(0)));
213 if (UNTAG_Bool(variable3
)) { /*if*/
214 variable2
= NIT_NULL
/*null*/;
217 variable3
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
218 variable4
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*to*/, variable3
); /*new Match*/
219 variable3
= variable4
;
220 variable2
= variable3
;
223 return_label9
: while(false);
224 tracehead
= trace
.prev
;
227 void string_search___BM_Pattern___init(val_t self
, val_t param0
, int* init_table
) {
228 struct trace_t trace
= {NULL
, NULL
, 107, LOCATE_string_search___BM_Pattern___init
};
232 trace
.prev
= tracehead
; tracehead
= &trace
;
233 trace
.file
= LOCATE_string_search
;
235 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
]) return;
236 ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/ = variable0
/*motif*/;
237 variable1
= ((array___AbstractArray___length_t
)CALL( variable0
/*motif*/,COLOR_abstract_collection___Collection___length
))( variable0
/*motif*/) /*AbstractArray::length*/;
238 ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/ = variable1
;
239 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
240 variable2
= NEW_array___Array___with_capacity(variable1
); /*new Array[E]*/
241 variable1
= variable2
;
242 ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/ = variable1
;
243 variable1
= NEW_array___ArrayMap___init(); /*new ArrayMap[K, E]*/
244 ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/ = variable1
;
245 ((string_search___BM_Pattern___compute_gs_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_gs
))( self
) /*BM_Pattern::compute_gs*/;
246 ((string_search___BM_Pattern___compute_bc_t
)CALL( self
,COLOR_string_search___BM_Pattern___compute_bc
))( self
) /*BM_Pattern::compute_bc*/;
247 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_BM_Pattern
].i
] = 1;
248 tracehead
= trace
.prev
;
251 val_t
string_search___BM_Pattern___bc(val_t self
, val_t param0
) {
252 struct trace_t trace
= {NULL
, NULL
, 124, LOCATE_string_search___BM_Pattern___bc
};
255 trace
.prev
= tracehead
; tracehead
= &trace
;
256 trace
.file
= LOCATE_string_search
;
258 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
259 variable1
= ((abstract_collection___Map___has_key_t
)CALL(variable1
,COLOR_abstract_collection___Map___has_key
))(variable1
, variable0
/*e*/) /*Map::has_key*/;
260 if (UNTAG_Bool(variable1
)) { /*if*/
261 variable1
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
262 variable1
= ((abstract_collection___Map_____bra_t
)CALL(variable1
,COLOR_abstract_collection___Map_____bra
))(variable1
, variable0
/*e*/) /*Map::[]*/;
265 variable1
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
268 return_label11
: while(false);
269 tracehead
= trace
.prev
;
272 void string_search___BM_Pattern___compute_bc(val_t self
) {
273 struct trace_t trace
= {NULL
, NULL
, 139, LOCATE_string_search___BM_Pattern___compute_bc
};
280 trace
.prev
= tracehead
; tracehead
= &trace
;
281 trace
.file
= LOCATE_string_search
;
282 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
283 variable0
= variable1
;
284 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
285 variable1
= variable2
;
286 variable2
= TAG_Int(0);
287 while (true) { /*while*/
288 variable3
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
289 variable3
= TAG_Bool(UNTAG_Int( variable2
/*i*/)<UNTAG_Int(variable3
));
290 if (!UNTAG_Bool(variable3
)) break; /* while*/
291 variable3
= ATTR_string_search___BM_Pattern____bc_table( self
) /*BM_Pattern::_bc_table*/;
292 variable4
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable2
/*i*/) /*String::[]*/;
293 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( variable2
/*i*/));
294 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1)));
295 ((abstract_collection___Map_____braeq_t
)CALL(variable3
,COLOR_abstract_collection___Map_____braeq
))(variable3
, variable4
, variable5
) /*Map::[]=*/;
296 variable2
= TAG_Int(UNTAG_Int(variable2
)+UNTAG_Int( TAG_Int(1))) /*i*/;
297 continue_13
: while(0);
300 tracehead
= trace
.prev
;
303 val_t
string_search___BM_Pattern___suffixes(val_t self
) {
304 struct trace_t trace
= {NULL
, NULL
, 150, LOCATE_string_search___BM_Pattern___suffixes
};
316 trace
.prev
= tracehead
; tracehead
= &trace
;
317 trace
.file
= LOCATE_string_search
;
318 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
319 variable0
= variable1
;
320 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
321 variable1
= variable2
;
322 variable3
= NEW_array___Array___filled_with( variable1
/*m*/, variable1
/*m*/); /*new Array[E]*/
323 variable2
= variable3
;
324 variable3
= TAG_Int(0);
325 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
326 variable4
= variable5
;
327 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(2)));
328 variable5
= variable6
;
329 while (true) { /*while*/
330 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>=UNTAG_Int( TAG_Int(0)));
331 if (!UNTAG_Bool(variable6
)) break; /* while*/
332 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)>UNTAG_Int( variable4
/*g*/));
333 variable7
= variable6
;
334 if (UNTAG_Bool(variable7
)) { /* and */
335 variable7
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
336 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( TAG_Int(1)));
337 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*f*/));
338 variable8
= variable7
;
339 variable9
= TAG_Bool(UNTAG_Int( variable8
/*index*/)>=UNTAG_Int( TAG_Int(0)));
340 variable10
= variable9
;
341 if (UNTAG_Bool(variable10
)) { /* and */
342 variable10
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
343 variable10
= TAG_Bool(UNTAG_Int( variable8
/*index*/)<UNTAG_Int(variable10
));
345 variable9
= variable10
;
346 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);}
347 variable9
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
348 variable9
= UNBOX_NativeArray(variable9
)[UNTAG_Int( variable8
/*index*/)];
350 return_label16
: while(false);
351 variable7
= variable9
;
352 variable8
= TAG_Int(UNTAG_Int( variable5
/*i*/)-UNTAG_Int( variable4
/*g*/));
353 variable7
= TAG_Bool(UNTAG_Int(variable7
)<UNTAG_Int(variable8
));
355 variable6
= variable7
;
356 if (UNTAG_Bool(variable6
)) { /*if*/
357 variable6
= TAG_Int(UNTAG_Int( variable5
/*i*/)+UNTAG_Int( variable1
/*m*/));
358 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( TAG_Int(1)));
359 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*f*/));
360 variable7
= variable6
;
361 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
362 variable9
= variable8
;
363 if (UNTAG_Bool(variable9
)) { /* and */
364 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
365 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
367 variable8
= variable9
;
368 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);}
369 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
370 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
372 return_label17
: while(false);
373 variable6
= variable8
;
374 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
376 variable6
= TAG_Bool(UNTAG_Int( variable5
/*i*/)<UNTAG_Int( variable4
/*g*/));
377 if (UNTAG_Bool(variable6
)) { /*if*/
378 variable4
= variable5
/*i*/ /*g=*/;
380 variable3
= variable5
/*i*/ /*f=*/;
381 while (true) { /*while*/
382 variable6
= TAG_Bool(UNTAG_Int( variable4
/*g*/)>=UNTAG_Int( TAG_Int(0)));
383 variable7
= variable6
;
384 if (UNTAG_Bool(variable7
)) { /* and */
385 variable7
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable4
/*g*/) /*String::[]*/;
386 variable8
= TAG_Int(UNTAG_Int( variable4
/*g*/)+UNTAG_Int( variable1
/*m*/));
387 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( TAG_Int(1)));
388 variable8
= TAG_Int(UNTAG_Int(variable8
)-UNTAG_Int( variable3
/*f*/));
389 variable8
= ((string___String_____bra_t
)CALL( variable0
/*x*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*x*/, variable8
) /*String::[]*/;
390 variable7
= TAG_Bool((variable7
)==(variable8
));
392 variable6
= variable7
;
393 if (!UNTAG_Bool(variable6
)) break; /* while*/
394 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1))) /*g*/;
395 continue_18
: while(0);
398 variable6
= TAG_Int(UNTAG_Int( variable3
/*f*/)-UNTAG_Int( variable4
/*g*/));
399 ((array___Array_____braeq_t
)CALL( variable2
/*suff*/,COLOR_abstract_collection___Map_____braeq
))( variable2
/*suff*/, variable5
/*i*/, variable6
) /*Array::[]=*/;
401 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( TAG_Int(1))) /*i*/;
402 continue_15
: while(0);
405 variable0
= variable2
/*suff*/;
407 return_label14
: while(false);
408 tracehead
= trace
.prev
;
411 void string_search___BM_Pattern___compute_gs(val_t self
) {
412 struct trace_t trace
= {NULL
, NULL
, 173, LOCATE_string_search___BM_Pattern___compute_gs
};
423 trace
.prev
= tracehead
; tracehead
= &trace
;
424 trace
.file
= LOCATE_string_search
;
425 variable1
= ATTR_string_search___BM_Pattern____motif( self
) /*BM_Pattern::_motif*/;
426 variable0
= variable1
;
427 variable2
= ATTR_string_search___BM_Pattern____length( self
) /*BM_Pattern::_length*/;
428 variable1
= variable2
;
429 variable3
= ((string_search___BM_Pattern___suffixes_t
)CALL( self
,COLOR_string_search___BM_Pattern___suffixes
))( self
) /*BM_Pattern::suffixes*/;
430 variable2
= variable3
;
431 variable3
= TAG_Int(0);
432 while (true) { /*while*/
433 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( variable1
/*m*/));
434 if (!UNTAG_Bool(variable4
)) break; /* while*/
435 variable4
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
436 ((array___Array_____braeq_t
)CALL(variable4
,COLOR_abstract_collection___Map_____braeq
))(variable4
, variable3
/*i*/, variable1
/*m*/) /*Array::[]=*/;
437 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
438 continue_20
: while(0);
441 variable4
= TAG_Int(0);
442 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
443 variable3
= variable5
/*i=*/;
444 while (true) { /*while*/
445 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
446 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int(variable5
));
447 if (!UNTAG_Bool(variable5
)) break; /* while*/
448 variable5
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
449 variable5
= TAG_Bool(( variable3
/*i*/)==(variable5
));
450 variable6
= variable5
;
451 if (!UNTAG_Bool(variable6
)) { /* or */
452 variable6
= variable3
/*i*/;
453 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
454 variable8
= variable7
;
455 if (UNTAG_Bool(variable8
)) { /* and */
456 variable8
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
457 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
459 variable7
= variable8
;
460 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);}
461 variable7
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
462 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
464 return_label22
: while(false);
465 variable6
= variable7
;
466 variable7
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( TAG_Int(1)));
467 variable6
= TAG_Bool((variable6
)==(variable7
));
469 variable5
= variable6
;
470 if (UNTAG_Bool(variable5
)) { /*if*/
471 while (true) { /*while*/
472 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
473 variable5
= TAG_Int(UNTAG_Int(variable5
)-UNTAG_Int( variable3
/*i*/));
474 variable5
= TAG_Bool(UNTAG_Int( variable4
/*j*/)<UNTAG_Int(variable5
));
475 if (!UNTAG_Bool(variable5
)) break; /* while*/
476 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
477 variable6
= variable4
/*j*/;
478 variable7
= TAG_Bool(UNTAG_Int( variable6
/*index*/)>=UNTAG_Int( TAG_Int(0)));
479 variable8
= variable7
;
480 if (UNTAG_Bool(variable8
)) { /* and */
481 variable8
= variable5
;
482 variable8
= ATTR_array___AbstractArray____length(variable8
) /*AbstractArray::_length*/;
483 variable8
= TAG_Bool(UNTAG_Int( variable6
/*index*/)<UNTAG_Int(variable8
));
485 variable7
= variable8
;
486 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);}
487 variable7
= variable5
;
488 variable7
= ATTR_array___Array____items(variable7
) /*Array::_items*/;
489 variable7
= UNBOX_NativeArray(variable7
)[UNTAG_Int( variable6
/*index*/)];
491 return_label24
: while(false);
492 variable5
= variable7
;
493 variable5
= TAG_Bool((variable5
)==( variable1
/*m*/));
494 if (UNTAG_Bool(variable5
)) { /*if*/
495 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
496 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
497 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int( variable3
/*i*/));
498 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable4
/*j*/, variable6
) /*Array::[]=*/;
500 variable4
= TAG_Int(UNTAG_Int(variable4
)+UNTAG_Int( TAG_Int(1))) /*j*/;
501 continue_23
: while(0);
505 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
506 continue_21
: while(0);
509 variable3
= TAG_Int(0) /*i=*/;
510 while (true) { /*while*/
511 variable5
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
512 variable5
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int(variable5
));
513 if (!UNTAG_Bool(variable5
)) break; /* while*/
514 variable5
= ATTR_string_search___BM_Pattern____gs( self
) /*BM_Pattern::_gs*/;
515 variable6
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
516 variable7
= variable3
/*i*/;
517 variable8
= TAG_Bool(UNTAG_Int( variable7
/*index*/)>=UNTAG_Int( TAG_Int(0)));
518 variable9
= variable8
;
519 if (UNTAG_Bool(variable9
)) { /* and */
520 variable9
= ATTR_array___AbstractArray____length( variable2
/*suff*/) /*AbstractArray::_length*/;
521 variable9
= TAG_Bool(UNTAG_Int( variable7
/*index*/)<UNTAG_Int(variable9
));
523 variable8
= variable9
;
524 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);}
525 variable8
= ATTR_array___Array____items( variable2
/*suff*/) /*Array::_items*/;
526 variable8
= UNBOX_NativeArray(variable8
)[UNTAG_Int( variable7
/*index*/)];
528 return_label26
: while(false);
529 variable7
= variable8
;
530 variable6
= TAG_Int(UNTAG_Int(variable6
)-UNTAG_Int(variable7
));
531 variable7
= TAG_Int(UNTAG_Int( variable1
/*m*/)-UNTAG_Int( TAG_Int(1)));
532 variable7
= TAG_Int(UNTAG_Int(variable7
)-UNTAG_Int( variable3
/*i*/));
533 ((array___Array_____braeq_t
)CALL(variable5
,COLOR_abstract_collection___Map_____braeq
))(variable5
, variable6
, variable7
) /*Array::[]=*/;
534 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1))) /*i*/;
535 continue_25
: while(0);
538 tracehead
= trace
.prev
;
541 val_t
string_search___Match___string(val_t self
) {
542 struct trace_t trace
= {NULL
, NULL
, 204, LOCATE_string_search___Match___string
};
543 trace
.prev
= tracehead
; tracehead
= &trace
;
544 trace
.file
= LOCATE_string_search
;
545 tracehead
= trace
.prev
;
546 return ATTR_string_search___Match____string( self
) /*Match::_string*/;
548 val_t
string_search___Match___from(val_t self
) {
549 struct trace_t trace
= {NULL
, NULL
, 207, LOCATE_string_search___Match___from
};
550 trace
.prev
= tracehead
; tracehead
= &trace
;
551 trace
.file
= LOCATE_string_search
;
552 tracehead
= trace
.prev
;
553 return ATTR_string_search___Match____from( self
) /*Match::_from*/;
555 val_t
string_search___Match___length(val_t self
) {
556 struct trace_t trace
= {NULL
, NULL
, 210, LOCATE_string_search___Match___length
};
557 trace
.prev
= tracehead
; tracehead
= &trace
;
558 trace
.file
= LOCATE_string_search
;
559 tracehead
= trace
.prev
;
560 return ATTR_string_search___Match____length( self
) /*Match::_length*/;
562 val_t
string_search___Match___after(val_t self
) {
563 struct trace_t trace
= {NULL
, NULL
, 213, LOCATE_string_search___Match___after
};
566 trace
.prev
= tracehead
; tracehead
= &trace
;
567 trace
.file
= LOCATE_string_search
;
568 variable0
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
569 variable1
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
570 variable0
= TAG_Int(UNTAG_Int(variable0
)+UNTAG_Int(variable1
));
572 return_label27
: while(false);
573 tracehead
= trace
.prev
;
576 val_t
string_search___Match___to_s(val_t self
) {
577 struct trace_t trace
= {NULL
, NULL
, 217, LOCATE_string_search___Match___to_s
};
581 trace
.prev
= tracehead
; tracehead
= &trace
;
582 trace
.file
= LOCATE_string_search
;
583 variable0
= ATTR_string_search___Match____string( self
) /*Match::_string*/;
584 variable1
= ATTR_string_search___Match____from( self
) /*Match::_from*/;
585 variable2
= ATTR_string_search___Match____length( self
) /*Match::_length*/;
586 variable0
= ((string___String___substring_t
)CALL(variable0
,COLOR_string___String___substring
))(variable0
, variable1
, variable2
) /*String::substring*/;
588 return_label28
: while(false);
589 tracehead
= trace
.prev
;
592 void string_search___Match___init(val_t self
, val_t param0
, val_t param1
, val_t param2
, int* init_table
) {
593 struct trace_t trace
= {NULL
, NULL
, 220, LOCATE_string_search___Match___init
};
599 trace
.prev
= tracehead
; tracehead
= &trace
;
600 trace
.file
= LOCATE_string_search
;
604 if (init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
]) return;
605 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::==*/)))))));
606 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);}
607 variable3
= TAG_Bool(UNTAG_Int( variable2
/*len*/)>=UNTAG_Int( TAG_Int(0)));
608 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);}
609 variable3
= TAG_Bool(UNTAG_Int( variable1
/*f*/)>=UNTAG_Int( TAG_Int(0)));
610 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);}
611 variable3
= TAG_Int(UNTAG_Int( variable1
/*f*/)+UNTAG_Int( variable2
/*len*/));
612 variable4
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
613 variable3
= TAG_Bool(UNTAG_Int(variable3
)<=UNTAG_Int(variable4
));
614 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);}
615 ATTR_string_search___Match____string( self
) /*Match::_string*/ = variable0
/*s*/;
616 ATTR_string_search___Match____from( self
) /*Match::_from*/ = variable1
/*f*/;
617 ATTR_string_search___Match____length( self
) /*Match::_length*/ = variable2
/*len*/;
618 init_table
[VAL2OBJ( self
)->vft
[INIT_TABLE_POS_Match
].i
] = 1;
619 tracehead
= trace
.prev
;
622 val_t
string_search___Char___search_index_in(val_t self
, val_t param0
, val_t param1
) {
623 struct trace_t trace
= {NULL
, NULL
, 235, LOCATE_string_search___Char___search_index_in
};
628 trace
.prev
= tracehead
; tracehead
= &trace
;
629 trace
.file
= LOCATE_string_search
;
632 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
633 variable2
= variable3
;
634 while (true) { /*while*/
635 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
636 if (!UNTAG_Bool(variable3
)) break; /* while*/
637 variable3
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable1
/*from*/) /*String::[]*/;
638 variable3
= TAG_Bool((variable3
)==( self
));
639 if (UNTAG_Bool(variable3
)) { /*if*/
640 variable2
= variable1
/*from*/;
643 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
644 continue_31
: while(0);
647 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
648 variable2
= variable3
;
650 return_label30
: while(false);
651 tracehead
= trace
.prev
;
654 val_t
string_search___Char___search_in(val_t self
, val_t param0
, val_t param1
) {
655 struct trace_t trace
= {NULL
, NULL
, 245, LOCATE_string_search___Char___search_in
};
660 trace
.prev
= tracehead
; tracehead
= &trace
;
661 trace
.file
= LOCATE_string_search
;
664 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*/;
665 variable2
= variable3
;
666 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
667 if (UNTAG_Bool(variable3
)) { /*if*/
668 variable2
= NIT_NULL
/*null*/;
671 variable3
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, TAG_Int(1)); /*new Match*/
672 variable2
= variable3
;
675 return_label32
: while(false);
676 tracehead
= trace
.prev
;
679 val_t
string_search___String___search_index_in(val_t self
, val_t param0
, val_t param1
) {
680 struct trace_t trace
= {NULL
, NULL
, 258, LOCATE_string_search___String___search_index_in
};
688 trace
.prev
= tracehead
; tracehead
= &trace
;
689 trace
.file
= LOCATE_string_search
;
692 variable2
= TAG_Bool(UNTAG_Int( variable1
/*from*/)>=UNTAG_Int( TAG_Int(0)));
693 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);}
694 variable3
= ((array___AbstractArray___length_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Collection___length
))( variable0
/*s*/) /*AbstractArray::length*/;
695 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
696 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int(variable4
));
697 variable3
= TAG_Int(UNTAG_Int(variable3
)+UNTAG_Int( TAG_Int(1)));
698 variable2
= variable3
;
699 while (true) { /*while*/
700 variable3
= TAG_Bool(UNTAG_Int( variable1
/*from*/)<UNTAG_Int( variable2
/*stop*/));
701 if (!UNTAG_Bool(variable3
)) break; /* while*/
702 variable4
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
703 variable4
= TAG_Int(UNTAG_Int(variable4
)-UNTAG_Int( TAG_Int(1)));
704 variable3
= variable4
;
705 while (true) { /*while*/
706 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)>=UNTAG_Int( TAG_Int(0)));
707 variable5
= variable4
;
708 if (UNTAG_Bool(variable5
)) { /* and */
709 variable5
= ((string___String_____bra_t
)CALL( self
,COLOR_abstract_collection___Map_____bra
))( self
, variable3
/*i*/) /*String::[]*/;
710 variable6
= TAG_Int(UNTAG_Int( variable3
/*i*/)+UNTAG_Int( variable1
/*from*/));
711 variable6
= ((string___String_____bra_t
)CALL( variable0
/*s*/,COLOR_abstract_collection___Map_____bra
))( variable0
/*s*/, variable6
) /*String::[]*/;
712 variable5
= TAG_Bool((variable5
)==(variable6
));
714 variable4
= variable5
;
715 if (!UNTAG_Bool(variable4
)) break; /* while*/
716 variable3
= TAG_Int(UNTAG_Int(variable3
)-UNTAG_Int( TAG_Int(1))) /*i*/;
717 continue_35
: while(0);
720 variable4
= TAG_Bool(UNTAG_Int( variable3
/*i*/)<UNTAG_Int( TAG_Int(0)));
721 if (UNTAG_Bool(variable4
)) { /*if*/
722 variable2
= variable1
/*from*/;
725 variable1
= TAG_Int(UNTAG_Int(variable1
)+UNTAG_Int( TAG_Int(1))) /*from*/;
726 continue_34
: while(0);
729 variable3
= TAG_Int(-UNTAG_Int( TAG_Int(1)));
730 variable2
= variable3
;
732 return_label33
: while(false);
733 tracehead
= trace
.prev
;
736 val_t
string_search___String___search_in(val_t self
, val_t param0
, val_t param1
) {
737 struct trace_t trace
= {NULL
, NULL
, 273, LOCATE_string_search___String___search_in
};
743 trace
.prev
= tracehead
; tracehead
= &trace
;
744 trace
.file
= LOCATE_string_search
;
747 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*/;
748 variable2
= variable3
;
749 variable3
= TAG_Bool(UNTAG_Int( variable2
/*pos*/)<UNTAG_Int( TAG_Int(0)));
750 if (UNTAG_Bool(variable3
)) { /*if*/
751 variable2
= NIT_NULL
/*null*/;
754 variable3
= ((array___AbstractArray___length_t
)CALL( self
,COLOR_abstract_collection___Collection___length
))( self
) /*AbstractArray::length*/;
755 variable4
= NEW_string_search___Match___init( variable0
/*s*/, variable2
/*pos*/, variable3
); /*new Match*/
756 variable3
= variable4
;
757 variable2
= variable3
;
760 return_label36
: while(false);
761 tracehead
= trace
.prev
;
764 val_t
string_search___String___search(val_t self
, val_t param0
) {
765 struct trace_t trace
= {NULL
, NULL
, 283, LOCATE_string_search___String___search
};
768 trace
.prev
= tracehead
; tracehead
= &trace
;
769 trace
.file
= LOCATE_string_search
;
771 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*/;
773 return_label37
: while(false);
774 tracehead
= trace
.prev
;
777 val_t
string_search___String___search_from(val_t self
, val_t param0
, val_t param1
) {
778 struct trace_t trace
= {NULL
, NULL
, 286, LOCATE_string_search___String___search_from
};
782 trace
.prev
= tracehead
; tracehead
= &trace
;
783 trace
.file
= LOCATE_string_search
;
786 variable2
= ((string_search___Pattern___search_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___search_in
))( variable0
/*p*/, self
, variable1
/*from*/) /*Pattern::search_in*/;
788 return_label38
: while(false);
789 tracehead
= trace
.prev
;
792 val_t
string_search___String___search_all(val_t self
, val_t param0
) {
793 struct trace_t trace
= {NULL
, NULL
, 291, LOCATE_string_search___String___search_all
};
796 trace
.prev
= tracehead
; tracehead
= &trace
;
797 trace
.file
= LOCATE_string_search
;
799 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*/;
801 return_label39
: while(false);
802 tracehead
= trace
.prev
;
805 val_t
string_search___String___split_with(val_t self
, val_t param0
) {
806 struct trace_t trace
= {NULL
, NULL
, 300, LOCATE_string_search___String___split_with
};
813 trace
.prev
= tracehead
; tracehead
= &trace
;
814 trace
.file
= LOCATE_string_search
;
816 variable2
= ((string_search___Pattern___split_in_t
)CALL( variable0
/*p*/,COLOR_string_search___Pattern___split_in
))( variable0
/*p*/, self
) /*Pattern::split_in*/;
817 variable1
= variable2
;
818 variable3
= ((array___AbstractArray___length_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___length
))( variable1
/*matches*/) /*AbstractArray::length*/;
819 variable4
= NEW_array___Array___with_capacity(variable3
); /*new Array[E]*/
820 variable3
= variable4
;
821 variable2
= variable3
;
822 variable3
= ((array___AbstractArray___iterator_t
)CALL( variable1
/*matches*/,COLOR_abstract_collection___Collection___iterator
))( variable1
/*matches*/) /*AbstractArray::iterator*/;
823 while (true) { /*for*/
824 variable4
= ((array___ArrayIterator___is_ok_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___is_ok
))(variable3
) /*ArrayIterator::is_ok*/;
825 if (!UNTAG_Bool(variable4
)) break; /*for*/
826 variable4
= ((array___ArrayIterator___item_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___item
))(variable3
) /*ArrayIterator::item*/;
827 variable5
= ((string_search___Match___to_s_t
)CALL( variable4
/*m*/,COLOR_string___Object___to_s
))( variable4
/*m*/) /*Match::to_s*/;
828 ((array___AbstractArray___add_t
)CALL( variable2
/*res*/,COLOR_abstract_collection___SimpleCollection___add
))( variable2
/*res*/, variable5
) /*AbstractArray::add*/;
829 continue_41
: while(0);
830 ((array___ArrayIterator___next_t
)CALL(variable3
,COLOR_abstract_collection___Iterator___next
))(variable3
) /*ArrayIterator::next*/;
833 variable1
= variable2
/*res*/;
835 return_label40
: while(false);
836 tracehead
= trace
.prev
;
839 val_t
string_search___String___split(val_t self
) {
840 struct trace_t trace
= {NULL
, NULL
, 310, LOCATE_string_search___String___split
};
842 trace
.prev
= tracehead
; tracehead
= &trace
;
843 trace
.file
= LOCATE_string_search
;
844 variable0
= ((string_search___String___split_with_t
)CALL( self
,COLOR_string_search___String___split_with
))( self
, TAG_Char('\n')) /*String::split_with*/;
846 return_label42
: while(false);
847 tracehead
= trace
.prev
;