8f49bd86c330c2f40c8f4bf738d91a15380487c7
[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, LOCATE_string_search, 21, LOCATE_string_search___Pattern___search_index_in};
5 trace.prev = tracehead; tracehead = &trace;
6 fprintf(stderr, "Deferred method %s called");
7 fprintf(stderr, " (%s:%d)\n", LOCATE_string_search, 21);
8 nit_exit(1);
9 tracehead = trace.prev;
10 return NIT_NULL;
11 }
12 val_t string_search___Pattern___search_in(val_t self, val_t param0, val_t param1) {
13 struct trace_t trace = {NULL, LOCATE_string_search, 26, LOCATE_string_search___Pattern___search_in};
14 trace.prev = tracehead; tracehead = &trace;
15 fprintf(stderr, "Deferred method %s called");
16 fprintf(stderr, " (%s:%d)\n", LOCATE_string_search, 26);
17 nit_exit(1);
18 tracehead = trace.prev;
19 return NIT_NULL;
20 }
21 val_t string_search___Pattern___search_all_in(val_t self, val_t param0) {
22 struct trace_t trace = {NULL, LOCATE_string_search, 30, LOCATE_string_search___Pattern___search_all_in};
23 val_t variable0;
24 val_t variable1;
25 val_t variable2;
26 val_t variable3;
27 trace.prev = tracehead; tracehead = &trace;
28 variable0 = param0;
29 variable2 = NEW_array___Array___init(); /*new Array[E]*/
30 variable1 = variable2;
31 variable3 = ((string_search___Pattern___search_in_t)CALL( self,COLOR_string_search___Pattern___search_in))( self, variable0 /*s*/, TAG_Int(0)) /*Pattern::search_in*/;
32 variable2 = variable3;
33 while (true) { /*while*/
34 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*match*/ == NIT_NULL /*null*/) || (( variable2 /*match*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*match*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*match*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*match*/,COLOR_kernel___Object_____eqeq))( variable2 /*match*/, NIT_NULL /*null*/) /*Object::==*/)))))));
35 if (!UNTAG_Bool(variable3)) break; /* while*/
36 ((array___AbstractArray___add_t)CALL( variable1 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*res*/, variable2 /*match*/) /*AbstractArray::add*/;
37 variable3 = ((string_search___Match___after_t)CALL( variable2 /*match*/,COLOR_string_search___Match___after))( variable2 /*match*/) /*Match::after*/;
38 variable3 = ((string_search___Pattern___search_in_t)CALL( self,COLOR_string_search___Pattern___search_in))( self, variable0 /*s*/, variable3) /*Pattern::search_in*/;
39 variable2 = variable3 /*match=*/;
40 continue_1: while(0);
41 }
42 break_1: while(0);
43 variable1 = variable1 /*res*/;
44 goto return_label0;
45 return_label0: while(false);
46 tracehead = trace.prev;
47 return variable1;
48 }
49 val_t string_search___Pattern___split_in(val_t self, val_t param0) {
50 struct trace_t trace = {NULL, LOCATE_string_search, 42, LOCATE_string_search___Pattern___split_in};
51 val_t variable0;
52 val_t variable1;
53 val_t variable2;
54 val_t variable3;
55 val_t variable4;
56 val_t variable5;
57 trace.prev = tracehead; tracehead = &trace;
58 variable0 = param0;
59 variable2 = NEW_array___Array___init(); /*new Array[E]*/
60 variable1 = variable2;
61 variable2 = TAG_Int(0);
62 variable4 = ((string_search___Pattern___search_in_t)CALL( self,COLOR_string_search___Pattern___search_in))( self, variable0 /*s*/, TAG_Int(0)) /*Pattern::search_in*/;
63 variable3 = variable4;
64 while (true) { /*while*/
65 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*match*/ == NIT_NULL /*null*/) || (( variable3 /*match*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*match*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*match*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*match*/,COLOR_kernel___Object_____eqeq))( variable3 /*match*/, NIT_NULL /*null*/) /*Object::==*/)))))));
66 if (!UNTAG_Bool(variable4)) break; /* while*/
67 variable5 = ((string_search___Match___from_t)CALL( variable3 /*match*/,COLOR_string_search___Match___from))( variable3 /*match*/) /*Match::from*/;
68 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( variable2 /*i*/));
69 variable4 = variable5;
70 variable5 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*i*/, variable4 /*len*/); /*new Match*/
71 ((array___AbstractArray___add_t)CALL( variable1 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*res*/, variable5) /*AbstractArray::add*/;
72 variable5 = ((string_search___Match___after_t)CALL( variable3 /*match*/,COLOR_string_search___Match___after))( variable3 /*match*/) /*Match::after*/;
73 variable2 = variable5 /*i=*/;
74 variable5 = ((string_search___Pattern___search_in_t)CALL( self,COLOR_string_search___Pattern___search_in))( self, variable0 /*s*/, variable2 /*i*/) /*Pattern::search_in*/;
75 variable3 = variable5 /*match=*/;
76 continue_3: while(0);
77 }
78 break_3: while(0);
79 variable4 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
80 variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( variable2 /*i*/));
81 variable5 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*i*/, variable4); /*new Match*/
82 variable4 = variable5;
83 ((array___AbstractArray___add_t)CALL( variable1 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*res*/, variable4) /*AbstractArray::add*/;
84 variable1 = variable1 /*res*/;
85 goto return_label2;
86 return_label2: while(false);
87 tracehead = trace.prev;
88 return variable1;
89 }
90 val_t string_search___BM_Pattern___to_s(val_t self) {
91 struct trace_t trace = {NULL, LOCATE_string_search, 67, LOCATE_string_search___BM_Pattern___to_s};
92 val_t variable0;
93 trace.prev = tracehead; tracehead = &trace;
94 variable0 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
95 goto return_label4;
96 return_label4: while(false);
97 tracehead = trace.prev;
98 return variable0;
99 }
100 val_t string_search___BM_Pattern___search_index_in(val_t self, val_t param0, val_t param1) {
101 struct trace_t trace = {NULL, LOCATE_string_search, 69, LOCATE_string_search___BM_Pattern___search_index_in};
102 val_t variable0;
103 val_t variable1;
104 val_t variable2;
105 val_t variable3;
106 val_t variable4;
107 val_t variable5;
108 val_t variable6;
109 val_t variable7;
110 val_t variable8;
111 val_t variable9;
112 val_t variable10;
113 trace.prev = tracehead; tracehead = &trace;
114 variable0 = param0;
115 variable1 = param1;
116 variable2 = TAG_Bool(UNTAG_Int( variable1 /*from*/)>=UNTAG_Int( TAG_Int(0)));
117 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___BM_Pattern___search_index_in, LOCATE_string_search, 72); nit_exit(1);}
118 variable3 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
119 variable2 = variable3;
120 variable4 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
121 variable3 = variable4;
122 variable4 = variable1 /*from*/;
123 while (true) { /*while*/
124 variable5 = TAG_Int(UNTAG_Int( variable2 /*n*/)-UNTAG_Int( variable3 /*m*/));
125 variable5 = TAG_Int(UNTAG_Int(variable5)+UNTAG_Int( TAG_Int(1)));
126 variable5 = TAG_Bool(UNTAG_Int( variable4 /*j*/)<UNTAG_Int(variable5));
127 if (!UNTAG_Bool(variable5)) break; /* while*/
128 variable6 = TAG_Int(UNTAG_Int( variable3 /*m*/)-UNTAG_Int( TAG_Int(1)));
129 variable5 = variable6;
130 while (true) { /*while*/
131 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)>=UNTAG_Int( TAG_Int(0)));
132 variable7 = variable6;
133 if (UNTAG_Bool(variable7)) { /* and */
134 variable7 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
135 variable7 = ((string___String_____bra_t)CALL(variable7,COLOR_abstract_collection___Map_____bra))(variable7, variable5 /*i*/) /*String::[]*/;
136 variable8 = TAG_Int(UNTAG_Int( variable5 /*i*/)+UNTAG_Int( variable4 /*j*/));
137 variable8 = ((string___String_____bra_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Map_____bra))( variable0 /*s*/, variable8) /*String::[]*/;
138 variable7 = TAG_Bool((variable7)==(variable8));
139 }
140 variable6 = variable7;
141 if (!UNTAG_Bool(variable6)) break; /* while*/
142 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1))) /*i*/;
143 continue_7: while(0);
144 }
145 break_7: while(0);
146 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)<UNTAG_Int( TAG_Int(0)));
147 if (UNTAG_Bool(variable6)) { /*if*/
148 variable2 = variable4 /*j*/;
149 goto return_label5;
150 } else { /*if*/
151 variable7 = ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/;
152 variable8 = variable5 /*i*/;
153 variable9 = TAG_Bool(UNTAG_Int( variable8 /*index*/)>=UNTAG_Int( TAG_Int(0)));
154 variable10 = variable9;
155 if (UNTAG_Bool(variable10)) { /* and */
156 variable10 = variable7;
157 variable10 = ATTR_array___AbstractArray____length(variable10) /*AbstractArray::_length*/;
158 variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)<UNTAG_Int(variable10));
159 }
160 variable9 = variable10;
161 if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
162 variable9 = variable7;
163 variable9 = ATTR_array___Array____items(variable9) /*Array::_items*/;
164 variable9 = UNBOX_NativeArray(variable9)[UNTAG_Int( variable8 /*index*/)];
165 goto return_label8;
166 return_label8: while(false);
167 variable7 = variable9;
168 variable6 = variable7;
169 variable8 = TAG_Int(UNTAG_Int( variable5 /*i*/)+UNTAG_Int( variable4 /*j*/));
170 variable8 = ((string___String_____bra_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Map_____bra))( variable0 /*s*/, variable8) /*String::[]*/;
171 variable8 = ((string_search___BM_Pattern___bc_t)CALL( self,COLOR_string_search___BM_Pattern___bc))( self, variable8) /*BM_Pattern::bc*/;
172 variable8 = TAG_Int(UNTAG_Int(variable8)-UNTAG_Int( variable3 /*m*/));
173 variable8 = TAG_Int(UNTAG_Int(variable8)+UNTAG_Int( TAG_Int(1)));
174 variable8 = TAG_Int(UNTAG_Int(variable8)+UNTAG_Int( variable5 /*i*/));
175 variable7 = variable8;
176 variable8 = TAG_Bool(UNTAG_Int( variable6 /*gs*/)>UNTAG_Int( variable7 /*bc*/));
177 if (UNTAG_Bool(variable8)) { /*if*/
178 variable4 = TAG_Int(UNTAG_Int(variable4)+UNTAG_Int( variable6 /*gs*/)) /*j*/;
179 } else { /*if*/
180 variable4 = TAG_Int(UNTAG_Int(variable4)+UNTAG_Int( variable7 /*bc*/)) /*j*/;
181 }
182 }
183 continue_6: while(0);
184 }
185 break_6: while(0);
186 variable5 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
187 variable2 = variable5;
188 goto return_label5;
189 return_label5: while(false);
190 tracehead = trace.prev;
191 return variable2;
192 }
193 val_t string_search___BM_Pattern___search_in(val_t self, val_t param0, val_t param1) {
194 struct trace_t trace = {NULL, LOCATE_string_search, 96, LOCATE_string_search___BM_Pattern___search_in};
195 val_t variable0;
196 val_t variable1;
197 val_t variable2;
198 val_t variable3;
199 val_t variable4;
200 trace.prev = tracehead; tracehead = &trace;
201 variable0 = param0;
202 variable1 = param1;
203 variable3 = ((string_search___BM_Pattern___search_index_in_t)CALL( self,COLOR_string_search___Pattern___search_index_in))( self, variable0 /*s*/, variable1 /*from*/) /*BM_Pattern::search_index_in*/;
204 variable2 = variable3;
205 variable3 = TAG_Bool(UNTAG_Int( variable2 /*to*/)<UNTAG_Int( TAG_Int(0)));
206 if (UNTAG_Bool(variable3)) { /*if*/
207 variable2 = NIT_NULL /*null*/;
208 goto return_label9;
209 } else { /*if*/
210 variable3 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
211 variable4 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*to*/, variable3); /*new Match*/
212 variable3 = variable4;
213 variable2 = variable3;
214 goto return_label9;
215 }
216 return_label9: while(false);
217 tracehead = trace.prev;
218 return variable2;
219 }
220 void string_search___BM_Pattern___init(val_t self, val_t param0, int* init_table) {
221 struct trace_t trace = {NULL, LOCATE_string_search, 107, LOCATE_string_search___BM_Pattern___init};
222 val_t variable0;
223 val_t variable1;
224 val_t variable2;
225 trace.prev = tracehead; tracehead = &trace;
226 variable0 = param0;
227 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_BM_Pattern].i]) return;
228 ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/ = variable0 /*motif*/;
229 variable1 = ((array___AbstractArray___length_t)CALL( variable0 /*motif*/,COLOR_abstract_collection___Collection___length))( variable0 /*motif*/) /*AbstractArray::length*/;
230 ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/ = variable1;
231 variable1 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
232 variable2 = NEW_array___Array___with_capacity(variable1); /*new Array[E]*/
233 variable1 = variable2;
234 ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/ = variable1;
235 variable1 = NEW_array___ArrayMap___init(); /*new ArrayMap[K, E]*/
236 ATTR_string_search___BM_Pattern____bc_table( self) /*BM_Pattern::_bc_table*/ = variable1;
237 ((string_search___BM_Pattern___compute_gs_t)CALL( self,COLOR_string_search___BM_Pattern___compute_gs))( self) /*BM_Pattern::compute_gs*/;
238 ((string_search___BM_Pattern___compute_bc_t)CALL( self,COLOR_string_search___BM_Pattern___compute_bc))( self) /*BM_Pattern::compute_bc*/;
239 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_BM_Pattern].i] = 1;
240 tracehead = trace.prev;
241 return;
242 }
243 val_t string_search___BM_Pattern___bc(val_t self, val_t param0) {
244 struct trace_t trace = {NULL, LOCATE_string_search, 124, LOCATE_string_search___BM_Pattern___bc};
245 val_t variable0;
246 val_t variable1;
247 trace.prev = tracehead; tracehead = &trace;
248 variable0 = param0;
249 variable1 = ATTR_string_search___BM_Pattern____bc_table( self) /*BM_Pattern::_bc_table*/;
250 variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable0 /*e*/) /*Map::has_key*/;
251 if (UNTAG_Bool(variable1)) { /*if*/
252 variable1 = ATTR_string_search___BM_Pattern____bc_table( self) /*BM_Pattern::_bc_table*/;
253 variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1, variable0 /*e*/) /*Map::[]*/;
254 goto return_label11;
255 } else { /*if*/
256 variable1 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
257 goto return_label11;
258 }
259 return_label11: while(false);
260 tracehead = trace.prev;
261 return variable1;
262 }
263 void string_search___BM_Pattern___compute_bc(val_t self) {
264 struct trace_t trace = {NULL, LOCATE_string_search, 139, LOCATE_string_search___BM_Pattern___compute_bc};
265 val_t variable0;
266 val_t variable1;
267 val_t variable2;
268 val_t variable3;
269 val_t variable4;
270 val_t variable5;
271 trace.prev = tracehead; tracehead = &trace;
272 variable1 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
273 variable0 = variable1;
274 variable2 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
275 variable1 = variable2;
276 variable2 = TAG_Int(0);
277 while (true) { /*while*/
278 variable3 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
279 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int(variable3));
280 if (!UNTAG_Bool(variable3)) break; /* while*/
281 variable3 = ATTR_string_search___BM_Pattern____bc_table( self) /*BM_Pattern::_bc_table*/;
282 variable4 = ((string___String_____bra_t)CALL( variable0 /*x*/,COLOR_abstract_collection___Map_____bra))( variable0 /*x*/, variable2 /*i*/) /*String::[]*/;
283 variable5 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( variable2 /*i*/));
284 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1)));
285 ((abstract_collection___Map_____braeq_t)CALL(variable3,COLOR_abstract_collection___Map_____braeq))(variable3, variable4, variable5) /*Map::[]=*/;
286 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
287 continue_13: while(0);
288 }
289 break_13: while(0);
290 tracehead = trace.prev;
291 return;
292 }
293 val_t string_search___BM_Pattern___suffixes(val_t self) {
294 struct trace_t trace = {NULL, LOCATE_string_search, 150, LOCATE_string_search___BM_Pattern___suffixes};
295 val_t variable0;
296 val_t variable1;
297 val_t variable2;
298 val_t variable3;
299 val_t variable4;
300 val_t variable5;
301 val_t variable6;
302 val_t variable7;
303 val_t variable8;
304 val_t variable9;
305 val_t variable10;
306 trace.prev = tracehead; tracehead = &trace;
307 variable1 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
308 variable0 = variable1;
309 variable2 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
310 variable1 = variable2;
311 variable3 = NEW_array___Array___filled_with( variable1 /*m*/, variable1 /*m*/); /*new Array[E]*/
312 variable2 = variable3;
313 variable3 = TAG_Int(0);
314 variable5 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
315 variable4 = variable5;
316 variable6 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(2)));
317 variable5 = variable6;
318 while (true) { /*while*/
319 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)>=UNTAG_Int( TAG_Int(0)));
320 if (!UNTAG_Bool(variable6)) break; /* while*/
321 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)>UNTAG_Int( variable4 /*g*/));
322 variable7 = variable6;
323 if (UNTAG_Bool(variable7)) { /* and */
324 variable7 = TAG_Int(UNTAG_Int( variable5 /*i*/)+UNTAG_Int( variable1 /*m*/));
325 variable7 = TAG_Int(UNTAG_Int(variable7)-UNTAG_Int( TAG_Int(1)));
326 variable7 = TAG_Int(UNTAG_Int(variable7)-UNTAG_Int( variable3 /*f*/));
327 variable8 = variable7;
328 variable9 = TAG_Bool(UNTAG_Int( variable8 /*index*/)>=UNTAG_Int( TAG_Int(0)));
329 variable10 = variable9;
330 if (UNTAG_Bool(variable10)) { /* and */
331 variable10 = ATTR_array___AbstractArray____length( variable2 /*suff*/) /*AbstractArray::_length*/;
332 variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)<UNTAG_Int(variable10));
333 }
334 variable9 = variable10;
335 if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
336 variable9 = ATTR_array___Array____items( variable2 /*suff*/) /*Array::_items*/;
337 variable9 = UNBOX_NativeArray(variable9)[UNTAG_Int( variable8 /*index*/)];
338 goto return_label16;
339 return_label16: while(false);
340 variable7 = variable9;
341 variable8 = TAG_Int(UNTAG_Int( variable5 /*i*/)-UNTAG_Int( variable4 /*g*/));
342 variable7 = TAG_Bool(UNTAG_Int(variable7)<UNTAG_Int(variable8));
343 }
344 variable6 = variable7;
345 if (UNTAG_Bool(variable6)) { /*if*/
346 variable6 = TAG_Int(UNTAG_Int( variable5 /*i*/)+UNTAG_Int( variable1 /*m*/));
347 variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int( TAG_Int(1)));
348 variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int( variable3 /*f*/));
349 variable7 = variable6;
350 variable8 = TAG_Bool(UNTAG_Int( variable7 /*index*/)>=UNTAG_Int( TAG_Int(0)));
351 variable9 = variable8;
352 if (UNTAG_Bool(variable9)) { /* and */
353 variable9 = ATTR_array___AbstractArray____length( variable2 /*suff*/) /*AbstractArray::_length*/;
354 variable9 = TAG_Bool(UNTAG_Int( variable7 /*index*/)<UNTAG_Int(variable9));
355 }
356 variable8 = variable9;
357 if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
358 variable8 = ATTR_array___Array____items( variable2 /*suff*/) /*Array::_items*/;
359 variable8 = UNBOX_NativeArray(variable8)[UNTAG_Int( variable7 /*index*/)];
360 goto return_label17;
361 return_label17: while(false);
362 variable6 = variable8;
363 ((array___Array_____braeq_t)CALL( variable2 /*suff*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*suff*/, variable5 /*i*/, variable6) /*Array::[]=*/;
364 } else { /*if*/
365 variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)<UNTAG_Int( variable4 /*g*/));
366 if (UNTAG_Bool(variable6)) { /*if*/
367 variable4 = variable5 /*i*/ /*g=*/;
368 }
369 variable3 = variable5 /*i*/ /*f=*/;
370 while (true) { /*while*/
371 variable6 = TAG_Bool(UNTAG_Int( variable4 /*g*/)>=UNTAG_Int( TAG_Int(0)));
372 variable7 = variable6;
373 if (UNTAG_Bool(variable7)) { /* and */
374 variable7 = ((string___String_____bra_t)CALL( variable0 /*x*/,COLOR_abstract_collection___Map_____bra))( variable0 /*x*/, variable4 /*g*/) /*String::[]*/;
375 variable8 = TAG_Int(UNTAG_Int( variable4 /*g*/)+UNTAG_Int( variable1 /*m*/));
376 variable8 = TAG_Int(UNTAG_Int(variable8)-UNTAG_Int( TAG_Int(1)));
377 variable8 = TAG_Int(UNTAG_Int(variable8)-UNTAG_Int( variable3 /*f*/));
378 variable8 = ((string___String_____bra_t)CALL( variable0 /*x*/,COLOR_abstract_collection___Map_____bra))( variable0 /*x*/, variable8) /*String::[]*/;
379 variable7 = TAG_Bool((variable7)==(variable8));
380 }
381 variable6 = variable7;
382 if (!UNTAG_Bool(variable6)) break; /* while*/
383 variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1))) /*g*/;
384 continue_18: while(0);
385 }
386 break_18: while(0);
387 variable6 = TAG_Int(UNTAG_Int( variable3 /*f*/)-UNTAG_Int( variable4 /*g*/));
388 ((array___Array_____braeq_t)CALL( variable2 /*suff*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*suff*/, variable5 /*i*/, variable6) /*Array::[]=*/;
389 }
390 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1))) /*i*/;
391 continue_15: while(0);
392 }
393 break_15: while(0);
394 variable0 = variable2 /*suff*/;
395 goto return_label14;
396 return_label14: while(false);
397 tracehead = trace.prev;
398 return variable0;
399 }
400 void string_search___BM_Pattern___compute_gs(val_t self) {
401 struct trace_t trace = {NULL, LOCATE_string_search, 173, LOCATE_string_search___BM_Pattern___compute_gs};
402 val_t variable0;
403 val_t variable1;
404 val_t variable2;
405 val_t variable3;
406 val_t variable4;
407 val_t variable5;
408 val_t variable6;
409 val_t variable7;
410 val_t variable8;
411 val_t variable9;
412 trace.prev = tracehead; tracehead = &trace;
413 variable1 = ATTR_string_search___BM_Pattern____motif( self) /*BM_Pattern::_motif*/;
414 variable0 = variable1;
415 variable2 = ATTR_string_search___BM_Pattern____length( self) /*BM_Pattern::_length*/;
416 variable1 = variable2;
417 variable3 = ((string_search___BM_Pattern___suffixes_t)CALL( self,COLOR_string_search___BM_Pattern___suffixes))( self) /*BM_Pattern::suffixes*/;
418 variable2 = variable3;
419 variable3 = TAG_Int(0);
420 while (true) { /*while*/
421 variable4 = TAG_Bool(UNTAG_Int( variable3 /*i*/)<UNTAG_Int( variable1 /*m*/));
422 if (!UNTAG_Bool(variable4)) break; /* while*/
423 variable4 = ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/;
424 ((array___Array_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4, variable3 /*i*/, variable1 /*m*/) /*Array::[]=*/;
425 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1))) /*i*/;
426 continue_20: while(0);
427 }
428 break_20: while(0);
429 variable4 = TAG_Int(0);
430 variable5 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
431 variable3 = variable5 /*i=*/;
432 while (true) { /*while*/
433 variable5 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
434 variable5 = TAG_Bool(UNTAG_Int( variable3 /*i*/)>=UNTAG_Int(variable5));
435 if (!UNTAG_Bool(variable5)) break; /* while*/
436 variable5 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
437 variable5 = TAG_Bool(( variable3 /*i*/)==(variable5));
438 variable6 = variable5;
439 if (!UNTAG_Bool(variable6)) { /* or */
440 variable6 = variable3 /*i*/;
441 variable7 = TAG_Bool(UNTAG_Int( variable6 /*index*/)>=UNTAG_Int( TAG_Int(0)));
442 variable8 = variable7;
443 if (UNTAG_Bool(variable8)) { /* and */
444 variable8 = ATTR_array___AbstractArray____length( variable2 /*suff*/) /*AbstractArray::_length*/;
445 variable8 = TAG_Bool(UNTAG_Int( variable6 /*index*/)<UNTAG_Int(variable8));
446 }
447 variable7 = variable8;
448 if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
449 variable7 = ATTR_array___Array____items( variable2 /*suff*/) /*Array::_items*/;
450 variable7 = UNBOX_NativeArray(variable7)[UNTAG_Int( variable6 /*index*/)];
451 goto return_label22;
452 return_label22: while(false);
453 variable6 = variable7;
454 variable7 = TAG_Int(UNTAG_Int( variable3 /*i*/)+UNTAG_Int( TAG_Int(1)));
455 variable6 = TAG_Bool((variable6)==(variable7));
456 }
457 variable5 = variable6;
458 if (UNTAG_Bool(variable5)) { /*if*/
459 while (true) { /*while*/
460 variable5 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
461 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( variable3 /*i*/));
462 variable5 = TAG_Bool(UNTAG_Int( variable4 /*j*/)<UNTAG_Int(variable5));
463 if (!UNTAG_Bool(variable5)) break; /* while*/
464 variable5 = ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/;
465 variable6 = variable4 /*j*/;
466 variable7 = TAG_Bool(UNTAG_Int( variable6 /*index*/)>=UNTAG_Int( TAG_Int(0)));
467 variable8 = variable7;
468 if (UNTAG_Bool(variable8)) { /* and */
469 variable8 = variable5;
470 variable8 = ATTR_array___AbstractArray____length(variable8) /*AbstractArray::_length*/;
471 variable8 = TAG_Bool(UNTAG_Int( variable6 /*index*/)<UNTAG_Int(variable8));
472 }
473 variable7 = variable8;
474 if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
475 variable7 = variable5;
476 variable7 = ATTR_array___Array____items(variable7) /*Array::_items*/;
477 variable7 = UNBOX_NativeArray(variable7)[UNTAG_Int( variable6 /*index*/)];
478 goto return_label24;
479 return_label24: while(false);
480 variable5 = variable7;
481 variable5 = TAG_Bool((variable5)==( variable1 /*m*/));
482 if (UNTAG_Bool(variable5)) { /*if*/
483 variable5 = ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/;
484 variable6 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
485 variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int( variable3 /*i*/));
486 ((array___Array_____braeq_t)CALL(variable5,COLOR_abstract_collection___Map_____braeq))(variable5, variable4 /*j*/, variable6) /*Array::[]=*/;
487 }
488 variable4 = TAG_Int(UNTAG_Int(variable4)+UNTAG_Int( TAG_Int(1))) /*j*/;
489 continue_23: while(0);
490 }
491 break_23: while(0);
492 }
493 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int( TAG_Int(1))) /*i*/;
494 continue_21: while(0);
495 }
496 break_21: while(0);
497 variable3 = TAG_Int(0) /*i=*/;
498 while (true) { /*while*/
499 variable5 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
500 variable5 = TAG_Bool(UNTAG_Int( variable3 /*i*/)<UNTAG_Int(variable5));
501 if (!UNTAG_Bool(variable5)) break; /* while*/
502 variable5 = ATTR_string_search___BM_Pattern____gs( self) /*BM_Pattern::_gs*/;
503 variable6 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
504 variable7 = variable3 /*i*/;
505 variable8 = TAG_Bool(UNTAG_Int( variable7 /*index*/)>=UNTAG_Int( TAG_Int(0)));
506 variable9 = variable8;
507 if (UNTAG_Bool(variable9)) { /* and */
508 variable9 = ATTR_array___AbstractArray____length( variable2 /*suff*/) /*AbstractArray::_length*/;
509 variable9 = TAG_Bool(UNTAG_Int( variable7 /*index*/)<UNTAG_Int(variable9));
510 }
511 variable8 = variable9;
512 if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
513 variable8 = ATTR_array___Array____items( variable2 /*suff*/) /*Array::_items*/;
514 variable8 = UNBOX_NativeArray(variable8)[UNTAG_Int( variable7 /*index*/)];
515 goto return_label26;
516 return_label26: while(false);
517 variable7 = variable8;
518 variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int(variable7));
519 variable7 = TAG_Int(UNTAG_Int( variable1 /*m*/)-UNTAG_Int( TAG_Int(1)));
520 variable7 = TAG_Int(UNTAG_Int(variable7)-UNTAG_Int( variable3 /*i*/));
521 ((array___Array_____braeq_t)CALL(variable5,COLOR_abstract_collection___Map_____braeq))(variable5, variable6, variable7) /*Array::[]=*/;
522 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1))) /*i*/;
523 continue_25: while(0);
524 }
525 break_25: while(0);
526 tracehead = trace.prev;
527 return;
528 }
529 val_t string_search___Match___string(val_t self) {
530 struct trace_t trace = {NULL, LOCATE_string_search, 204, LOCATE_string_search___Match___string};
531 trace.prev = tracehead; tracehead = &trace;
532 tracehead = trace.prev;
533 return ATTR_string_search___Match____string( self) /*Match::_string*/;
534 }
535 val_t string_search___Match___from(val_t self) {
536 struct trace_t trace = {NULL, LOCATE_string_search, 207, LOCATE_string_search___Match___from};
537 trace.prev = tracehead; tracehead = &trace;
538 tracehead = trace.prev;
539 return ATTR_string_search___Match____from( self) /*Match::_from*/;
540 }
541 val_t string_search___Match___length(val_t self) {
542 struct trace_t trace = {NULL, LOCATE_string_search, 210, LOCATE_string_search___Match___length};
543 trace.prev = tracehead; tracehead = &trace;
544 tracehead = trace.prev;
545 return ATTR_string_search___Match____length( self) /*Match::_length*/;
546 }
547 val_t string_search___Match___after(val_t self) {
548 struct trace_t trace = {NULL, LOCATE_string_search, 213, LOCATE_string_search___Match___after};
549 val_t variable0;
550 val_t variable1;
551 trace.prev = tracehead; tracehead = &trace;
552 variable0 = ATTR_string_search___Match____from( self) /*Match::_from*/;
553 variable1 = ATTR_string_search___Match____length( self) /*Match::_length*/;
554 variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int(variable1));
555 goto return_label27;
556 return_label27: while(false);
557 tracehead = trace.prev;
558 return variable0;
559 }
560 val_t string_search___Match___to_s(val_t self) {
561 struct trace_t trace = {NULL, LOCATE_string_search, 217, LOCATE_string_search___Match___to_s};
562 val_t variable0;
563 val_t variable1;
564 val_t variable2;
565 trace.prev = tracehead; tracehead = &trace;
566 variable0 = ATTR_string_search___Match____string( self) /*Match::_string*/;
567 variable1 = ATTR_string_search___Match____from( self) /*Match::_from*/;
568 variable2 = ATTR_string_search___Match____length( self) /*Match::_length*/;
569 variable0 = ((string___String___substring_t)CALL(variable0,COLOR_string___String___substring))(variable0, variable1, variable2) /*String::substring*/;
570 goto return_label28;
571 return_label28: while(false);
572 tracehead = trace.prev;
573 return variable0;
574 }
575 void string_search___Match___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
576 struct trace_t trace = {NULL, LOCATE_string_search, 220, LOCATE_string_search___Match___init};
577 val_t variable0;
578 val_t variable1;
579 val_t variable2;
580 val_t variable3;
581 val_t variable4;
582 trace.prev = tracehead; tracehead = &trace;
583 variable0 = param0;
584 variable1 = param1;
585 variable2 = param2;
586 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Match].i]) return;
587 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*s*/ == NIT_NULL /*null*/) || (( variable0 /*s*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))( variable0 /*s*/, NIT_NULL /*null*/) /*Object::==*/)))))));
588 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", " 'non_null_string' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___Match___init, LOCATE_string_search, 223); nit_exit(1);}
589 variable3 = TAG_Bool(UNTAG_Int( variable2 /*len*/)>=UNTAG_Int( TAG_Int(0)));
590 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", " 'positive_length' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___Match___init, LOCATE_string_search, 224); nit_exit(1);}
591 variable3 = TAG_Bool(UNTAG_Int( variable1 /*f*/)>=UNTAG_Int( TAG_Int(0)));
592 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", " 'valid_from' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___Match___init, LOCATE_string_search, 225); nit_exit(1);}
593 variable3 = TAG_Int(UNTAG_Int( variable1 /*f*/)+UNTAG_Int( variable2 /*len*/));
594 variable4 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
595 variable3 = TAG_Bool(UNTAG_Int(variable3)<=UNTAG_Int(variable4));
596 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", " 'valid_after' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___Match___init, LOCATE_string_search, 226); nit_exit(1);}
597 ATTR_string_search___Match____string( self) /*Match::_string*/ = variable0 /*s*/;
598 ATTR_string_search___Match____from( self) /*Match::_from*/ = variable1 /*f*/;
599 ATTR_string_search___Match____length( self) /*Match::_length*/ = variable2 /*len*/;
600 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Match].i] = 1;
601 tracehead = trace.prev;
602 return;
603 }
604 val_t string_search___Char___search_index_in(val_t self, val_t param0, val_t param1) {
605 struct trace_t trace = {NULL, LOCATE_string_search, 235, LOCATE_string_search___Char___search_index_in};
606 val_t variable0;
607 val_t variable1;
608 val_t variable2;
609 val_t variable3;
610 trace.prev = tracehead; tracehead = &trace;
611 variable0 = param0;
612 variable1 = param1;
613 variable3 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
614 variable2 = variable3;
615 while (true) { /*while*/
616 variable3 = TAG_Bool(UNTAG_Int( variable1 /*from*/)<UNTAG_Int( variable2 /*stop*/));
617 if (!UNTAG_Bool(variable3)) break; /* while*/
618 variable3 = ((string___String_____bra_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Map_____bra))( variable0 /*s*/, variable1 /*from*/) /*String::[]*/;
619 variable3 = TAG_Bool((variable3)==( self));
620 if (UNTAG_Bool(variable3)) { /*if*/
621 variable2 = variable1 /*from*/;
622 goto return_label30;
623 }
624 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*from*/;
625 continue_31: while(0);
626 }
627 break_31: while(0);
628 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
629 variable2 = variable3;
630 goto return_label30;
631 return_label30: while(false);
632 tracehead = trace.prev;
633 return variable2;
634 }
635 val_t string_search___Char___search_in(val_t self, val_t param0, val_t param1) {
636 struct trace_t trace = {NULL, LOCATE_string_search, 245, LOCATE_string_search___Char___search_in};
637 val_t variable0;
638 val_t variable1;
639 val_t variable2;
640 val_t variable3;
641 trace.prev = tracehead; tracehead = &trace;
642 variable0 = param0;
643 variable1 = param1;
644 variable3 = ((string_search___Char___search_index_in_t)CALL( self,COLOR_string_search___Pattern___search_index_in))( self, variable0 /*s*/, variable1 /*from*/) /*Char::search_index_in*/;
645 variable2 = variable3;
646 variable3 = TAG_Bool(UNTAG_Int( variable2 /*pos*/)<UNTAG_Int( TAG_Int(0)));
647 if (UNTAG_Bool(variable3)) { /*if*/
648 variable2 = NIT_NULL /*null*/;
649 goto return_label32;
650 } else { /*if*/
651 variable3 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*pos*/, TAG_Int(1)); /*new Match*/
652 variable2 = variable3;
653 goto return_label32;
654 }
655 return_label32: while(false);
656 tracehead = trace.prev;
657 return variable2;
658 }
659 val_t string_search___String___search_index_in(val_t self, val_t param0, val_t param1) {
660 struct trace_t trace = {NULL, LOCATE_string_search, 258, LOCATE_string_search___String___search_index_in};
661 val_t variable0;
662 val_t variable1;
663 val_t variable2;
664 val_t variable3;
665 val_t variable4;
666 val_t variable5;
667 val_t variable6;
668 trace.prev = tracehead; tracehead = &trace;
669 variable0 = param0;
670 variable1 = param1;
671 variable2 = TAG_Bool(UNTAG_Int( variable1 /*from*/)>=UNTAG_Int( TAG_Int(0)));
672 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_string_search___String___search_index_in, LOCATE_string_search, 260); nit_exit(1);}
673 variable3 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
674 variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
675 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int(variable4));
676 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1)));
677 variable2 = variable3;
678 while (true) { /*while*/
679 variable3 = TAG_Bool(UNTAG_Int( variable1 /*from*/)<UNTAG_Int( variable2 /*stop*/));
680 if (!UNTAG_Bool(variable3)) break; /* while*/
681 variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
682 variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1)));
683 variable3 = variable4;
684 while (true) { /*while*/
685 variable4 = TAG_Bool(UNTAG_Int( variable3 /*i*/)>=UNTAG_Int( TAG_Int(0)));
686 variable5 = variable4;
687 if (UNTAG_Bool(variable5)) { /* and */
688 variable5 = ((string___String_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable3 /*i*/) /*String::[]*/;
689 variable6 = TAG_Int(UNTAG_Int( variable3 /*i*/)+UNTAG_Int( variable1 /*from*/));
690 variable6 = ((string___String_____bra_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Map_____bra))( variable0 /*s*/, variable6) /*String::[]*/;
691 variable5 = TAG_Bool((variable5)==(variable6));
692 }
693 variable4 = variable5;
694 if (!UNTAG_Bool(variable4)) break; /* while*/
695 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int( TAG_Int(1))) /*i*/;
696 continue_35: while(0);
697 }
698 break_35: while(0);
699 variable4 = TAG_Bool(UNTAG_Int( variable3 /*i*/)<UNTAG_Int( TAG_Int(0)));
700 if (UNTAG_Bool(variable4)) { /*if*/
701 variable2 = variable1 /*from*/;
702 goto return_label33;
703 }
704 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*from*/;
705 continue_34: while(0);
706 }
707 break_34: while(0);
708 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
709 variable2 = variable3;
710 goto return_label33;
711 return_label33: while(false);
712 tracehead = trace.prev;
713 return variable2;
714 }
715 val_t string_search___String___search_in(val_t self, val_t param0, val_t param1) {
716 struct trace_t trace = {NULL, LOCATE_string_search, 273, LOCATE_string_search___String___search_in};
717 val_t variable0;
718 val_t variable1;
719 val_t variable2;
720 val_t variable3;
721 val_t variable4;
722 trace.prev = tracehead; tracehead = &trace;
723 variable0 = param0;
724 variable1 = param1;
725 variable3 = ((string_search___String___search_index_in_t)CALL( self,COLOR_string_search___Pattern___search_index_in))( self, variable0 /*s*/, variable1 /*from*/) /*String::search_index_in*/;
726 variable2 = variable3;
727 variable3 = TAG_Bool(UNTAG_Int( variable2 /*pos*/)<UNTAG_Int( TAG_Int(0)));
728 if (UNTAG_Bool(variable3)) { /*if*/
729 variable2 = NIT_NULL /*null*/;
730 goto return_label36;
731 } else { /*if*/
732 variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
733 variable4 = NEW_string_search___Match___init( variable0 /*s*/, variable2 /*pos*/, variable3); /*new Match*/
734 variable3 = variable4;
735 variable2 = variable3;
736 goto return_label36;
737 }
738 return_label36: while(false);
739 tracehead = trace.prev;
740 return variable2;
741 }
742 val_t string_search___String___search(val_t self, val_t param0) {
743 struct trace_t trace = {NULL, LOCATE_string_search, 283, LOCATE_string_search___String___search};
744 val_t variable0;
745 val_t variable1;
746 trace.prev = tracehead; tracehead = &trace;
747 variable0 = param0;
748 variable1 = ((string_search___Pattern___search_in_t)CALL( variable0 /*p*/,COLOR_string_search___Pattern___search_in))( variable0 /*p*/, self, TAG_Int(0)) /*Pattern::search_in*/;
749 goto return_label37;
750 return_label37: while(false);
751 tracehead = trace.prev;
752 return variable1;
753 }
754 val_t string_search___String___search_from(val_t self, val_t param0, val_t param1) {
755 struct trace_t trace = {NULL, LOCATE_string_search, 286, LOCATE_string_search___String___search_from};
756 val_t variable0;
757 val_t variable1;
758 val_t variable2;
759 trace.prev = tracehead; tracehead = &trace;
760 variable0 = param0;
761 variable1 = param1;
762 variable2 = ((string_search___Pattern___search_in_t)CALL( variable0 /*p*/,COLOR_string_search___Pattern___search_in))( variable0 /*p*/, self, variable1 /*from*/) /*Pattern::search_in*/;
763 goto return_label38;
764 return_label38: while(false);
765 tracehead = trace.prev;
766 return variable2;
767 }
768 val_t string_search___String___search_all(val_t self, val_t param0) {
769 struct trace_t trace = {NULL, LOCATE_string_search, 291, LOCATE_string_search___String___search_all};
770 val_t variable0;
771 val_t variable1;
772 trace.prev = tracehead; tracehead = &trace;
773 variable0 = param0;
774 variable1 = ((string_search___Pattern___search_all_in_t)CALL( variable0 /*p*/,COLOR_string_search___Pattern___search_all_in))( variable0 /*p*/, self) /*Pattern::search_all_in*/;
775 goto return_label39;
776 return_label39: while(false);
777 tracehead = trace.prev;
778 return variable1;
779 }
780 val_t string_search___String___split_with(val_t self, val_t param0) {
781 struct trace_t trace = {NULL, LOCATE_string_search, 300, LOCATE_string_search___String___split_with};
782 val_t variable0;
783 val_t variable1;
784 val_t variable2;
785 val_t variable3;
786 val_t variable4;
787 val_t variable5;
788 trace.prev = tracehead; tracehead = &trace;
789 variable0 = param0;
790 variable2 = ((string_search___Pattern___split_in_t)CALL( variable0 /*p*/,COLOR_string_search___Pattern___split_in))( variable0 /*p*/, self) /*Pattern::split_in*/;
791 variable1 = variable2;
792 variable3 = ((array___AbstractArray___length_t)CALL( variable1 /*matches*/,COLOR_abstract_collection___Collection___length))( variable1 /*matches*/) /*AbstractArray::length*/;
793 variable4 = NEW_array___Array___with_capacity(variable3); /*new Array[E]*/
794 variable3 = variable4;
795 variable2 = variable3;
796 variable3 = ((array___AbstractArray___iterator_t)CALL( variable1 /*matches*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*matches*/) /*AbstractArray::iterator*/;
797 while (true) { /*for*/
798 variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
799 if (!UNTAG_Bool(variable4)) break; /*for*/
800 variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
801 variable5 = ((string_search___Match___to_s_t)CALL( variable4 /*m*/,COLOR_string___Object___to_s))( variable4 /*m*/) /*Match::to_s*/;
802 ((array___AbstractArray___add_t)CALL( variable2 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*res*/, variable5) /*AbstractArray::add*/;
803 continue_41: while(0);
804 ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
805 }
806 break_41: while(0);
807 variable1 = variable2 /*res*/;
808 goto return_label40;
809 return_label40: while(false);
810 tracehead = trace.prev;
811 return variable1;
812 }
813 val_t string_search___String___split(val_t self) {
814 struct trace_t trace = {NULL, LOCATE_string_search, 310, LOCATE_string_search___String___split};
815 val_t variable0;
816 trace.prev = tracehead; tracehead = &trace;
817 variable0 = ((string_search___String___split_with_t)CALL( self,COLOR_string_search___String___split_with))( self, TAG_Char('\n')) /*String::split_with*/;
818 goto return_label42;
819 return_label42: while(false);
820 tracehead = trace.prev;
821 return variable0;
822 }