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