Update c_src. Enable one gcc pass bootstrap.
[nit.git] / c_src / string_search._sep.c
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);
9 nit_exit(1);
10 tracehead = trace.prev;
11 return NIT_NULL;
12 }
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);
19 nit_exit(1);
20 tracehead = trace.prev;
21 return NIT_NULL;
22 }
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};
25 val_t variable0;
26 val_t variable1;
27 val_t variable2;
28 val_t variable3;
29 trace.prev = tracehead; tracehead = &trace;
30 trace.file = LOCATE_string_search;
31 variable0 = param0;
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=*/;
43 continue_1: while(0);
44 }
45 break_1: while(0);
46 variable1 = variable1 /*res*/;
47 goto return_label0;
48 return_label0: while(false);
49 tracehead = trace.prev;
50 return variable1;
51 }
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};
54 val_t variable0;
55 val_t variable1;
56 val_t variable2;
57 val_t variable3;
58 val_t variable4;
59 val_t variable5;
60 trace.prev = tracehead; tracehead = &trace;
61 trace.file = LOCATE_string_search;
62 variable0 = param0;
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=*/;
80 continue_3: while(0);
81 }
82 break_3: while(0);
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*/;
89 goto return_label2;
90 return_label2: while(false);
91 tracehead = trace.prev;
92 return variable1;
93 }
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};
96 val_t variable0;
97 trace.prev = tracehead; tracehead = &trace;
98 trace.file = LOCATE_string_search;
99 variable0 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
100 goto return_label4;
101 return_label4: while(false);
102 tracehead = trace.prev;
103 return variable0;
104 }
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};
107 val_t variable0;
108 val_t variable1;
109 val_t variable2;
110 val_t variable3;
111 val_t variable4;
112 val_t variable5;
113 val_t variable6;
114 val_t variable7;
115 val_t variable8;
116 val_t variable9;
117 val_t variable10;
118 trace.prev = tracehead; tracehead = &trace;
119 trace.file = LOCATE_string_search;
120 variable0 = param0;
121 variable1 = param1;
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));
145 }
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);
150 }
151 break_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*/;
155 goto return_label5;
156 } else { /*if*/
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));
165 }
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*/)];
171 goto return_label8;
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*/;
185 } else { /*if*/
186 variable4 = TAG_Int(UNTAG_Int(variable4)+UNTAG_Int( variable7 /*bc*/)) /*j*/;
187 }
188 }
189 continue_6: while(0);
190 }
191 break_6: while(0);
192 variable5 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
193 variable2 = variable5;
194 goto return_label5;
195 return_label5: while(false);
196 tracehead = trace.prev;
197 return variable2;
198 }
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};
201 val_t variable0;
202 val_t variable1;
203 val_t variable2;
204 val_t variable3;
205 val_t variable4;
206 trace.prev = tracehead; tracehead = &trace;
207 trace.file = LOCATE_string_search;
208 variable0 = param0;
209 variable1 = param1;
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*/;
215 goto return_label9;
216 } else { /*if*/
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;
221 goto return_label9;
222 }
223 return_label9: while(false);
224 tracehead = trace.prev;
225 return variable2;
226 }
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};
229 val_t variable0;
230 val_t variable1;
231 val_t variable2;
232 trace.prev = tracehead; tracehead = &trace;
233 trace.file = LOCATE_string_search;
234 variable0 = param0;
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;
249 return;
250 }
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};
253 val_t variable0;
254 val_t variable1;
255 trace.prev = tracehead; tracehead = &trace;
256 trace.file = LOCATE_string_search;
257 variable0 = param0;
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::[]*/;
263 goto return_label11;
264 } else { /*if*/
265 variable1 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
266 goto return_label11;
267 }
268 return_label11: while(false);
269 tracehead = trace.prev;
270 return variable1;
271 }
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};
274 val_t variable0;
275 val_t variable1;
276 val_t variable2;
277 val_t variable3;
278 val_t variable4;
279 val_t variable5;
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);
298 }
299 break_13: while(0);
300 tracehead = trace.prev;
301 return;
302 }
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};
305 val_t variable0;
306 val_t variable1;
307 val_t variable2;
308 val_t variable3;
309 val_t variable4;
310 val_t variable5;
311 val_t variable6;
312 val_t variable7;
313 val_t variable8;
314 val_t variable9;
315 val_t variable10;
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));
344 }
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*/)];
349 goto return_label16;
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));
354 }
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));
366 }
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*/)];
371 goto return_label17;
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::[]=*/;
375 } else { /*if*/
376 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)<UNTAG_Int( variable4 /*g*/));
377 if (UNTAG_Bool(variable6)) { /*if*/
378 variable4 = variable5 /*i*/ /*g=*/;
379 }
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));
391 }
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);
396 }
397 break_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::[]=*/;
400 }
401 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1))) /*i*/;
402 continue_15: while(0);
403 }
404 break_15: while(0);
405 variable0 = variable2 /*suff*/;
406 goto return_label14;
407 return_label14: while(false);
408 tracehead = trace.prev;
409 return variable0;
410 }
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};
413 val_t variable0;
414 val_t variable1;
415 val_t variable2;
416 val_t variable3;
417 val_t variable4;
418 val_t variable5;
419 val_t variable6;
420 val_t variable7;
421 val_t variable8;
422 val_t variable9;
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);
439 }
440 break_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));
458 }
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*/)];
463 goto return_label22;
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));
468 }
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));
484 }
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*/)];
490 goto return_label24;
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::[]=*/;
499 }
500 variable4 = TAG_Int(UNTAG_Int(variable4)+UNTAG_Int( TAG_Int(1))) /*j*/;
501 continue_23: while(0);
502 }
503 break_23: while(0);
504 }
505 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int( TAG_Int(1))) /*i*/;
506 continue_21: while(0);
507 }
508 break_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));
522 }
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*/)];
527 goto return_label26;
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);
536 }
537 break_25: while(0);
538 tracehead = trace.prev;
539 return;
540 }
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*/;
547 }
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*/;
554 }
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*/;
561 }
562 val_t string_search___Match___after(val_t self) {
563 struct trace_t trace = {NULL, NULL, 213, LOCATE_string_search___Match___after};
564 val_t variable0;
565 val_t variable1;
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));
571 goto return_label27;
572 return_label27: while(false);
573 tracehead = trace.prev;
574 return variable0;
575 }
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};
578 val_t variable0;
579 val_t variable1;
580 val_t variable2;
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*/;
587 goto return_label28;
588 return_label28: while(false);
589 tracehead = trace.prev;
590 return variable0;
591 }
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};
594 val_t variable0;
595 val_t variable1;
596 val_t variable2;
597 val_t variable3;
598 val_t variable4;
599 trace.prev = tracehead; tracehead = &trace;
600 trace.file = LOCATE_string_search;
601 variable0 = param0;
602 variable1 = param1;
603 variable2 = param2;
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;
620 return;
621 }
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};
624 val_t variable0;
625 val_t variable1;
626 val_t variable2;
627 val_t variable3;
628 trace.prev = tracehead; tracehead = &trace;
629 trace.file = LOCATE_string_search;
630 variable0 = param0;
631 variable1 = param1;
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*/;
641 goto return_label30;
642 }
643 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*from*/;
644 continue_31: while(0);
645 }
646 break_31: while(0);
647 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
648 variable2 = variable3;
649 goto return_label30;
650 return_label30: while(false);
651 tracehead = trace.prev;
652 return variable2;
653 }
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};
656 val_t variable0;
657 val_t variable1;
658 val_t variable2;
659 val_t variable3;
660 trace.prev = tracehead; tracehead = &trace;
661 trace.file = LOCATE_string_search;
662 variable0 = param0;
663 variable1 = param1;
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*/;
669 goto return_label32;
670 } else { /*if*/
671 variable3 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*pos*/, TAG_Int(1)); /*new Match*/
672 variable2 = variable3;
673 goto return_label32;
674 }
675 return_label32: while(false);
676 tracehead = trace.prev;
677 return variable2;
678 }
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};
681 val_t variable0;
682 val_t variable1;
683 val_t variable2;
684 val_t variable3;
685 val_t variable4;
686 val_t variable5;
687 val_t variable6;
688 trace.prev = tracehead; tracehead = &trace;
689 trace.file = LOCATE_string_search;
690 variable0 = param0;
691 variable1 = param1;
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));
713 }
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);
718 }
719 break_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*/;
723 goto return_label33;
724 }
725 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*from*/;
726 continue_34: while(0);
727 }
728 break_34: while(0);
729 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
730 variable2 = variable3;
731 goto return_label33;
732 return_label33: while(false);
733 tracehead = trace.prev;
734 return variable2;
735 }
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};
738 val_t variable0;
739 val_t variable1;
740 val_t variable2;
741 val_t variable3;
742 val_t variable4;
743 trace.prev = tracehead; tracehead = &trace;
744 trace.file = LOCATE_string_search;
745 variable0 = param0;
746 variable1 = param1;
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*/;
752 goto return_label36;
753 } else { /*if*/
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;
758 goto return_label36;
759 }
760 return_label36: while(false);
761 tracehead = trace.prev;
762 return variable2;
763 }
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};
766 val_t variable0;
767 val_t variable1;
768 trace.prev = tracehead; tracehead = &trace;
769 trace.file = LOCATE_string_search;
770 variable0 = param0;
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*/;
772 goto return_label37;
773 return_label37: while(false);
774 tracehead = trace.prev;
775 return variable1;
776 }
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};
779 val_t variable0;
780 val_t variable1;
781 val_t variable2;
782 trace.prev = tracehead; tracehead = &trace;
783 trace.file = LOCATE_string_search;
784 variable0 = param0;
785 variable1 = param1;
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*/;
787 goto return_label38;
788 return_label38: while(false);
789 tracehead = trace.prev;
790 return variable2;
791 }
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};
794 val_t variable0;
795 val_t variable1;
796 trace.prev = tracehead; tracehead = &trace;
797 trace.file = LOCATE_string_search;
798 variable0 = param0;
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*/;
800 goto return_label39;
801 return_label39: while(false);
802 tracehead = trace.prev;
803 return variable1;
804 }
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};
807 val_t variable0;
808 val_t variable1;
809 val_t variable2;
810 val_t variable3;
811 val_t variable4;
812 val_t variable5;
813 trace.prev = tracehead; tracehead = &trace;
814 trace.file = LOCATE_string_search;
815 variable0 = param0;
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*/;
831 }
832 break_41: while(0);
833 variable1 = variable2 /*res*/;
834 goto return_label40;
835 return_label40: while(false);
836 tracehead = trace.prev;
837 return variable1;
838 }
839 val_t string_search___String___split(val_t self) {
840 struct trace_t trace = {NULL, NULL, 310, LOCATE_string_search___String___split};
841 val_t variable0;
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*/;
845 goto return_label42;
846 return_label42: while(false);
847 tracehead = trace.prev;
848 return variable0;
849 }