c_src: update with new intern methods
[nit.git] / c_src / stream.sep.1.c
1 #include "stream.sep.0.h"
2 /* method stream#IOS#close for (self: IOS) */
3 void stream__IOS__close(val* self) {
4 const char* var_class_name;
5 var_class_name = self == NULL ? "null" : self->type->name;
6 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "close", var_class_name);
7 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 27);
8 show_backtrace(1);
9 RET_LABEL:;
10 }
11 /* method stream#IOS#close for (self: Object) */
12 void VIRTUAL_stream__IOS__close(val* self) {
13 stream__IOS__close(self);
14 RET_LABEL:;
15 }
16 /* method stream#IStream#read_char for (self: IStream): Int */
17 long stream__IStream__read_char(val* self) {
18 long var /* : Int */;
19 const char* var_class_name;
20 var_class_name = self == NULL ? "null" : self->type->name;
21 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "read_char", var_class_name);
22 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 34);
23 show_backtrace(1);
24 RET_LABEL:;
25 return var;
26 }
27 /* method stream#IStream#read_char for (self: Object): Int */
28 long VIRTUAL_stream__IStream__read_char(val* self) {
29 long var /* : Int */;
30 long var1 /* : Int */;
31 var1 = stream__IStream__read_char(self);
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method stream#IStream#read for (self: IStream, Int): String */
37 val* stream__IStream__read(val* self, long p0) {
38 val* var /* : String */;
39 long var_i /* var i: Int */;
40 val* var1 /* : Buffer */;
41 val* var_s /* var s: Buffer */;
42 short int var2 /* : Bool */;
43 long var3 /* : Int */;
44 short int var4 /* : Bool */;
45 short int var6 /* : Bool */;
46 int cltype;
47 int idtype;
48 const char* var_class_name;
49 short int var7 /* : Bool */;
50 short int var_ /* var : Bool */;
51 short int var8 /* : Bool */;
52 short int var9 /* : Bool */;
53 long var10 /* : Int */;
54 long var_c /* var c: Int */;
55 long var11 /* : Int */;
56 short int var12 /* : Bool */;
57 short int var14 /* : Bool */;
58 int cltype15;
59 int idtype16;
60 const char* var_class_name17;
61 short int var18 /* : Bool */;
62 char var19 /* : Char */;
63 char var21 /* : Char */;
64 val* var22 /* : nullable Object */;
65 long var23 /* : Int */;
66 long var24 /* : Int */;
67 long var26 /* : Int */;
68 val* var27 /* : String */;
69 var_i = p0;
70 var1 = NEW_string__Buffer(&type_string__Buffer);
71 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var_i) /* with_capacity on <var1:Buffer>*/;
72 var_s = var1;
73 for(;;) {
74 var3 = 0;
75 { /* Inline kernel#Int#> (var_i,var3) */
76 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
77 /* <var3:Int> isa OTHER */
78 var6 = 1; /* easy <var3:Int> isa OTHER*/
79 if (!var6) {
80 var_class_name = type_kernel__Int.name;
81 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
82 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
83 show_backtrace(1);
84 }
85 var7 = var_i > var3;
86 var4 = var7;
87 goto RET_LABEL5;
88 RET_LABEL5:(void)0;
89 }
90 var_ = var4;
91 if (var4){
92 var8 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:IStream>*/;
93 var9 = !var8;
94 var2 = var9;
95 } else {
96 var2 = var_;
97 }
98 if (!var2) break;
99 var10 = ((long (*)(val*))(self->class->vft[COLOR_stream__IStream__read_char]))(self) /* read_char on <self:IStream>*/;
100 var_c = var10;
101 var11 = 0;
102 { /* Inline kernel#Int#>= (var_c,var11) */
103 /* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
104 /* <var11:Int> isa OTHER */
105 var14 = 1; /* easy <var11:Int> isa OTHER*/
106 if (!var14) {
107 var_class_name17 = type_kernel__Int.name;
108 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
109 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
110 show_backtrace(1);
111 }
112 var18 = var_c >= var11;
113 var12 = var18;
114 goto RET_LABEL13;
115 RET_LABEL13:(void)0;
116 }
117 if (var12){
118 { /* Inline kernel#Int#ascii (var_c) */
119 var21 = var_c;
120 var19 = var21;
121 goto RET_LABEL20;
122 RET_LABEL20:(void)0;
123 }
124 var22 = BOX_kernel__Char(var19); /* autobox from Char to nullable Object */
125 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var22) /* add on <var_s:Buffer>*/;
126 var23 = 1;
127 { /* Inline kernel#Int#- (var_i,var23) */
128 var26 = var_i - var23;
129 var24 = var26;
130 goto RET_LABEL25;
131 RET_LABEL25:(void)0;
132 }
133 var_i = var24;
134 } else {
135 }
136 CONTINUE_label: (void)0;
137 }
138 BREAK_label: (void)0;
139 var27 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
140 var = var27;
141 goto RET_LABEL;
142 RET_LABEL:;
143 return var;
144 }
145 /* method stream#IStream#read for (self: Object, Int): String */
146 val* VIRTUAL_stream__IStream__read(val* self, long p0) {
147 val* var /* : String */;
148 val* var1 /* : String */;
149 var1 = stream__IStream__read(self, p0);
150 var = var1;
151 RET_LABEL:;
152 return var;
153 }
154 /* method stream#IStream#read_line for (self: IStream): String */
155 val* stream__IStream__read_line(val* self) {
156 val* var /* : String */;
157 short int var1 /* : Bool */;
158 short int var2 /* : Bool */;
159 val* var3 /* : Buffer */;
160 val* var_s /* var s: Buffer */;
161 val* var4 /* : String */;
162 var1 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:IStream>*/;
163 var2 = !var1;
164 if (!var2) {
165 fprintf(stderr, "Runtime error: %s", "Assert failed");
166 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 54);
167 show_backtrace(1);
168 }
169 var3 = NEW_string__Buffer(&type_string__Buffer);
170 ((void (*)(val*))(var3->class->vft[COLOR_string__Buffer__init]))(var3) /* init on <var3:Buffer>*/;
171 var_s = var3;
172 ((void (*)(val*, val*))(self->class->vft[COLOR_stream__IStream__append_line_to]))(self, var_s) /* append_line_to on <self:IStream>*/;
173 var4 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
174 var = var4;
175 goto RET_LABEL;
176 RET_LABEL:;
177 return var;
178 }
179 /* method stream#IStream#read_line for (self: Object): String */
180 val* VIRTUAL_stream__IStream__read_line(val* self) {
181 val* var /* : String */;
182 val* var1 /* : String */;
183 var1 = stream__IStream__read_line(self);
184 var = var1;
185 RET_LABEL:;
186 return var;
187 }
188 /* method stream#IStream#read_all for (self: IStream): String */
189 val* stream__IStream__read_all(val* self) {
190 val* var /* : String */;
191 val* var1 /* : Buffer */;
192 val* var_s /* var s: Buffer */;
193 short int var2 /* : Bool */;
194 short int var3 /* : Bool */;
195 long var4 /* : Int */;
196 long var_c /* var c: Int */;
197 long var5 /* : Int */;
198 short int var6 /* : Bool */;
199 short int var8 /* : Bool */;
200 int cltype;
201 int idtype;
202 const char* var_class_name;
203 short int var9 /* : Bool */;
204 char var10 /* : Char */;
205 char var12 /* : Char */;
206 val* var13 /* : nullable Object */;
207 val* var14 /* : String */;
208 var1 = NEW_string__Buffer(&type_string__Buffer);
209 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
210 var_s = var1;
211 for(;;) {
212 var2 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:IStream>*/;
213 var3 = !var2;
214 if (!var3) break;
215 var4 = ((long (*)(val*))(self->class->vft[COLOR_stream__IStream__read_char]))(self) /* read_char on <self:IStream>*/;
216 var_c = var4;
217 var5 = 0;
218 { /* Inline kernel#Int#>= (var_c,var5) */
219 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
220 /* <var5:Int> isa OTHER */
221 var8 = 1; /* easy <var5:Int> isa OTHER*/
222 if (!var8) {
223 var_class_name = type_kernel__Int.name;
224 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
225 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
226 show_backtrace(1);
227 }
228 var9 = var_c >= var5;
229 var6 = var9;
230 goto RET_LABEL7;
231 RET_LABEL7:(void)0;
232 }
233 if (var6){
234 { /* Inline kernel#Int#ascii (var_c) */
235 var12 = var_c;
236 var10 = var12;
237 goto RET_LABEL11;
238 RET_LABEL11:(void)0;
239 }
240 var13 = BOX_kernel__Char(var10); /* autobox from Char to nullable Object */
241 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var13) /* add on <var_s:Buffer>*/;
242 } else {
243 }
244 CONTINUE_label: (void)0;
245 }
246 BREAK_label: (void)0;
247 var14 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
248 var = var14;
249 goto RET_LABEL;
250 RET_LABEL:;
251 return var;
252 }
253 /* method stream#IStream#read_all for (self: Object): String */
254 val* VIRTUAL_stream__IStream__read_all(val* self) {
255 val* var /* : String */;
256 val* var1 /* : String */;
257 var1 = stream__IStream__read_all(self);
258 var = var1;
259 RET_LABEL:;
260 return var;
261 }
262 /* method stream#IStream#append_line_to for (self: IStream, Buffer) */
263 void stream__IStream__append_line_to(val* self, val* p0) {
264 val* var_s /* var s: Buffer */;
265 long var /* : Int */;
266 long var_x /* var x: Int */;
267 long var1 /* : Int */;
268 long var2 /* : Int */;
269 long var4 /* : Int */;
270 short int var5 /* : Bool */;
271 short int var7 /* : Bool */;
272 short int var8 /* : Bool */;
273 char var9 /* : Char */;
274 char var11 /* : Char */;
275 char var_c /* var c: Char */;
276 val* var12 /* : StringCharView */;
277 val* var13 /* : nullable Object */;
278 char var14 /* : Char */;
279 short int var15 /* : Bool */;
280 short int var17 /* : Bool */;
281 var_s = p0;
282 for(;;) {
283 var = ((long (*)(val*))(self->class->vft[COLOR_stream__IStream__read_char]))(self) /* read_char on <self:IStream>*/;
284 var_x = var;
285 var1 = 1;
286 { /* Inline kernel#Int#unary - (var1) */
287 var4 = -var1;
288 var2 = var4;
289 goto RET_LABEL3;
290 RET_LABEL3:(void)0;
291 }
292 { /* Inline kernel#Int#== (var_x,var2) */
293 var7 = var_x == var2;
294 var5 = var7;
295 goto RET_LABEL6;
296 RET_LABEL6:(void)0;
297 }
298 if (var5){
299 var8 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:IStream>*/;
300 if (var8){
301 goto RET_LABEL;
302 } else {
303 }
304 } else {
305 { /* Inline kernel#Int#ascii (var_x) */
306 var11 = var_x;
307 var9 = var11;
308 goto RET_LABEL10;
309 RET_LABEL10:(void)0;
310 }
311 var_c = var9;
312 var12 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__chars]))(var_s) /* chars on <var_s:Buffer>*/;
313 var13 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
314 ((void (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Sequence__push]))(var12, var13) /* push on <var12:StringCharView(BufferCharView)>*/;
315 var14 = '\n';
316 { /* Inline kernel#Char#== (var_c,var14) */
317 var17 = var_c == var14;
318 var15 = var17;
319 goto RET_LABEL16;
320 RET_LABEL16:(void)0;
321 }
322 if (var15){
323 goto RET_LABEL;
324 } else {
325 }
326 }
327 CONTINUE_label: (void)0;
328 }
329 BREAK_label: (void)0;
330 RET_LABEL:;
331 }
332 /* method stream#IStream#append_line_to for (self: Object, Buffer) */
333 void VIRTUAL_stream__IStream__append_line_to(val* self, val* p0) {
334 stream__IStream__append_line_to(self, p0);
335 RET_LABEL:;
336 }
337 /* method stream#IStream#eof for (self: IStream): Bool */
338 short int stream__IStream__eof(val* self) {
339 short int var /* : Bool */;
340 const char* var_class_name;
341 var_class_name = self == NULL ? "null" : self->type->name;
342 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "eof", var_class_name);
343 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 86);
344 show_backtrace(1);
345 RET_LABEL:;
346 return var;
347 }
348 /* method stream#IStream#eof for (self: Object): Bool */
349 short int VIRTUAL_stream__IStream__eof(val* self) {
350 short int var /* : Bool */;
351 short int var1 /* : Bool */;
352 var1 = stream__IStream__eof(self);
353 var = var1;
354 RET_LABEL:;
355 return var;
356 }
357 /* method stream#OStream#write for (self: OStream, String) */
358 void stream__OStream__write(val* self, val* p0) {
359 const char* var_class_name;
360 var_class_name = self == NULL ? "null" : self->type->name;
361 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "write", var_class_name);
362 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 94);
363 show_backtrace(1);
364 RET_LABEL:;
365 }
366 /* method stream#OStream#write for (self: Object, String) */
367 void VIRTUAL_stream__OStream__write(val* self, val* p0) {
368 stream__OStream__write(self, p0);
369 RET_LABEL:;
370 }
371 /* method stream#OStream#is_writable for (self: OStream): Bool */
372 short int stream__OStream__is_writable(val* self) {
373 short int var /* : Bool */;
374 const char* var_class_name;
375 var_class_name = self == NULL ? "null" : self->type->name;
376 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_writable", var_class_name);
377 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 97);
378 show_backtrace(1);
379 RET_LABEL:;
380 return var;
381 }
382 /* method stream#OStream#is_writable for (self: Object): Bool */
383 short int VIRTUAL_stream__OStream__is_writable(val* self) {
384 short int var /* : Bool */;
385 short int var1 /* : Bool */;
386 var1 = stream__OStream__is_writable(self);
387 var = var1;
388 RET_LABEL:;
389 return var;
390 }
391 /* method stream#Streamable#write_to for (self: Streamable, OStream) */
392 void stream__Streamable__write_to(val* self, val* p0) {
393 const char* var_class_name;
394 var_class_name = self == NULL ? "null" : self->type->name;
395 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "write_to", var_class_name);
396 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 106);
397 show_backtrace(1);
398 RET_LABEL:;
399 }
400 /* method stream#Streamable#write_to for (self: Object, OStream) */
401 void VIRTUAL_stream__Streamable__write_to(val* self, val* p0) {
402 stream__Streamable__write_to(self, p0);
403 RET_LABEL:;
404 }
405 /* method stream#String#write_to for (self: String, OStream) */
406 void stream__String__write_to(val* self, val* p0) {
407 val* var_stream /* var stream: OStream */;
408 var_stream = p0;
409 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, self) /* write on <var_stream:OStream>*/;
410 RET_LABEL:;
411 }
412 /* method stream#String#write_to for (self: Object, OStream) */
413 void VIRTUAL_stream__String__write_to(val* self, val* p0) {
414 stream__String__write_to(self, p0);
415 RET_LABEL:;
416 }
417 /* method stream#BufferedIStream#read_char for (self: BufferedIStream): Int */
418 long stream__BufferedIStream__read_char(val* self) {
419 long var /* : Int */;
420 short int var1 /* : Bool */;
421 short int var2 /* : Bool */;
422 long var3 /* : Int */;
423 val* var4 /* : nullable Buffer */;
424 long var5 /* : Int */;
425 short int var6 /* : Bool */;
426 short int var8 /* : Bool */;
427 int cltype;
428 int idtype;
429 const char* var_class_name;
430 short int var9 /* : Bool */;
431 long var10 /* : Int */;
432 val* var11 /* : nullable Buffer */;
433 long var12 /* : Int */;
434 short int var13 /* : Bool */;
435 short int var15 /* : Bool */;
436 int cltype16;
437 int idtype17;
438 const char* var_class_name18;
439 short int var19 /* : Bool */;
440 long var20 /* : Int */;
441 long var21 /* : Int */;
442 long var23 /* : Int */;
443 val* var24 /* : nullable Buffer */;
444 val* var25 /* : StringCharView */;
445 long var26 /* : Int */;
446 val* var27 /* : nullable Object */;
447 char var28 /* : Char */;
448 char var_c /* var c: Char */;
449 val* var_ /* var : BufferedIStream */;
450 long var29 /* : Int */;
451 long var30 /* : Int */;
452 long var31 /* : Int */;
453 long var33 /* : Int */;
454 long var34 /* : Int */;
455 long var36 /* : Int */;
456 var1 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:BufferedIStream>*/;
457 var2 = !var1;
458 if (!var2) {
459 fprintf(stderr, "Runtime error: %s", "Assert failed");
460 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 121);
461 show_backtrace(1);
462 }
463 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
464 var4 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
465 if (var4 == NULL) {
466 fprintf(stderr, "Runtime error: %s", "Receiver is null");
467 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 122);
468 show_backtrace(1);
469 } else {
470 var5 = ((long (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__length]))(var4) /* length on <var4:nullable Buffer>*/;
471 }
472 { /* Inline kernel#Int#>= (var3,var5) */
473 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
474 /* <var5:Int> isa OTHER */
475 var8 = 1; /* easy <var5:Int> isa OTHER*/
476 if (!var8) {
477 var_class_name = type_kernel__Int.name;
478 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
479 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
480 show_backtrace(1);
481 }
482 var9 = var3 >= var5;
483 var6 = var9;
484 goto RET_LABEL7;
485 RET_LABEL7:(void)0;
486 }
487 if (var6){
488 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__fill_buffer]))(self) /* fill_buffer on <self:BufferedIStream>*/;
489 } else {
490 }
491 var10 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
492 var11 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
493 if (var11 == NULL) {
494 fprintf(stderr, "Runtime error: %s", "Receiver is null");
495 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 125);
496 show_backtrace(1);
497 } else {
498 var12 = ((long (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__length]))(var11) /* length on <var11:nullable Buffer>*/;
499 }
500 { /* Inline kernel#Int#>= (var10,var12) */
501 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
502 /* <var12:Int> isa OTHER */
503 var15 = 1; /* easy <var12:Int> isa OTHER*/
504 if (!var15) {
505 var_class_name18 = type_kernel__Int.name;
506 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
507 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
508 show_backtrace(1);
509 }
510 var19 = var10 >= var12;
511 var13 = var19;
512 goto RET_LABEL14;
513 RET_LABEL14:(void)0;
514 }
515 if (var13){
516 var20 = 1;
517 { /* Inline kernel#Int#unary - (var20) */
518 var23 = -var20;
519 var21 = var23;
520 goto RET_LABEL22;
521 RET_LABEL22:(void)0;
522 }
523 var = var21;
524 goto RET_LABEL;
525 } else {
526 }
527 var24 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
528 if (var24 == NULL) {
529 fprintf(stderr, "Runtime error: %s", "Receiver is null");
530 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 128);
531 show_backtrace(1);
532 } else {
533 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_string__AbstractString__chars]))(var24) /* chars on <var24:nullable Buffer>*/;
534 }
535 var26 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
536 var27 = ((val* (*)(val*, long))(var25->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var25, var26) /* [] on <var25:StringCharView(BufferCharView)>*/;
537 var28 = ((struct instance_kernel__Char*)var27)->value; /* autounbox from nullable Object to Char */;
538 var_c = var28;
539 var_ = self;
540 var29 = var_->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <var_:BufferedIStream> */
541 var30 = 1;
542 { /* Inline kernel#Int#+ (var29,var30) */
543 var33 = var29 + var30;
544 var31 = var33;
545 goto RET_LABEL32;
546 RET_LABEL32:(void)0;
547 }
548 var_->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var31; /* _buffer_pos on <var_:BufferedIStream> */
549 { /* Inline kernel#Char#ascii (var_c) */
550 var36 = (unsigned char)var_c;
551 var34 = var36;
552 goto RET_LABEL35;
553 RET_LABEL35:(void)0;
554 }
555 var = var34;
556 goto RET_LABEL;
557 RET_LABEL:;
558 return var;
559 }
560 /* method stream#BufferedIStream#read_char for (self: Object): Int */
561 long VIRTUAL_stream__BufferedIStream__read_char(val* self) {
562 long var /* : Int */;
563 long var1 /* : Int */;
564 var1 = stream__BufferedIStream__read_char(self);
565 var = var1;
566 RET_LABEL:;
567 return var;
568 }
569 /* method stream#BufferedIStream#read for (self: BufferedIStream, Int): String */
570 val* stream__BufferedIStream__read(val* self, long p0) {
571 val* var /* : String */;
572 long var_i /* var i: Int */;
573 val* var1 /* : Buffer */;
574 val* var_s /* var s: Buffer */;
575 long var2 /* : Int */;
576 long var_j /* var j: Int */;
577 val* var3 /* : nullable Buffer */;
578 long var4 /* : Int */;
579 long var_k /* var k: Int */;
580 long var5 /* : Int */;
581 short int var6 /* : Bool */;
582 short int var8 /* : Bool */;
583 int cltype;
584 int idtype;
585 const char* var_class_name;
586 short int var9 /* : Bool */;
587 short int var10 /* : Bool */;
588 short int var12 /* : Bool */;
589 int cltype13;
590 int idtype14;
591 const char* var_class_name15;
592 short int var16 /* : Bool */;
593 short int var17 /* : Bool */;
594 val* var18 /* : String */;
595 long var19 /* : Int */;
596 val* var20 /* : nullable Buffer */;
597 long var21 /* : Int */;
598 short int var22 /* : Bool */;
599 short int var23 /* : Bool */;
600 short int var25 /* : Bool */;
601 int cltype26;
602 int idtype27;
603 const char* var_class_name28;
604 short int var29 /* : Bool */;
605 short int var_ /* var : Bool */;
606 long var30 /* : Int */;
607 short int var31 /* : Bool */;
608 short int var33 /* : Bool */;
609 int cltype34;
610 int idtype35;
611 const char* var_class_name36;
612 short int var37 /* : Bool */;
613 val* var38 /* : nullable Buffer */;
614 val* var39 /* : StringCharView */;
615 val* var40 /* : nullable Object */;
616 long var41 /* : Int */;
617 long var42 /* : Int */;
618 long var44 /* : Int */;
619 long var45 /* : Int */;
620 long var46 /* : Int */;
621 long var48 /* : Int */;
622 val* var50 /* : String */;
623 var_i = p0;
624 var1 = NEW_string__Buffer(&type_string__Buffer);
625 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var_i) /* with_capacity on <var1:Buffer>*/;
626 var_s = var1;
627 var2 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
628 var_j = var2;
629 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
630 if (var3 == NULL) {
631 fprintf(stderr, "Runtime error: %s", "Receiver is null");
632 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 137);
633 show_backtrace(1);
634 } else {
635 var4 = ((long (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__length]))(var3) /* length on <var3:nullable Buffer>*/;
636 }
637 var_k = var4;
638 for(;;) {
639 var5 = 0;
640 { /* Inline kernel#Int#> (var_i,var5) */
641 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
642 /* <var5:Int> isa OTHER */
643 var8 = 1; /* easy <var5:Int> isa OTHER*/
644 if (!var8) {
645 var_class_name = type_kernel__Int.name;
646 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
647 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
648 show_backtrace(1);
649 }
650 var9 = var_i > var5;
651 var6 = var9;
652 goto RET_LABEL7;
653 RET_LABEL7:(void)0;
654 }
655 if (!var6) break;
656 { /* Inline kernel#Int#>= (var_j,var_k) */
657 /* Covariant cast for argument 0 (i) <var_k:Int> isa OTHER */
658 /* <var_k:Int> isa OTHER */
659 var12 = 1; /* easy <var_k:Int> isa OTHER*/
660 if (!var12) {
661 var_class_name15 = type_kernel__Int.name;
662 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
663 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
664 show_backtrace(1);
665 }
666 var16 = var_j >= var_k;
667 var10 = var16;
668 goto RET_LABEL11;
669 RET_LABEL11:(void)0;
670 }
671 if (var10){
672 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__fill_buffer]))(self) /* fill_buffer on <self:BufferedIStream>*/;
673 var17 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:BufferedIStream>*/;
674 if (var17){
675 var18 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
676 var = var18;
677 goto RET_LABEL;
678 } else {
679 }
680 var19 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
681 var_j = var19;
682 var20 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
683 if (var20 == NULL) {
684 fprintf(stderr, "Runtime error: %s", "Receiver is null");
685 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 143);
686 show_backtrace(1);
687 } else {
688 var21 = ((long (*)(val*))(var20->class->vft[COLOR_abstract_collection__Collection__length]))(var20) /* length on <var20:nullable Buffer>*/;
689 }
690 var_k = var21;
691 } else {
692 }
693 for(;;) {
694 { /* Inline kernel#Int#< (var_j,var_k) */
695 /* Covariant cast for argument 0 (i) <var_k:Int> isa OTHER */
696 /* <var_k:Int> isa OTHER */
697 var25 = 1; /* easy <var_k:Int> isa OTHER*/
698 if (!var25) {
699 var_class_name28 = type_kernel__Int.name;
700 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
701 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
702 show_backtrace(1);
703 }
704 var29 = var_j < var_k;
705 var23 = var29;
706 goto RET_LABEL24;
707 RET_LABEL24:(void)0;
708 }
709 var_ = var23;
710 if (var23){
711 var30 = 0;
712 { /* Inline kernel#Int#> (var_i,var30) */
713 /* Covariant cast for argument 0 (i) <var30:Int> isa OTHER */
714 /* <var30:Int> isa OTHER */
715 var33 = 1; /* easy <var30:Int> isa OTHER*/
716 if (!var33) {
717 var_class_name36 = type_kernel__Int.name;
718 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name36);
719 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
720 show_backtrace(1);
721 }
722 var37 = var_i > var30;
723 var31 = var37;
724 goto RET_LABEL32;
725 RET_LABEL32:(void)0;
726 }
727 var22 = var31;
728 } else {
729 var22 = var_;
730 }
731 if (!var22) break;
732 var38 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
733 if (var38 == NULL) {
734 fprintf(stderr, "Runtime error: %s", "Receiver is null");
735 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 146);
736 show_backtrace(1);
737 } else {
738 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_string__AbstractString__chars]))(var38) /* chars on <var38:nullable Buffer>*/;
739 }
740 var40 = ((val* (*)(val*, long))(var39->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var39, var_j) /* [] on <var39:StringCharView(BufferCharView)>*/;
741 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var40) /* add on <var_s:Buffer>*/;
742 var41 = 1;
743 { /* Inline kernel#Int#+ (var_j,var41) */
744 var44 = var_j + var41;
745 var42 = var44;
746 goto RET_LABEL43;
747 RET_LABEL43:(void)0;
748 }
749 var_j = var42;
750 var45 = 1;
751 { /* Inline kernel#Int#- (var_i,var45) */
752 var48 = var_i - var45;
753 var46 = var48;
754 goto RET_LABEL47;
755 RET_LABEL47:(void)0;
756 }
757 var_i = var46;
758 CONTINUE_label: (void)0;
759 }
760 BREAK_label: (void)0;
761 CONTINUE_label49: (void)0;
762 }
763 BREAK_label49: (void)0;
764 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var_j; /* _buffer_pos on <self:BufferedIStream> */
765 var50 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
766 var = var50;
767 goto RET_LABEL;
768 RET_LABEL:;
769 return var;
770 }
771 /* method stream#BufferedIStream#read for (self: Object, Int): String */
772 val* VIRTUAL_stream__BufferedIStream__read(val* self, long p0) {
773 val* var /* : String */;
774 val* var1 /* : String */;
775 var1 = stream__BufferedIStream__read(self, p0);
776 var = var1;
777 RET_LABEL:;
778 return var;
779 }
780 /* method stream#BufferedIStream#read_all for (self: BufferedIStream): String */
781 val* stream__BufferedIStream__read_all(val* self) {
782 val* var /* : String */;
783 val* var1 /* : Buffer */;
784 val* var_s /* var s: Buffer */;
785 short int var2 /* : Bool */;
786 short int var3 /* : Bool */;
787 long var4 /* : Int */;
788 long var_j /* var j: Int */;
789 val* var5 /* : nullable Buffer */;
790 long var6 /* : Int */;
791 long var_k /* var k: Int */;
792 short int var7 /* : Bool */;
793 short int var9 /* : Bool */;
794 int cltype;
795 int idtype;
796 const char* var_class_name;
797 short int var10 /* : Bool */;
798 val* var11 /* : nullable Buffer */;
799 val* var12 /* : StringCharView */;
800 val* var13 /* : nullable Object */;
801 long var14 /* : Int */;
802 long var15 /* : Int */;
803 long var17 /* : Int */;
804 val* var19 /* : String */;
805 var1 = NEW_string__Buffer(&type_string__Buffer);
806 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
807 var_s = var1;
808 for(;;) {
809 var2 = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:BufferedIStream>*/;
810 var3 = !var2;
811 if (!var3) break;
812 var4 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
813 var_j = var4;
814 var5 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
815 if (var5 == NULL) {
816 fprintf(stderr, "Runtime error: %s", "Receiver is null");
817 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 160);
818 show_backtrace(1);
819 } else {
820 var6 = ((long (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__length]))(var5) /* length on <var5:nullable Buffer>*/;
821 }
822 var_k = var6;
823 for(;;) {
824 { /* Inline kernel#Int#< (var_j,var_k) */
825 /* Covariant cast for argument 0 (i) <var_k:Int> isa OTHER */
826 /* <var_k:Int> isa OTHER */
827 var9 = 1; /* easy <var_k:Int> isa OTHER*/
828 if (!var9) {
829 var_class_name = type_kernel__Int.name;
830 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
831 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
832 show_backtrace(1);
833 }
834 var10 = var_j < var_k;
835 var7 = var10;
836 goto RET_LABEL8;
837 RET_LABEL8:(void)0;
838 }
839 if (!var7) break;
840 var11 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
841 if (var11 == NULL) {
842 fprintf(stderr, "Runtime error: %s", "Receiver is null");
843 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 162);
844 show_backtrace(1);
845 } else {
846 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_string__AbstractString__chars]))(var11) /* chars on <var11:nullable Buffer>*/;
847 }
848 var13 = ((val* (*)(val*, long))(var12->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var12, var_j) /* [] on <var12:StringCharView(BufferCharView)>*/;
849 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var13) /* add on <var_s:Buffer>*/;
850 var14 = 1;
851 { /* Inline kernel#Int#+ (var_j,var14) */
852 var17 = var_j + var14;
853 var15 = var17;
854 goto RET_LABEL16;
855 RET_LABEL16:(void)0;
856 }
857 var_j = var15;
858 CONTINUE_label: (void)0;
859 }
860 BREAK_label: (void)0;
861 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var_j; /* _buffer_pos on <self:BufferedIStream> */
862 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__fill_buffer]))(self) /* fill_buffer on <self:BufferedIStream>*/;
863 CONTINUE_label18: (void)0;
864 }
865 BREAK_label18: (void)0;
866 var19 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
867 var = var19;
868 goto RET_LABEL;
869 RET_LABEL:;
870 return var;
871 }
872 /* method stream#BufferedIStream#read_all for (self: Object): String */
873 val* VIRTUAL_stream__BufferedIStream__read_all(val* self) {
874 val* var /* : String */;
875 val* var1 /* : String */;
876 var1 = stream__BufferedIStream__read_all(self);
877 var = var1;
878 RET_LABEL:;
879 return var;
880 }
881 /* method stream#BufferedIStream#append_line_to for (self: BufferedIStream, Buffer) */
882 void stream__BufferedIStream__append_line_to(val* self, val* p0) {
883 val* var_s /* var s: Buffer */;
884 long var /* : Int */;
885 long var_i /* var i: Int */;
886 short int var1 /* : Bool */;
887 val* var2 /* : nullable Buffer */;
888 long var3 /* : Int */;
889 short int var4 /* : Bool */;
890 short int var6 /* : Bool */;
891 int cltype;
892 int idtype;
893 const char* var_class_name;
894 short int var7 /* : Bool */;
895 short int var_ /* var : Bool */;
896 val* var8 /* : nullable Buffer */;
897 val* var9 /* : StringCharView */;
898 val* var10 /* : nullable Object */;
899 char var11 /* : Char */;
900 short int var12 /* : Bool */;
901 short int var14 /* : Bool */;
902 char var15 /* : Char */;
903 short int var16 /* : Bool */;
904 long var17 /* : Int */;
905 long var18 /* : Int */;
906 long var20 /* : Int */;
907 long var21 /* : Int */;
908 short int var22 /* : Bool */;
909 short int var24 /* : Bool */;
910 int cltype25;
911 int idtype26;
912 const char* var_class_name27;
913 short int var28 /* : Bool */;
914 long var29 /* : Int */;
915 long var30 /* : Int */;
916 long var32 /* : Int */;
917 long var33 /* : Int */;
918 long var34 /* : Int */;
919 long var36 /* : Int */;
920 long var37 /* : Int */;
921 long var_j /* var j: Int */;
922 short int var38 /* : Bool */;
923 short int var40 /* : Bool */;
924 int cltype41;
925 int idtype42;
926 const char* var_class_name43;
927 short int var44 /* : Bool */;
928 val* var45 /* : nullable Buffer */;
929 val* var46 /* : StringCharView */;
930 val* var47 /* : nullable Object */;
931 long var48 /* : Int */;
932 long var49 /* : Int */;
933 long var51 /* : Int */;
934 val* var53 /* : nullable Buffer */;
935 long var54 /* : Int */;
936 short int var55 /* : Bool */;
937 short int var57 /* : Bool */;
938 int cltype58;
939 int idtype59;
940 const char* var_class_name60;
941 short int var61 /* : Bool */;
942 long var62 /* : Int */;
943 long var63 /* : Int */;
944 long var65 /* : Int */;
945 short int var66 /* : Bool */;
946 var_s = p0;
947 for(;;) {
948 var = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
949 var_i = var;
950 for(;;) {
951 var2 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
952 if (var2 == NULL) {
953 fprintf(stderr, "Runtime error: %s", "Receiver is null");
954 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 176);
955 show_backtrace(1);
956 } else {
957 var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:nullable Buffer>*/;
958 }
959 { /* Inline kernel#Int#< (var_i,var3) */
960 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
961 /* <var3:Int> isa OTHER */
962 var6 = 1; /* easy <var3:Int> isa OTHER*/
963 if (!var6) {
964 var_class_name = type_kernel__Int.name;
965 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
966 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
967 show_backtrace(1);
968 }
969 var7 = var_i < var3;
970 var4 = var7;
971 goto RET_LABEL5;
972 RET_LABEL5:(void)0;
973 }
974 var_ = var4;
975 if (var4){
976 var8 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
977 if (var8 == NULL) {
978 fprintf(stderr, "Runtime error: %s", "Receiver is null");
979 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 176);
980 show_backtrace(1);
981 } else {
982 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_string__AbstractString__chars]))(var8) /* chars on <var8:nullable Buffer>*/;
983 }
984 var10 = ((val* (*)(val*, long))(var9->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var9, var_i) /* [] on <var9:StringCharView(BufferCharView)>*/;
985 var11 = '\n';
986 { /* Inline kernel#Char#!= (var10,var11) */
987 var14 = (var10 != NULL) && (var10->class == &class_kernel__Char);
988 if (var14) {
989 var15 = ((struct instance_kernel__Char*)var10)->value; /* autounbox from nullable Object to Char */;
990 var14 = (var15 == var11);
991 }
992 var16 = !var14;
993 var12 = var16;
994 goto RET_LABEL13;
995 RET_LABEL13:(void)0;
996 }
997 var1 = var12;
998 } else {
999 var1 = var_;
1000 }
1001 if (!var1) break;
1002 var17 = 1;
1003 { /* Inline kernel#Int#+ (var_i,var17) */
1004 var20 = var_i + var17;
1005 var18 = var20;
1006 goto RET_LABEL19;
1007 RET_LABEL19:(void)0;
1008 }
1009 var_i = var18;
1010 CONTINUE_label: (void)0;
1011 }
1012 BREAK_label: (void)0;
1013 var21 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
1014 { /* Inline kernel#Int#> (var_i,var21) */
1015 /* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
1016 /* <var21:Int> isa OTHER */
1017 var24 = 1; /* easy <var21:Int> isa OTHER*/
1018 if (!var24) {
1019 var_class_name27 = type_kernel__Int.name;
1020 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
1021 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
1022 show_backtrace(1);
1023 }
1024 var28 = var_i > var21;
1025 var22 = var28;
1026 goto RET_LABEL23;
1027 RET_LABEL23:(void)0;
1028 }
1029 if (var22){
1030 var29 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:Buffer>*/;
1031 { /* Inline kernel#Int#+ (var29,var_i) */
1032 var32 = var29 + var_i;
1033 var30 = var32;
1034 goto RET_LABEL31;
1035 RET_LABEL31:(void)0;
1036 }
1037 var33 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
1038 { /* Inline kernel#Int#- (var30,var33) */
1039 var36 = var30 - var33;
1040 var34 = var36;
1041 goto RET_LABEL35;
1042 RET_LABEL35:(void)0;
1043 }
1044 ((void (*)(val*, long))(var_s->class->vft[COLOR_array__AbstractArray__enlarge]))(var_s, var34) /* enlarge on <var_s:Buffer>*/;
1045 var37 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
1046 var_j = var37;
1047 for(;;) {
1048 { /* Inline kernel#Int#< (var_j,var_i) */
1049 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
1050 /* <var_i:Int> isa OTHER */
1051 var40 = 1; /* easy <var_i:Int> isa OTHER*/
1052 if (!var40) {
1053 var_class_name43 = type_kernel__Int.name;
1054 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
1055 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1056 show_backtrace(1);
1057 }
1058 var44 = var_j < var_i;
1059 var38 = var44;
1060 goto RET_LABEL39;
1061 RET_LABEL39:(void)0;
1062 }
1063 if (!var38) break;
1064 var45 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
1065 if (var45 == NULL) {
1066 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1067 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 186);
1068 show_backtrace(1);
1069 } else {
1070 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_string__AbstractString__chars]))(var45) /* chars on <var45:nullable Buffer>*/;
1071 }
1072 var47 = ((val* (*)(val*, long))(var46->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var46, var_j) /* [] on <var46:StringCharView(BufferCharView)>*/;
1073 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var47) /* add on <var_s:Buffer>*/;
1074 var48 = 1;
1075 { /* Inline kernel#Int#+ (var_j,var48) */
1076 var51 = var_j + var48;
1077 var49 = var51;
1078 goto RET_LABEL50;
1079 RET_LABEL50:(void)0;
1080 }
1081 var_j = var49;
1082 CONTINUE_label52: (void)0;
1083 }
1084 BREAK_label52: (void)0;
1085 } else {
1086 }
1087 var53 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
1088 if (var53 == NULL) {
1089 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1090 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 191);
1091 show_backtrace(1);
1092 } else {
1093 var54 = ((long (*)(val*))(var53->class->vft[COLOR_abstract_collection__Collection__length]))(var53) /* length on <var53:nullable Buffer>*/;
1094 }
1095 { /* Inline kernel#Int#< (var_i,var54) */
1096 /* Covariant cast for argument 0 (i) <var54:Int> isa OTHER */
1097 /* <var54:Int> isa OTHER */
1098 var57 = 1; /* easy <var54:Int> isa OTHER*/
1099 if (!var57) {
1100 var_class_name60 = type_kernel__Int.name;
1101 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
1102 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1103 show_backtrace(1);
1104 }
1105 var61 = var_i < var54;
1106 var55 = var61;
1107 goto RET_LABEL56;
1108 RET_LABEL56:(void)0;
1109 }
1110 if (var55){
1111 var62 = 1;
1112 { /* Inline kernel#Int#+ (var_i,var62) */
1113 var65 = var_i + var62;
1114 var63 = var65;
1115 goto RET_LABEL64;
1116 RET_LABEL64:(void)0;
1117 }
1118 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var63; /* _buffer_pos on <self:BufferedIStream> */
1119 goto RET_LABEL;
1120 } else {
1121 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var_i; /* _buffer_pos on <self:BufferedIStream> */
1122 var66 = ((short int (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__end_reached]))(self) /* end_reached on <self:BufferedIStream>*/;
1123 if (var66){
1124 goto RET_LABEL;
1125 } else {
1126 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__fill_buffer]))(self) /* fill_buffer on <self:BufferedIStream>*/;
1127 }
1128 }
1129 CONTINUE_label67: (void)0;
1130 }
1131 BREAK_label67: (void)0;
1132 RET_LABEL:;
1133 }
1134 /* method stream#BufferedIStream#append_line_to for (self: Object, Buffer) */
1135 void VIRTUAL_stream__BufferedIStream__append_line_to(val* self, val* p0) {
1136 stream__BufferedIStream__append_line_to(self, p0);
1137 RET_LABEL:;
1138 }
1139 /* method stream#BufferedIStream#eof for (self: BufferedIStream): Bool */
1140 short int stream__BufferedIStream__eof(val* self) {
1141 short int var /* : Bool */;
1142 short int var1 /* : Bool */;
1143 long var2 /* : Int */;
1144 val* var3 /* : nullable Buffer */;
1145 long var4 /* : Int */;
1146 short int var5 /* : Bool */;
1147 short int var7 /* : Bool */;
1148 int cltype;
1149 int idtype;
1150 const char* var_class_name;
1151 short int var8 /* : Bool */;
1152 short int var_ /* var : Bool */;
1153 short int var9 /* : Bool */;
1154 var2 = self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l; /* _buffer_pos on <self:BufferedIStream> */
1155 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:BufferedIStream> */
1156 if (var3 == NULL) {
1157 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1158 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 207);
1159 show_backtrace(1);
1160 } else {
1161 var4 = ((long (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__length]))(var3) /* length on <var3:nullable Buffer>*/;
1162 }
1163 { /* Inline kernel#Int#>= (var2,var4) */
1164 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1165 /* <var4:Int> isa OTHER */
1166 var7 = 1; /* easy <var4:Int> isa OTHER*/
1167 if (!var7) {
1168 var_class_name = type_kernel__Int.name;
1169 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1170 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1171 show_backtrace(1);
1172 }
1173 var8 = var2 >= var4;
1174 var5 = var8;
1175 goto RET_LABEL6;
1176 RET_LABEL6:(void)0;
1177 }
1178 var_ = var5;
1179 if (var5){
1180 var9 = ((short int (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__end_reached]))(self) /* end_reached on <self:BufferedIStream>*/;
1181 var1 = var9;
1182 } else {
1183 var1 = var_;
1184 }
1185 var = var1;
1186 goto RET_LABEL;
1187 RET_LABEL:;
1188 return var;
1189 }
1190 /* method stream#BufferedIStream#eof for (self: Object): Bool */
1191 short int VIRTUAL_stream__BufferedIStream__eof(val* self) {
1192 short int var /* : Bool */;
1193 short int var1 /* : Bool */;
1194 var1 = stream__BufferedIStream__eof(self);
1195 var = var1;
1196 RET_LABEL:;
1197 return var;
1198 }
1199 /* method stream#BufferedIStream#fill_buffer for (self: BufferedIStream) */
1200 void stream__BufferedIStream__fill_buffer(val* self) {
1201 const char* var_class_name;
1202 var_class_name = self == NULL ? "null" : self->type->name;
1203 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "fill_buffer", var_class_name);
1204 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 215);
1205 show_backtrace(1);
1206 RET_LABEL:;
1207 }
1208 /* method stream#BufferedIStream#fill_buffer for (self: Object) */
1209 void VIRTUAL_stream__BufferedIStream__fill_buffer(val* self) {
1210 stream__BufferedIStream__fill_buffer(self);
1211 RET_LABEL:;
1212 }
1213 /* method stream#BufferedIStream#end_reached for (self: BufferedIStream): Bool */
1214 short int stream__BufferedIStream__end_reached(val* self) {
1215 short int var /* : Bool */;
1216 const char* var_class_name;
1217 var_class_name = self == NULL ? "null" : self->type->name;
1218 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "end_reached", var_class_name);
1219 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 218);
1220 show_backtrace(1);
1221 RET_LABEL:;
1222 return var;
1223 }
1224 /* method stream#BufferedIStream#end_reached for (self: Object): Bool */
1225 short int VIRTUAL_stream__BufferedIStream__end_reached(val* self) {
1226 short int var /* : Bool */;
1227 short int var1 /* : Bool */;
1228 var1 = stream__BufferedIStream__end_reached(self);
1229 var = var1;
1230 RET_LABEL:;
1231 return var;
1232 }
1233 /* method stream#BufferedIStream#prepare_buffer for (self: BufferedIStream, Int) */
1234 void stream__BufferedIStream__prepare_buffer(val* self, long p0) {
1235 long var_capacity /* var capacity: Int */;
1236 val* var /* : Buffer */;
1237 long var1 /* : Int */;
1238 var_capacity = p0;
1239 var = NEW_string__Buffer(&type_string__Buffer);
1240 ((void (*)(val*, long))(var->class->vft[COLOR_string__Buffer__with_capacity]))(var, var_capacity) /* with_capacity on <var:Buffer>*/;
1241 self->attrs[COLOR_stream__BufferedIStream___buffer].val = var; /* _buffer on <self:BufferedIStream> */
1242 var1 = 0;
1243 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var1; /* _buffer_pos on <self:BufferedIStream> */
1244 RET_LABEL:;
1245 }
1246 /* method stream#BufferedIStream#prepare_buffer for (self: Object, Int) */
1247 void VIRTUAL_stream__BufferedIStream__prepare_buffer(val* self, long p0) {
1248 stream__BufferedIStream__prepare_buffer(self, p0);
1249 RET_LABEL:;
1250 }
1251 /* method stream#BufferedIStream#init for (self: BufferedIStream) */
1252 void stream__BufferedIStream__init(val* self) {
1253 RET_LABEL:;
1254 }
1255 /* method stream#BufferedIStream#init for (self: Object) */
1256 void VIRTUAL_stream__BufferedIStream__init(val* self) {
1257 stream__BufferedIStream__init(self);
1258 RET_LABEL:;
1259 }
1260 /* method stream#FDStream#fd for (self: FDStream): Int */
1261 long stream__FDStream__fd(val* self) {
1262 long var /* : Int */;
1263 long var1 /* : Int */;
1264 var1 = self->attrs[COLOR_stream__FDStream___64dfd].l; /* @fd on <self:FDStream> */
1265 var = var1;
1266 RET_LABEL:;
1267 return var;
1268 }
1269 /* method stream#FDStream#fd for (self: Object): Int */
1270 long VIRTUAL_stream__FDStream__fd(val* self) {
1271 long var /* : Int */;
1272 long var1 /* : Int */;
1273 var1 = stream__FDStream__fd(self);
1274 var = var1;
1275 RET_LABEL:;
1276 return var;
1277 }
1278 /* method stream#FDStream#fd= for (self: FDStream, Int) */
1279 void stream__FDStream__fd_61d(val* self, long p0) {
1280 self->attrs[COLOR_stream__FDStream___64dfd].l = p0; /* @fd on <self:FDStream> */
1281 RET_LABEL:;
1282 }
1283 /* method stream#FDStream#fd= for (self: Object, Int) */
1284 void VIRTUAL_stream__FDStream__fd_61d(val* self, long p0) {
1285 stream__FDStream__fd_61d(self, p0);
1286 RET_LABEL:;
1287 }
1288 /* method stream#FDStream#close for (self: FDStream) */
1289 void stream__FDStream__close(val* self) {
1290 long var /* : Int */;
1291 long var1 /* : Int */;
1292 var = ((long (*)(val*))(self->class->vft[COLOR_stream__FDStream__fd]))(self) /* fd on <self:FDStream>*/;
1293 var1 = ((long (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__native_close]))(self, var) /* native_close on <self:FDStream>*/;
1294 var1;
1295 RET_LABEL:;
1296 }
1297 /* method stream#FDStream#close for (self: Object) */
1298 void VIRTUAL_stream__FDStream__close(val* self) {
1299 stream__FDStream__close(self);
1300 RET_LABEL:;
1301 }
1302 /* method stream#FDStream#native_close for (self: FDStream, Int): Int */
1303 long stream__FDStream__native_close(val* self, long p0) {
1304 long var /* : Int */;
1305 long var1 /* : Int */;
1306 var1 = stream_FDStream_FDStream_native_close_1(self, p0);
1307 var = var1;
1308 goto RET_LABEL;
1309 RET_LABEL:;
1310 return var;
1311 }
1312 /* method stream#FDStream#native_close for (self: Object, Int): Int */
1313 long VIRTUAL_stream__FDStream__native_close(val* self, long p0) {
1314 long var /* : Int */;
1315 long var1 /* : Int */;
1316 var1 = stream__FDStream__native_close(self, p0);
1317 var = var1;
1318 RET_LABEL:;
1319 return var;
1320 }
1321 /* method stream#FDStream#native_read_char for (self: FDStream, Int): Int */
1322 long stream__FDStream__native_read_char(val* self, long p0) {
1323 long var /* : Int */;
1324 long var1 /* : Int */;
1325 var1 = stream_FDStream_FDStream_native_read_char_1(self, p0);
1326 var = var1;
1327 goto RET_LABEL;
1328 RET_LABEL:;
1329 return var;
1330 }
1331 /* method stream#FDStream#native_read_char for (self: Object, Int): Int */
1332 long VIRTUAL_stream__FDStream__native_read_char(val* self, long p0) {
1333 long var /* : Int */;
1334 long var1 /* : Int */;
1335 var1 = stream__FDStream__native_read_char(self, p0);
1336 var = var1;
1337 RET_LABEL:;
1338 return var;
1339 }
1340 /* method stream#FDStream#native_read for (self: FDStream, Int, NativeString, Int): Int */
1341 long stream__FDStream__native_read(val* self, long p0, char* p1, long p2) {
1342 long var /* : Int */;
1343 long var1 /* : Int */;
1344 var1 = stream_FDStream_FDStream_native_read_3(self, p0, p1, p2);
1345 var = var1;
1346 goto RET_LABEL;
1347 RET_LABEL:;
1348 return var;
1349 }
1350 /* method stream#FDStream#native_read for (self: Object, Int, NativeString, Int): Int */
1351 long VIRTUAL_stream__FDStream__native_read(val* self, long p0, char* p1, long p2) {
1352 long var /* : Int */;
1353 long var1 /* : Int */;
1354 var1 = stream__FDStream__native_read(self, p0, p1, p2);
1355 var = var1;
1356 RET_LABEL:;
1357 return var;
1358 }
1359 /* method stream#FDStream#native_write for (self: FDStream, Int, NativeString, Int): Int */
1360 long stream__FDStream__native_write(val* self, long p0, char* p1, long p2) {
1361 long var /* : Int */;
1362 long var1 /* : Int */;
1363 var1 = stream_FDStream_FDStream_native_write_3(self, p0, p1, p2);
1364 var = var1;
1365 goto RET_LABEL;
1366 RET_LABEL:;
1367 return var;
1368 }
1369 /* method stream#FDStream#native_write for (self: Object, Int, NativeString, Int): Int */
1370 long VIRTUAL_stream__FDStream__native_write(val* self, long p0, char* p1, long p2) {
1371 long var /* : Int */;
1372 long var1 /* : Int */;
1373 var1 = stream__FDStream__native_write(self, p0, p1, p2);
1374 var = var1;
1375 RET_LABEL:;
1376 return var;
1377 }
1378 /* method stream#FDStream#native_write_char for (self: FDStream, Int, Char): Int */
1379 long stream__FDStream__native_write_char(val* self, long p0, char p1) {
1380 long var /* : Int */;
1381 long var1 /* : Int */;
1382 var1 = stream_FDStream_FDStream_native_write_char_2(self, p0, p1);
1383 var = var1;
1384 goto RET_LABEL;
1385 RET_LABEL:;
1386 return var;
1387 }
1388 /* method stream#FDStream#native_write_char for (self: Object, Int, Char): Int */
1389 long VIRTUAL_stream__FDStream__native_write_char(val* self, long p0, char p1) {
1390 long var /* : Int */;
1391 long var1 /* : Int */;
1392 var1 = stream__FDStream__native_write_char(self, p0, p1);
1393 var = var1;
1394 RET_LABEL:;
1395 return var;
1396 }
1397 /* method stream#FDStream#init for (self: FDStream, Int) */
1398 void stream__FDStream__init(val* self, long p0) {
1399 long var_fd /* var fd: Int */;
1400 var_fd = p0;
1401 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__fd_61d]))(self, var_fd) /* fd= on <self:FDStream>*/;
1402 RET_LABEL:;
1403 }
1404 /* method stream#FDStream#init for (self: Object, Int) */
1405 void VIRTUAL_stream__FDStream__init(val* self, long p0) {
1406 stream__FDStream__init(self, p0);
1407 RET_LABEL:;
1408 }
1409 /* method stream#FDIStream#eof for (self: FDIStream): Bool */
1410 short int stream__FDIStream__eof(val* self) {
1411 short int var /* : Bool */;
1412 short int var1 /* : Bool */;
1413 var1 = self->attrs[COLOR_stream__FDIStream___64deof].s; /* @eof on <self:FDIStream> */
1414 var = var1;
1415 RET_LABEL:;
1416 return var;
1417 }
1418 /* method stream#FDIStream#eof for (self: Object): Bool */
1419 short int VIRTUAL_stream__FDIStream__eof(val* self) {
1420 short int var /* : Bool */;
1421 short int var1 /* : Bool */;
1422 var1 = stream__FDIStream__eof(self);
1423 var = var1;
1424 RET_LABEL:;
1425 return var;
1426 }
1427 /* method stream#FDIStream#eof= for (self: FDIStream, Bool) */
1428 void stream__FDIStream__eof_61d(val* self, short int p0) {
1429 self->attrs[COLOR_stream__FDIStream___64deof].s = p0; /* @eof on <self:FDIStream> */
1430 RET_LABEL:;
1431 }
1432 /* method stream#FDIStream#eof= for (self: Object, Bool) */
1433 void VIRTUAL_stream__FDIStream__eof_61d(val* self, short int p0) {
1434 stream__FDIStream__eof_61d(self, p0);
1435 RET_LABEL:;
1436 }
1437 /* method stream#FDIStream#read_char for (self: FDIStream): Int */
1438 long stream__FDIStream__read_char(val* self) {
1439 long var /* : Int */;
1440 long var1 /* : Int */;
1441 long var2 /* : Int */;
1442 long var_nb /* var nb: Int */;
1443 long var3 /* : Int */;
1444 long var4 /* : Int */;
1445 long var6 /* : Int */;
1446 short int var7 /* : Bool */;
1447 short int var9 /* : Bool */;
1448 short int var10 /* : Bool */;
1449 var1 = ((long (*)(val*))(self->class->vft[COLOR_stream__FDStream__fd]))(self) /* fd on <self:FDIStream>*/;
1450 var2 = ((long (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__native_read_char]))(self, var1) /* native_read_char on <self:FDIStream>*/;
1451 var_nb = var2;
1452 var3 = 1;
1453 { /* Inline kernel#Int#unary - (var3) */
1454 var6 = -var3;
1455 var4 = var6;
1456 goto RET_LABEL5;
1457 RET_LABEL5:(void)0;
1458 }
1459 { /* Inline kernel#Int#== (var_nb,var4) */
1460 var9 = var_nb == var4;
1461 var7 = var9;
1462 goto RET_LABEL8;
1463 RET_LABEL8:(void)0;
1464 }
1465 if (var7){
1466 var10 = 1;
1467 ((void (*)(val*, short int))(self->class->vft[COLOR_stream__FDIStream__eof_61d]))(self, var10) /* eof= on <self:FDIStream>*/;
1468 } else {
1469 }
1470 var = var_nb;
1471 goto RET_LABEL;
1472 RET_LABEL:;
1473 return var;
1474 }
1475 /* method stream#FDIStream#read_char for (self: Object): Int */
1476 long VIRTUAL_stream__FDIStream__read_char(val* self) {
1477 long var /* : Int */;
1478 long var1 /* : Int */;
1479 var1 = stream__FDIStream__read_char(self);
1480 var = var1;
1481 RET_LABEL:;
1482 return var;
1483 }
1484 /* method stream#FDIStream#init for (self: FDIStream, Int) */
1485 void stream__FDIStream__init(val* self, long p0) {
1486 long var_fd /* var fd: Int */;
1487 var_fd = p0;
1488 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__init]))(self, p0) /* init on <self:FDIStream>*/;
1489 RET_LABEL:;
1490 }
1491 /* method stream#FDIStream#init for (self: Object, Int) */
1492 void VIRTUAL_stream__FDIStream__init(val* self, long p0) {
1493 stream__FDIStream__init(self, p0);
1494 RET_LABEL:;
1495 }
1496 /* method stream#FDOStream#is_writable for (self: FDOStream): Bool */
1497 short int stream__FDOStream__is_writable(val* self) {
1498 short int var /* : Bool */;
1499 short int var1 /* : Bool */;
1500 var1 = self->attrs[COLOR_stream__FDOStream___64dis_writable].s; /* @is_writable on <self:FDOStream> */
1501 var = var1;
1502 RET_LABEL:;
1503 return var;
1504 }
1505 /* method stream#FDOStream#is_writable for (self: Object): Bool */
1506 short int VIRTUAL_stream__FDOStream__is_writable(val* self) {
1507 short int var /* : Bool */;
1508 short int var1 /* : Bool */;
1509 var1 = stream__FDOStream__is_writable(self);
1510 var = var1;
1511 RET_LABEL:;
1512 return var;
1513 }
1514 /* method stream#FDOStream#is_writable= for (self: FDOStream, Bool) */
1515 void stream__FDOStream__is_writable_61d(val* self, short int p0) {
1516 self->attrs[COLOR_stream__FDOStream___64dis_writable].s = p0; /* @is_writable on <self:FDOStream> */
1517 RET_LABEL:;
1518 }
1519 /* method stream#FDOStream#is_writable= for (self: Object, Bool) */
1520 void VIRTUAL_stream__FDOStream__is_writable_61d(val* self, short int p0) {
1521 stream__FDOStream__is_writable_61d(self, p0);
1522 RET_LABEL:;
1523 }
1524 /* method stream#FDOStream#write for (self: FDOStream, String) */
1525 void stream__FDOStream__write(val* self, val* p0) {
1526 val* var_s /* var s: String */;
1527 long var /* : Int */;
1528 char* var1 /* : NativeString */;
1529 long var2 /* : Int */;
1530 long var3 /* : Int */;
1531 long var_nb /* var nb: Int */;
1532 long var4 /* : Int */;
1533 short int var5 /* : Bool */;
1534 short int var7 /* : Bool */;
1535 int cltype;
1536 int idtype;
1537 const char* var_class_name;
1538 short int var8 /* : Bool */;
1539 short int var9 /* : Bool */;
1540 var_s = p0;
1541 var = ((long (*)(val*))(self->class->vft[COLOR_stream__FDStream__fd]))(self) /* fd on <self:FDOStream>*/;
1542 var1 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__String__to_cstring]))(var_s) /* to_cstring on <var_s:String>*/;
1543 var2 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
1544 var3 = ((long (*)(val*, long, char*, long))(self->class->vft[COLOR_stream__FDStream__native_write]))(self, var, var1, var2) /* native_write on <self:FDOStream>*/;
1545 var_nb = var3;
1546 var4 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
1547 { /* Inline kernel#Int#< (var_nb,var4) */
1548 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1549 /* <var4:Int> isa OTHER */
1550 var7 = 1; /* easy <var4:Int> isa OTHER*/
1551 if (!var7) {
1552 var_class_name = type_kernel__Int.name;
1553 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1554 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1555 show_backtrace(1);
1556 }
1557 var8 = var_nb < var4;
1558 var5 = var8;
1559 goto RET_LABEL6;
1560 RET_LABEL6:(void)0;
1561 }
1562 if (var5){
1563 var9 = 0;
1564 ((void (*)(val*, short int))(self->class->vft[COLOR_stream__FDOStream__is_writable_61d]))(self, var9) /* is_writable= on <self:FDOStream>*/;
1565 } else {
1566 }
1567 RET_LABEL:;
1568 }
1569 /* method stream#FDOStream#write for (self: Object, String) */
1570 void VIRTUAL_stream__FDOStream__write(val* self, val* p0) {
1571 stream__FDOStream__write(self, p0);
1572 RET_LABEL:;
1573 }
1574 /* method stream#FDOStream#init for (self: FDOStream, Int) */
1575 void stream__FDOStream__init(val* self, long p0) {
1576 long var_fd /* var fd: Int */;
1577 short int var /* : Bool */;
1578 var_fd = p0;
1579 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__init]))(self, p0) /* init on <self:FDOStream>*/;
1580 var = 1;
1581 ((void (*)(val*, short int))(self->class->vft[COLOR_stream__FDOStream__is_writable_61d]))(self, var) /* is_writable= on <self:FDOStream>*/;
1582 RET_LABEL:;
1583 }
1584 /* method stream#FDOStream#init for (self: Object, Int) */
1585 void VIRTUAL_stream__FDOStream__init(val* self, long p0) {
1586 stream__FDOStream__init(self, p0);
1587 RET_LABEL:;
1588 }
1589 /* method stream#FDIOStream#init for (self: FDIOStream, Int) */
1590 void stream__FDIOStream__init(val* self, long p0) {
1591 long var_fd /* var fd: Int */;
1592 short int var /* : Bool */;
1593 var_fd = p0;
1594 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDIStream__init]))(self, p0) /* init on <self:FDIOStream>*/;
1595 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDOStream__init]))(self, p0) /* init on <self:FDIOStream>*/;
1596 ((void (*)(val*, long))(self->class->vft[COLOR_stream__FDStream__fd_61d]))(self, var_fd) /* fd= on <self:FDIOStream>*/;
1597 var = 1;
1598 ((void (*)(val*, short int))(self->class->vft[COLOR_stream__FDOStream__is_writable_61d]))(self, var) /* is_writable= on <self:FDIOStream>*/;
1599 RET_LABEL:;
1600 }
1601 /* method stream#FDIOStream#init for (self: Object, Int) */
1602 void VIRTUAL_stream__FDIOStream__init(val* self, long p0) {
1603 stream__FDIOStream__init(self, p0);
1604 RET_LABEL:;
1605 }
1606 /* method stream#Object#poll for (self: Object, Sequence[FDStream]): nullable FDStream */
1607 val* stream__Object__poll(val* self, val* p0) {
1608 val* var /* : nullable FDStream */;
1609 val* var_streams /* var streams: Sequence[FDStream] */;
1610 val* var1 /* : Array[Int] */;
1611 val* var_in_fds /* var in_fds: Array[Int] */;
1612 val* var2 /* : Array[Int] */;
1613 val* var_out_fds /* var out_fds: Array[Int] */;
1614 val* var3 /* : HashMap[Int, FDStream] */;
1615 val* var_fd_to_stream /* var fd_to_stream: HashMap[Int, FDStream] */;
1616 val* var4 /* : Iterator[nullable Object] */;
1617 short int var5 /* : Bool */;
1618 val* var6 /* : nullable Object */;
1619 val* var_s /* var s: FDStream */;
1620 long var7 /* : Int */;
1621 long var_fd /* var fd: Int */;
1622 short int var8 /* : Bool */;
1623 int cltype;
1624 int idtype;
1625 val* var9 /* : nullable Object */;
1626 short int var10 /* : Bool */;
1627 int cltype11;
1628 int idtype12;
1629 val* var13 /* : nullable Object */;
1630 val* var14 /* : Object */;
1631 val* var15 /* : nullable Int */;
1632 val* var_polled_fd /* var polled_fd: nullable Int */;
1633 val* var16 /* : null */;
1634 short int var17 /* : Bool */;
1635 val* var18 /* : null */;
1636 val* var19 /* : nullable Object */;
1637 var_streams = p0;
1638 var1 = NEW_array__Array(&type_array__Arraykernel__Int);
1639 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[Int]>*/;
1640 var_in_fds = var1;
1641 var2 = NEW_array__Array(&type_array__Arraykernel__Int);
1642 ((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Int]>*/;
1643 var_out_fds = var2;
1644 var3 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapkernel__Intstream__FDStream);
1645 ((void (*)(val*))(var3->class->vft[COLOR_hash_collection__HashMap__init]))(var3) /* init on <var3:HashMap[Int, FDStream]>*/;
1646 var_fd_to_stream = var3;
1647 var4 = ((val* (*)(val*))(var_streams->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_streams) /* iterator on <var_streams:Sequence[FDStream]>*/;
1648 for(;;) {
1649 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
1650 if(!var5) break;
1651 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
1652 var_s = var6;
1653 var7 = ((long (*)(val*))(var_s->class->vft[COLOR_stream__FDStream__fd]))(var_s) /* fd on <var_s:FDStream>*/;
1654 var_fd = var7;
1655 /* <var_s:FDStream> isa FDIStream */
1656 cltype = type_stream__FDIStream.color;
1657 idtype = type_stream__FDIStream.id;
1658 if(cltype >= var_s->type->table_size) {
1659 var8 = 0;
1660 } else {
1661 var8 = var_s->type->type_table[cltype] == idtype;
1662 }
1663 if (var8){
1664 var9 = BOX_kernel__Int(var_fd); /* autobox from Int to nullable Object */
1665 ((void (*)(val*, val*))(var_in_fds->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_in_fds, var9) /* add on <var_in_fds:Array[Int]>*/;
1666 } else {
1667 }
1668 /* <var_s:FDStream> isa FDOStream */
1669 cltype11 = type_stream__FDOStream.color;
1670 idtype12 = type_stream__FDOStream.id;
1671 if(cltype11 >= var_s->type->table_size) {
1672 var10 = 0;
1673 } else {
1674 var10 = var_s->type->type_table[cltype11] == idtype12;
1675 }
1676 if (var10){
1677 var13 = BOX_kernel__Int(var_fd); /* autobox from Int to nullable Object */
1678 ((void (*)(val*, val*))(var_out_fds->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_out_fds, var13) /* add on <var_out_fds:Array[Int]>*/;
1679 } else {
1680 }
1681 var14 = BOX_kernel__Int(var_fd); /* autobox from Int to Object */
1682 ((void (*)(val*, val*, val*))(var_fd_to_stream->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_fd_to_stream, var14, var_s) /* []= on <var_fd_to_stream:HashMap[Int, FDStream]>*/;
1683 CONTINUE_label: (void)0;
1684 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
1685 }
1686 BREAK_label: (void)0;
1687 var15 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_stream__Object__intern_poll]))(self, var_in_fds, var_out_fds) /* intern_poll on <self:Object>*/;
1688 var_polled_fd = var15;
1689 var16 = NULL;
1690 if (var_polled_fd == NULL) {
1691 var17 = 1; /* is null */
1692 } else {
1693 var17 = 0; /* arg is null but recv is not */
1694 }
1695 if (var17){
1696 var18 = NULL;
1697 var = var18;
1698 goto RET_LABEL;
1699 } else {
1700 var19 = ((val* (*)(val*, val*))(var_fd_to_stream->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_fd_to_stream, var_polled_fd) /* [] on <var_fd_to_stream:HashMap[Int, FDStream]>*/;
1701 var = var19;
1702 goto RET_LABEL;
1703 }
1704 RET_LABEL:;
1705 return var;
1706 }
1707 /* method stream#Object#poll for (self: Object, Sequence[FDStream]): nullable FDStream */
1708 val* VIRTUAL_stream__Object__poll(val* self, val* p0) {
1709 val* var /* : nullable FDStream */;
1710 val* var1 /* : nullable FDStream */;
1711 var1 = stream__Object__poll(self, p0);
1712 var = var1;
1713 RET_LABEL:;
1714 return var;
1715 }
1716 /* method stream#Object#intern_poll for (self: Object, Array[Int], Array[Int]): nullable Int */
1717 val* stream__Object__intern_poll(val* self, val* p0, val* p1) {
1718 val* var /* : nullable Int */;
1719 val* var1 /* : nullable Int */;
1720 struct nitni_instance* var_for_c_0;
1721 var_for_c_0 = malloc(sizeof(struct nitni_instance));
1722 var_for_c_0->value = self;
1723 struct nitni_instance* var_for_c_1;
1724 var_for_c_1 = malloc(sizeof(struct nitni_instance));
1725 var_for_c_1->value = p0;
1726 struct nitni_instance* var_for_c_2;
1727 var_for_c_2 = malloc(sizeof(struct nitni_instance));
1728 var_for_c_2->value = p1;
1729 struct nitni_instance* ret_var;
1730 ret_var = stream___Object_intern_poll___impl(var_for_c_0, var_for_c_1, var_for_c_2);
1731 var1 = ret_var->value;
1732 var = var1;
1733 goto RET_LABEL;
1734 RET_LABEL:;
1735 return var;
1736 }
1737 #ifndef NIT_NULL_null_Int
1738 #define NIT_NULL_null_Int
1739 struct nitni_instance * stream___null_Int() {
1740 struct nitni_instance* ret_for_c;
1741 ret_for_c = malloc(sizeof(struct nitni_instance));
1742 ret_for_c->value = NULL;
1743 return ret_for_c;
1744 }
1745 #endif
1746 #ifndef NIT_NULL_null_Object
1747 #define NIT_NULL_null_Object
1748 struct nitni_instance * stream___null_Object() {
1749 struct nitni_instance* ret_for_c;
1750 ret_for_c = malloc(sizeof(struct nitni_instance));
1751 ret_for_c->value = NULL;
1752 return ret_for_c;
1753 }
1754 #endif
1755 /* nitni callback for standard::abstract_collection::Collection::length */
1756 int stream___Array_of_Int_length( struct nitni_instance * recv ) {
1757 long var /* : Int */;
1758 var = ((long (*)(val*))(recv->value->class->vft[COLOR_abstract_collection__Collection__length]))(recv->value) /* length on <recv->value:Array[Int]>*/;
1759 return var;
1760 }
1761 /* nitni callback for standard::abstract_collection::SequenceRead::[] */
1762 int stream___Array_of_Int__index( struct nitni_instance * recv, int index ) {
1763 val* var /* : nullable Object */;
1764 long var1 /* : Int */;
1765 var = ((val* (*)(val*, long))(recv->value->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(recv->value, index) /* [] on <recv->value:Array[Int]>*/;
1766 var1 = ((struct instance_kernel__Int*)var)->value; /* autounbox from nullable Object to Int */;
1767 return var1;
1768 }
1769 /* nitni check for Int to nullable Int */
1770 int stream___Int_is_a_nullable_Int(int from) {
1771 short int var /* : Bool */;
1772 int cltype;
1773 int idtype;
1774 /* <from->value:Int> isa nullable Int */
1775 var = 1; /* easy <from->value:Int> isa nullable Int*/
1776 return var;
1777 }
1778 /* nitni cast for Int to nullable Int */
1779 struct nitni_instance * stream___Int_as_nullable_Int(int from) {
1780 short int var /* : Bool */;
1781 int cltype;
1782 int idtype;
1783 val* var1 /* : nullable Int */;
1784 /* <from:Int> isa nullable Int */
1785 var = 1; /* easy <from:Int> isa nullable Int*/
1786 if (!var) {
1787 fprintf(stderr, "Runtime error: %s", "FFI cast failed");
1788 fprintf(stderr, "\n");
1789 show_backtrace(1);
1790 }
1791 var1 = BOX_kernel__Int(from); /* autobox from Int to nullable Int */
1792 struct nitni_instance* ret_for_c;
1793 ret_for_c = malloc(sizeof(struct nitni_instance));
1794 ret_for_c->value = var1;
1795 return ret_for_c;
1796 }
1797 /* method stream#Object#intern_poll for (self: Object, Array[Int], Array[Int]): nullable Int */
1798 val* VIRTUAL_stream__Object__intern_poll(val* self, val* p0, val* p1) {
1799 val* var /* : nullable Int */;
1800 val* var1 /* : nullable Int */;
1801 var1 = stream__Object__intern_poll(self, p0, p1);
1802 var = var1;
1803 RET_LABEL:;
1804 return var;
1805 }
1806 /* method stream#StringOStream#content for (self: StringOStream): Array[String] */
1807 val* stream__StringOStream__content(val* self) {
1808 val* var /* : Array[String] */;
1809 val* var1 /* : Array[String] */;
1810 var1 = self->attrs[COLOR_stream__StringOStream___64dcontent].val; /* @content on <self:StringOStream> */
1811 if (var1 == NULL) {
1812 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @content");
1813 fprintf(stderr, " (%s:%d)\n", "lib/standard/stream.nit", 377);
1814 show_backtrace(1);
1815 }
1816 var = var1;
1817 RET_LABEL:;
1818 return var;
1819 }
1820 /* method stream#StringOStream#content for (self: Object): Array[String] */
1821 val* VIRTUAL_stream__StringOStream__content(val* self) {
1822 val* var /* : Array[String] */;
1823 val* var1 /* : Array[String] */;
1824 var1 = stream__StringOStream__content(self);
1825 var = var1;
1826 RET_LABEL:;
1827 return var;
1828 }
1829 /* method stream#StringOStream#content= for (self: StringOStream, Array[String]) */
1830 void stream__StringOStream__content_61d(val* self, val* p0) {
1831 self->attrs[COLOR_stream__StringOStream___64dcontent].val = p0; /* @content on <self:StringOStream> */
1832 RET_LABEL:;
1833 }
1834 /* method stream#StringOStream#content= for (self: Object, Array[String]) */
1835 void VIRTUAL_stream__StringOStream__content_61d(val* self, val* p0) {
1836 stream__StringOStream__content_61d(self, p0);
1837 RET_LABEL:;
1838 }
1839 /* method stream#StringOStream#to_s for (self: StringOStream): String */
1840 val* stream__StringOStream__to_s(val* self) {
1841 val* var /* : String */;
1842 val* var1 /* : Array[String] */;
1843 val* var2 /* : String */;
1844 var1 = ((val* (*)(val*))(self->class->vft[COLOR_stream__StringOStream__content]))(self) /* content on <self:StringOStream>*/;
1845 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:Array[String]>*/;
1846 var = var2;
1847 goto RET_LABEL;
1848 RET_LABEL:;
1849 return var;
1850 }
1851 /* method stream#StringOStream#to_s for (self: Object): String */
1852 val* VIRTUAL_stream__StringOStream__to_s(val* self) {
1853 val* var /* : String */;
1854 val* var1 /* : String */;
1855 var1 = stream__StringOStream__to_s(self);
1856 var = var1;
1857 RET_LABEL:;
1858 return var;
1859 }
1860 /* method stream#StringOStream#is_writable for (self: StringOStream): Bool */
1861 short int stream__StringOStream__is_writable(val* self) {
1862 short int var /* : Bool */;
1863 short int var1 /* : Bool */;
1864 var1 = 1;
1865 var = var1;
1866 goto RET_LABEL;
1867 RET_LABEL:;
1868 return var;
1869 }
1870 /* method stream#StringOStream#is_writable for (self: Object): Bool */
1871 short int VIRTUAL_stream__StringOStream__is_writable(val* self) {
1872 short int var /* : Bool */;
1873 short int var1 /* : Bool */;
1874 var1 = stream__StringOStream__is_writable(self);
1875 var = var1;
1876 RET_LABEL:;
1877 return var;
1878 }
1879 /* method stream#StringOStream#write for (self: StringOStream, String) */
1880 void stream__StringOStream__write(val* self, val* p0) {
1881 val* var_str /* var str: String */;
1882 val* var /* : Array[String] */;
1883 var_str = p0;
1884 var = ((val* (*)(val*))(self->class->vft[COLOR_stream__StringOStream__content]))(self) /* content on <self:StringOStream>*/;
1885 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_str) /* add on <var:Array[String]>*/;
1886 RET_LABEL:;
1887 }
1888 /* method stream#StringOStream#write for (self: Object, String) */
1889 void VIRTUAL_stream__StringOStream__write(val* self, val* p0) {
1890 stream__StringOStream__write(self, p0);
1891 RET_LABEL:;
1892 }
1893 /* method stream#StringOStream#init for (self: StringOStream) */
1894 void stream__StringOStream__init(val* self) {
1895 RET_LABEL:;
1896 }
1897 /* method stream#StringOStream#init for (self: Object) */
1898 void VIRTUAL_stream__StringOStream__init(val* self) {
1899 stream__StringOStream__init(self);
1900 RET_LABEL:;
1901 }