nitdoc: migrate folding to jQuery.UI widget
[nit.git] / c_src / file.sep.1.c
1 #include "file.sep.0.h"
2 /* method file#Object#printn for (self: Object, Array[Object]) */
3 void file__Object__printn(val* self, val* p0) {
4 val* var_objects /* var objects: Array[Object] */;
5 val* var /* : OFStream */;
6 val* var1 /* : String */;
7 var_objects = p0;
8 var = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on <self:Object>*/;
9 var1 = ((val* (*)(val*))(var_objects->class->vft[COLOR_string__Object__to_s]))(var_objects) /* to_s on <var_objects:Array[Object]>*/;
10 ((void (*)(val*, val*))(var->class->vft[COLOR_stream__OStream__write]))(var, var1) /* write on <var:OFStream>*/;
11 RET_LABEL:;
12 }
13 /* method file#Object#printn for (self: Object, Array[Object]) */
14 void VIRTUAL_file__Object__printn(val* self, val* p0) {
15 file__Object__printn(self, p0);
16 RET_LABEL:;
17 }
18 /* method file#Object#print for (self: Object, Object) */
19 void file__Object__print(val* self, val* p0) {
20 val* var_object /* var object: Object */;
21 val* var /* : OFStream */;
22 val* var1 /* : String */;
23 val* var2 /* : OFStream */;
24 static val* varonce;
25 val* var3 /* : String */;
26 char* var4 /* : NativeString */;
27 long var5 /* : Int */;
28 val* var6 /* : String */;
29 var_object = p0;
30 var = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on <self:Object>*/;
31 var1 = ((val* (*)(val*))(var_object->class->vft[COLOR_string__Object__to_s]))(var_object) /* to_s on <var_object:Object>*/;
32 ((void (*)(val*, val*))(var->class->vft[COLOR_stream__OStream__write]))(var, var1) /* write on <var:OFStream>*/;
33 var2 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on <self:Object>*/;
34 if (varonce) {
35 var3 = varonce;
36 } else {
37 var4 = "\n";
38 var5 = 1;
39 var6 = string__NativeString__to_s_with_length(var4, var5);
40 var3 = var6;
41 varonce = var3;
42 }
43 ((void (*)(val*, val*))(var2->class->vft[COLOR_stream__OStream__write]))(var2, var3) /* write on <var2:OFStream>*/;
44 RET_LABEL:;
45 }
46 /* method file#Object#print for (self: Object, Object) */
47 void VIRTUAL_file__Object__print(val* self, val* p0) {
48 file__Object__print(self, p0);
49 RET_LABEL:;
50 }
51 /* method file#Object#getc for (self: Object): Char */
52 char file__Object__getc(val* self) {
53 char var /* : Char */;
54 val* var1 /* : Stdin */;
55 long var2 /* : Int */;
56 char var3 /* : Char */;
57 char var5 /* : Char */;
58 var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdin]))(self) /* stdin on <self:Object>*/;
59 var2 = ((long (*)(val*))(var1->class->vft[COLOR_stream__IStream__read_char]))(var1) /* read_char on <var1:Stdin>*/;
60 { /* Inline kernel#Int#ascii (var2) */
61 var5 = var2;
62 var3 = var5;
63 goto RET_LABEL4;
64 RET_LABEL4:(void)0;
65 }
66 var = var3;
67 goto RET_LABEL;
68 RET_LABEL:;
69 return var;
70 }
71 /* method file#Object#getc for (self: Object): Char */
72 char VIRTUAL_file__Object__getc(val* self) {
73 char var /* : Char */;
74 char var1 /* : Char */;
75 var1 = file__Object__getc(self);
76 var = var1;
77 RET_LABEL:;
78 return var;
79 }
80 /* method file#Object#gets for (self: Object): String */
81 val* file__Object__gets(val* self) {
82 val* var /* : String */;
83 val* var1 /* : Stdin */;
84 val* var2 /* : String */;
85 var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdin]))(self) /* stdin on <self:Object>*/;
86 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_stream__IStream__read_line]))(var1) /* read_line on <var1:Stdin>*/;
87 var = var2;
88 goto RET_LABEL;
89 RET_LABEL:;
90 return var;
91 }
92 /* method file#Object#gets for (self: Object): String */
93 val* VIRTUAL_file__Object__gets(val* self) {
94 val* var /* : String */;
95 val* var1 /* : String */;
96 var1 = file__Object__gets(self);
97 var = var1;
98 RET_LABEL:;
99 return var;
100 }
101 /* method file#Object#getcwd for (self: Object): String */
102 val* file__Object__getcwd(val* self) {
103 val* var /* : String */;
104 char* var1 /* : NativeString */;
105 val* var2 /* : String */;
106 var1 = ((char* (*)(val*))(self->class->vft[COLOR_file__Object__file_getcwd]))(self) /* file_getcwd on <self:Object>*/;
107 var2 = string__NativeString__to_s(var1);
108 var = var2;
109 goto RET_LABEL;
110 RET_LABEL:;
111 return var;
112 }
113 /* method file#Object#getcwd for (self: Object): String */
114 val* VIRTUAL_file__Object__getcwd(val* self) {
115 val* var /* : String */;
116 val* var1 /* : String */;
117 var1 = file__Object__getcwd(self);
118 var = var1;
119 RET_LABEL:;
120 return var;
121 }
122 /* method file#Object#file_getcwd for (self: Object): NativeString */
123 char* file__Object__file_getcwd(val* self) {
124 char* var /* : NativeString */;
125 char* var1 /* : NativeString */;
126 var1 = string_NativeString_NativeString_file_getcwd_0(self);
127 var = var1;
128 goto RET_LABEL;
129 RET_LABEL:;
130 return var;
131 }
132 /* method file#Object#file_getcwd for (self: Object): NativeString */
133 char* VIRTUAL_file__Object__file_getcwd(val* self) {
134 char* var /* : NativeString */;
135 char* var1 /* : NativeString */;
136 var1 = file__Object__file_getcwd(self);
137 var = var1;
138 RET_LABEL:;
139 return var;
140 }
141 /* method file#FStream#path for (self: FStream): nullable String */
142 val* file__FStream__path(val* self) {
143 val* var /* : nullable String */;
144 val* var1 /* : nullable String */;
145 var1 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:FStream> */
146 var = var1;
147 RET_LABEL:;
148 return var;
149 }
150 /* method file#FStream#path for (self: Object): nullable String */
151 val* VIRTUAL_file__FStream__path(val* self) {
152 val* var /* : nullable String */;
153 val* var1 /* : nullable String */;
154 var1 = file__FStream__path(self);
155 var = var1;
156 RET_LABEL:;
157 return var;
158 }
159 /* method file#FStream#file_stat for (self: FStream): FileStat */
160 void* file__FStream__file_stat(val* self) {
161 void* var /* : FileStat */;
162 val* var1 /* : nullable NativeFile */;
163 void* var2 /* : FileStat */;
164 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:FStream> */
165 if (var1 == NULL) {
166 fprintf(stderr, "Runtime error: %s", "Reciever is null");
167 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 66);
168 exit(1);
169 } else {
170 var2 = ((void* (*)(val*))(var1->class->vft[COLOR_file__NativeFile__file_stat]))(var1) /* file_stat on <var1:nullable NativeFile>*/;
171 }
172 var = var2;
173 goto RET_LABEL;
174 RET_LABEL:;
175 return var;
176 }
177 /* method file#FStream#file_stat for (self: Object): FileStat */
178 void* VIRTUAL_file__FStream__file_stat(val* self) {
179 void* var /* : FileStat */;
180 void* var1 /* : FileStat */;
181 var1 = file__FStream__file_stat(self);
182 var = var1;
183 RET_LABEL:;
184 return var;
185 }
186 /* method file#FStream#init for (self: FStream) */
187 void file__FStream__init(val* self) {
188 RET_LABEL:;
189 }
190 /* method file#FStream#init for (self: Object) */
191 void VIRTUAL_file__FStream__init(val* self) {
192 file__FStream__init(self);
193 RET_LABEL:;
194 }
195 /* method file#IFStream#reopen for (self: IFStream) */
196 void file__IFStream__reopen(val* self) {
197 short int var /* : Bool */;
198 short int var1 /* : Bool */;
199 void* var2 /* : NativeFile */;
200 val* var3 /* : nullable String */;
201 char* var4 /* : NativeString */;
202 void* var5 /* : NativeFile */;
203 val* var6 /* : nullable NativeFile */;
204 short int var7 /* : Bool */;
205 long var8 /* : Int */;
206 val* var9 /* : nullable Buffer */;
207 var = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on <self:IFStream>*/;
208 var1 = !var;
209 if (var1){
210 ((void (*)(val*))(self->class->vft[COLOR_stream__IOS__close]))(self) /* close on <self:IFStream>*/;
211 } else {
212 }
213 var2 = NULL/*special!*/;
214 var3 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
215 if (var3 == NULL) {
216 fprintf(stderr, "Runtime error: %s", "Reciever is null");
217 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 80);
218 exit(1);
219 } else {
220 var4 = ((char* (*)(val*))(var3->class->vft[COLOR_string__String__to_cstring]))(var3) /* to_cstring on <var3:nullable String>*/;
221 }
222 var5 = file__NativeFile__io_open_read(var2, var4);
223 var6 = BOX_file__NativeFile(var5); /* autobox from NativeFile to nullable NativeFile */
224 self->attrs[COLOR_file__FStream___file].val = var6; /* _file on <self:IFStream> */
225 var7 = 0;
226 self->attrs[COLOR_file__IFStream___end_reached].s = var7; /* _end_reached on <self:IFStream> */
227 var8 = 0;
228 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var8; /* _buffer_pos on <self:IFStream> */
229 var9 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
230 if (var9 == NULL) {
231 fprintf(stderr, "Runtime error: %s", "Reciever is null");
232 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 83);
233 exit(1);
234 } else {
235 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var9) /* clear on <var9:nullable Buffer>*/;
236 }
237 RET_LABEL:;
238 }
239 /* method file#IFStream#reopen for (self: Object) */
240 void VIRTUAL_file__IFStream__reopen(val* self) {
241 file__IFStream__reopen(self);
242 RET_LABEL:;
243 }
244 /* method file#IFStream#close for (self: IFStream) */
245 void file__IFStream__close(val* self) {
246 val* var /* : nullable NativeFile */;
247 long var1 /* : Int */;
248 long var_i /* var i: Int */;
249 short int var2 /* : Bool */;
250 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
251 if (var == NULL) {
252 fprintf(stderr, "Runtime error: %s", "Reciever is null");
253 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88);
254 exit(1);
255 } else {
256 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
257 }
258 var_i = var1;
259 var2 = 1;
260 self->attrs[COLOR_file__IFStream___end_reached].s = var2; /* _end_reached on <self:IFStream> */
261 RET_LABEL:;
262 }
263 /* method file#IFStream#close for (self: Object) */
264 void VIRTUAL_file__IFStream__close(val* self) {
265 file__IFStream__close(self);
266 RET_LABEL:;
267 }
268 /* method file#IFStream#fill_buffer for (self: IFStream) */
269 void file__IFStream__fill_buffer(val* self) {
270 val* var /* : nullable NativeFile */;
271 val* var1 /* : nullable Buffer */;
272 char* var2 /* : NativeString */;
273 val* var3 /* : nullable Buffer */;
274 long var4 /* : Int */;
275 long var5 /* : Int */;
276 long var_nb /* var nb: Int */;
277 long var6 /* : Int */;
278 short int var7 /* : Bool */;
279 short int var9 /* : Bool */;
280 int cltype;
281 int idtype;
282 const char* var_class_name;
283 short int var10 /* : Bool */;
284 short int var11 /* : Bool */;
285 long var12 /* : Int */;
286 val* var13 /* : nullable Buffer */;
287 long var14 /* : Int */;
288 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
289 var1 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
290 if (var1 == NULL) {
291 fprintf(stderr, "Runtime error: %s", "Reciever is null");
292 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
293 exit(1);
294 }
295 var2 = var1->attrs[COLOR_string__AbstractString___items].str; /* _items on <var1:nullable Buffer> */
296 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
297 if (var3 == NULL) {
298 fprintf(stderr, "Runtime error: %s", "Reciever is null");
299 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
300 exit(1);
301 }
302 var4 = var3->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <var3:nullable Buffer> */
303 if (var == NULL) {
304 fprintf(stderr, "Runtime error: %s", "Reciever is null");
305 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
306 exit(1);
307 } else {
308 var5 = ((long (*)(val*, char*, long))(var->class->vft[COLOR_file__NativeFile__io_read]))(var, var2, var4) /* io_read on <var:nullable NativeFile>*/;
309 }
310 var_nb = var5;
311 var6 = 0;
312 { /* Inline kernel#Int#<= (var_nb,var6) */
313 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
314 /* <var6:Int> isa OTHER */
315 var9 = 1; /* easy <var6:Int> isa OTHER*/
316 if (!var9) {
317 var_class_name = type_kernel__Int.name;
318 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
319 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
320 exit(1);
321 }
322 var10 = var_nb <= var6;
323 var7 = var10;
324 goto RET_LABEL8;
325 RET_LABEL8:(void)0;
326 }
327 if (var7){
328 var11 = 1;
329 self->attrs[COLOR_file__IFStream___end_reached].s = var11; /* _end_reached on <self:IFStream> */
330 var12 = 0;
331 var_nb = var12;
332 } else {
333 }
334 var13 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
335 if (var13 == NULL) {
336 fprintf(stderr, "Runtime error: %s", "Reciever is null");
337 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 99);
338 exit(1);
339 }
340 var13->attrs[COLOR_array__AbstractArrayRead___length].l = var_nb; /* _length on <var13:nullable Buffer> */
341 var14 = 0;
342 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var14; /* _buffer_pos on <self:IFStream> */
343 RET_LABEL:;
344 }
345 /* method file#IFStream#fill_buffer for (self: Object) */
346 void VIRTUAL_file__IFStream__fill_buffer(val* self) {
347 file__IFStream__fill_buffer(self);
348 RET_LABEL:;
349 }
350 /* method file#IFStream#end_reached for (self: IFStream): Bool */
351 short int file__IFStream__end_reached(val* self) {
352 short int var /* : Bool */;
353 short int var1 /* : Bool */;
354 var1 = self->attrs[COLOR_file__IFStream___end_reached].s; /* _end_reached on <self:IFStream> */
355 var = var1;
356 RET_LABEL:;
357 return var;
358 }
359 /* method file#IFStream#end_reached for (self: Object): Bool */
360 short int VIRTUAL_file__IFStream__end_reached(val* self) {
361 short int var /* : Bool */;
362 short int var1 /* : Bool */;
363 var1 = file__IFStream__end_reached(self);
364 var = var1;
365 RET_LABEL:;
366 return var;
367 }
368 /* method file#IFStream#open for (self: IFStream, String) */
369 void file__IFStream__open(val* self, val* p0) {
370 val* var_path /* var path: String */;
371 long var /* : Int */;
372 void* var1 /* : NativeFile */;
373 val* var2 /* : nullable String */;
374 char* var3 /* : NativeString */;
375 void* var4 /* : NativeFile */;
376 val* var5 /* : nullable NativeFile */;
377 val* var6 /* : nullable NativeFile */;
378 val* var7 /* : null */;
379 short int var8 /* : Bool */;
380 var_path = p0;
381 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:IFStream>*/;
382 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on <self:IFStream>*/;
383 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:IFStream> */
384 var = 10;
385 ((void (*)(val*, long))(self->class->vft[COLOR_stream__BufferedIStream__prepare_buffer]))(self, var) /* prepare_buffer on <self:IFStream>*/;
386 var1 = NULL/*special!*/;
387 var2 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
388 if (var2 == NULL) {
389 fprintf(stderr, "Runtime error: %s", "Reciever is null");
390 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 111);
391 exit(1);
392 } else {
393 var3 = ((char* (*)(val*))(var2->class->vft[COLOR_string__String__to_cstring]))(var2) /* to_cstring on <var2:nullable String>*/;
394 }
395 var4 = file__NativeFile__io_open_read(var1, var3);
396 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to nullable NativeFile */
397 self->attrs[COLOR_file__FStream___file].val = var5; /* _file on <self:IFStream> */
398 var6 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
399 var7 = NULL;
400 if (var6 == NULL) {
401 var8 = 0; /* is null */
402 } else {
403 var8 = 1; /* arg is null and recv is not */
404 }
405 if (!var8) {
406 fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
407 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 112);
408 exit(1);
409 }
410 RET_LABEL:;
411 }
412 /* method file#IFStream#open for (self: Object, String) */
413 void VIRTUAL_file__IFStream__open(val* self, val* p0) {
414 file__IFStream__open(self, p0);
415 RET_LABEL:;
416 }
417 /* method file#IFStream#init for (self: IFStream) */
418 void file__IFStream__init(val* self) {
419 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:IFStream>*/;
420 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on <self:IFStream>*/;
421 RET_LABEL:;
422 }
423 /* method file#IFStream#init for (self: Object) */
424 void VIRTUAL_file__IFStream__init(val* self) {
425 file__IFStream__init(self);
426 RET_LABEL:;
427 }
428 /* method file#IFStream#without_file for (self: IFStream) */
429 void file__IFStream__without_file(val* self) {
430 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:IFStream>*/;
431 ((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on <self:IFStream>*/;
432 RET_LABEL:;
433 }
434 /* method file#IFStream#without_file for (self: Object) */
435 void VIRTUAL_file__IFStream__without_file(val* self) {
436 file__IFStream__without_file(self);
437 RET_LABEL:;
438 }
439 /* method file#OFStream#write for (self: OFStream, String) */
440 void file__OFStream__write(val* self, val* p0) {
441 val* var_s /* var s: String */;
442 short int var /* : Bool */;
443 char* var1 /* : NativeString */;
444 long var2 /* : Int */;
445 var_s = p0;
446 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
447 if (!var) {
448 fprintf(stderr, "Runtime error: %s", "Assert failed");
449 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 126);
450 exit(1);
451 }
452 var1 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__String__to_cstring]))(var_s) /* to_cstring on <var_s:String>*/;
453 var2 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
454 ((void (*)(val*, char*, long))(self->class->vft[COLOR_file__OFStream__write_native]))(self, var1, var2) /* write_native on <self:OFStream>*/;
455 RET_LABEL:;
456 }
457 /* method file#OFStream#write for (self: Object, String) */
458 void VIRTUAL_file__OFStream__write(val* self, val* p0) {
459 file__OFStream__write(self, p0);
460 RET_LABEL:;
461 }
462 /* method file#OFStream#is_writable for (self: OFStream): Bool */
463 short int file__OFStream__is_writable(val* self) {
464 short int var /* : Bool */;
465 short int var1 /* : Bool */;
466 var1 = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
467 var = var1;
468 goto RET_LABEL;
469 RET_LABEL:;
470 return var;
471 }
472 /* method file#OFStream#is_writable for (self: Object): Bool */
473 short int VIRTUAL_file__OFStream__is_writable(val* self) {
474 short int var /* : Bool */;
475 short int var1 /* : Bool */;
476 var1 = file__OFStream__is_writable(self);
477 var = var1;
478 RET_LABEL:;
479 return var;
480 }
481 /* method file#OFStream#close for (self: OFStream) */
482 void file__OFStream__close(val* self) {
483 val* var /* : nullable NativeFile */;
484 long var1 /* : Int */;
485 long var_i /* var i: Int */;
486 short int var2 /* : Bool */;
487 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
488 if (var == NULL) {
489 fprintf(stderr, "Runtime error: %s", "Reciever is null");
490 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 134);
491 exit(1);
492 } else {
493 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
494 }
495 var_i = var1;
496 var2 = 0;
497 self->attrs[COLOR_file__OFStream___writable].s = var2; /* _writable on <self:OFStream> */
498 RET_LABEL:;
499 }
500 /* method file#OFStream#close for (self: Object) */
501 void VIRTUAL_file__OFStream__close(val* self) {
502 file__OFStream__close(self);
503 RET_LABEL:;
504 }
505 /* method file#OFStream#write_native for (self: OFStream, NativeString, Int) */
506 void file__OFStream__write_native(val* self, char* p0, long p1) {
507 char* var_native /* var native: NativeString */;
508 long var_len /* var len: Int */;
509 short int var /* : Bool */;
510 val* var1 /* : nullable NativeFile */;
511 long var2 /* : Int */;
512 long var_err /* var err: Int */;
513 short int var3 /* : Bool */;
514 short int var5 /* : Bool */;
515 short int var6 /* : Bool */;
516 static val* varonce;
517 val* var7 /* : String */;
518 char* var8 /* : NativeString */;
519 long var9 /* : Int */;
520 val* var10 /* : String */;
521 static val* varonce11;
522 val* var12 /* : String */;
523 char* var13 /* : NativeString */;
524 long var14 /* : Int */;
525 val* var15 /* : String */;
526 static val* varonce16;
527 val* var17 /* : String */;
528 char* var18 /* : NativeString */;
529 long var19 /* : Int */;
530 val* var20 /* : String */;
531 val* var21 /* : Array[Object] */;
532 long var22 /* : Int */;
533 val* var23 /* : NativeArray[Object] */;
534 val* var24 /* : Object */;
535 val* var25 /* : Object */;
536 var_native = p0;
537 var_len = p1;
538 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
539 if (!var) {
540 fprintf(stderr, "Runtime error: %s", "Assert failed");
541 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 144);
542 exit(1);
543 }
544 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
545 if (var1 == NULL) {
546 fprintf(stderr, "Runtime error: %s", "Reciever is null");
547 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 145);
548 exit(1);
549 } else {
550 var2 = ((long (*)(val*, char*, long))(var1->class->vft[COLOR_file__NativeFile__io_write]))(var1, var_native, var_len) /* io_write on <var1:nullable NativeFile>*/;
551 }
552 var_err = var2;
553 { /* Inline kernel#Int#!= (var_err,var_len) */
554 var5 = var_err == var_len;
555 var6 = !var5;
556 var3 = var6;
557 goto RET_LABEL4;
558 RET_LABEL4:(void)0;
559 }
560 if (var3){
561 if (varonce) {
562 var7 = varonce;
563 } else {
564 var8 = "Problem in writing : ";
565 var9 = 21;
566 var10 = string__NativeString__to_s_with_length(var8, var9);
567 var7 = var10;
568 varonce = var7;
569 }
570 if (varonce11) {
571 var12 = varonce11;
572 } else {
573 var13 = " ";
574 var14 = 1;
575 var15 = string__NativeString__to_s_with_length(var13, var14);
576 var12 = var15;
577 varonce11 = var12;
578 }
579 if (varonce16) {
580 var17 = varonce16;
581 } else {
582 var18 = "\n";
583 var19 = 1;
584 var20 = string__NativeString__to_s_with_length(var18, var19);
585 var17 = var20;
586 varonce16 = var17;
587 }
588 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
589 { /* var21 = array_instance Array[Object] */
590 var22 = 5;
591 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
592 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var7;
593 var24 = BOX_kernel__Int(var_err); /* autobox from Int to Object */
594 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var24;
595 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var12;
596 var25 = BOX_kernel__Int(var_len); /* autobox from Int to Object */
597 ((struct instance_array__NativeArray*)var23)->values[3] = (val*) var25;
598 ((struct instance_array__NativeArray*)var23)->values[4] = (val*) var17;
599 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
600 CHECK_NEW_array__Array(var21);
601 }
602 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var21) /* printn on <self:OFStream>*/;
603 } else {
604 }
605 RET_LABEL:;
606 }
607 /* method file#OFStream#write_native for (self: Object, NativeString, Int) */
608 void VIRTUAL_file__OFStream__write_native(val* self, char* p0, long p1) {
609 file__OFStream__write_native(self, p0, p1);
610 RET_LABEL:;
611 }
612 /* method file#OFStream#open for (self: OFStream, String) */
613 void file__OFStream__open(val* self, val* p0) {
614 val* var_path /* var path: String */;
615 void* var /* : NativeFile */;
616 char* var1 /* : NativeString */;
617 void* var2 /* : NativeFile */;
618 val* var3 /* : nullable NativeFile */;
619 val* var4 /* : nullable NativeFile */;
620 val* var5 /* : null */;
621 short int var6 /* : Bool */;
622 short int var7 /* : Bool */;
623 var_path = p0;
624 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
625 var = NULL/*special!*/;
626 var1 = ((char* (*)(val*))(var_path->class->vft[COLOR_string__String__to_cstring]))(var_path) /* to_cstring on <var_path:String>*/;
627 var2 = file__NativeFile__io_open_write(var, var1);
628 var3 = BOX_file__NativeFile(var2); /* autobox from NativeFile to nullable NativeFile */
629 self->attrs[COLOR_file__FStream___file].val = var3; /* _file on <self:OFStream> */
630 var4 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
631 var5 = NULL;
632 if (var4 == NULL) {
633 var6 = 0; /* is null */
634 } else {
635 var6 = 1; /* arg is null and recv is not */
636 }
637 if (!var6) {
638 fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
639 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 156);
640 exit(1);
641 }
642 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:OFStream> */
643 var7 = 1;
644 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:OFStream> */
645 RET_LABEL:;
646 }
647 /* method file#OFStream#open for (self: Object, String) */
648 void VIRTUAL_file__OFStream__open(val* self, val* p0) {
649 file__OFStream__open(self, p0);
650 RET_LABEL:;
651 }
652 /* method file#OFStream#init for (self: OFStream) */
653 void file__OFStream__init(val* self) {
654 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
655 RET_LABEL:;
656 }
657 /* method file#OFStream#init for (self: Object) */
658 void VIRTUAL_file__OFStream__init(val* self) {
659 file__OFStream__init(self);
660 RET_LABEL:;
661 }
662 /* method file#OFStream#without_file for (self: OFStream) */
663 void file__OFStream__without_file(val* self) {
664 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
665 RET_LABEL:;
666 }
667 /* method file#OFStream#without_file for (self: Object) */
668 void VIRTUAL_file__OFStream__without_file(val* self) {
669 file__OFStream__without_file(self);
670 RET_LABEL:;
671 }
672 /* method file#Stdin#init for (self: Stdin) */
673 void file__Stdin__init(val* self) {
674 void* var /* : NativeFile */;
675 void* var1 /* : NativeFile */;
676 val* var2 /* : nullable NativeFile */;
677 static val* varonce;
678 val* var3 /* : String */;
679 char* var4 /* : NativeString */;
680 long var5 /* : Int */;
681 val* var6 /* : String */;
682 long var7 /* : Int */;
683 ((void (*)(val*))(self->class->vft[COLOR_file__IFStream__init]))(self) /* init on <self:Stdin>*/;
684 var = NULL/*special!*/;
685 var1 = file__NativeFile__native_stdin(var);
686 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
687 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stdin> */
688 if (varonce) {
689 var3 = varonce;
690 } else {
691 var4 = "/dev/stdin";
692 var5 = 10;
693 var6 = string__NativeString__to_s_with_length(var4, var5);
694 var3 = var6;
695 varonce = var3;
696 }
697 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stdin> */
698 var7 = 1;
699 ((void (*)(val*, long))(self->class->vft[COLOR_stream__BufferedIStream__prepare_buffer]))(self, var7) /* prepare_buffer on <self:Stdin>*/;
700 RET_LABEL:;
701 }
702 /* method file#Stdin#init for (self: Object) */
703 void VIRTUAL_file__Stdin__init(val* self) {
704 file__Stdin__init(self);
705 RET_LABEL:;
706 }
707 /* method file#Stdin#poll_in for (self: Stdin): Bool */
708 short int file__Stdin__poll_in(val* self) {
709 short int var /* : Bool */;
710 short int var1 /* : Bool */;
711 var1 = file_stdin_poll_in(self);
712 var = var1;
713 goto RET_LABEL;
714 RET_LABEL:;
715 return var;
716 }
717 /* method file#Stdin#poll_in for (self: Object): Bool */
718 short int VIRTUAL_file__Stdin__poll_in(val* self) {
719 short int var /* : Bool */;
720 short int var1 /* : Bool */;
721 var1 = file__Stdin__poll_in(self);
722 var = var1;
723 RET_LABEL:;
724 return var;
725 }
726 /* method file#Stdout#init for (self: Stdout) */
727 void file__Stdout__init(val* self) {
728 void* var /* : NativeFile */;
729 void* var1 /* : NativeFile */;
730 val* var2 /* : nullable NativeFile */;
731 static val* varonce;
732 val* var3 /* : String */;
733 char* var4 /* : NativeString */;
734 long var5 /* : Int */;
735 val* var6 /* : String */;
736 short int var7 /* : Bool */;
737 ((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on <self:Stdout>*/;
738 var = NULL/*special!*/;
739 var1 = file__NativeFile__native_stdout(var);
740 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
741 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stdout> */
742 if (varonce) {
743 var3 = varonce;
744 } else {
745 var4 = "/dev/stdout";
746 var5 = 11;
747 var6 = string__NativeString__to_s_with_length(var4, var5);
748 var3 = var6;
749 varonce = var3;
750 }
751 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stdout> */
752 var7 = 1;
753 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:Stdout> */
754 RET_LABEL:;
755 }
756 /* method file#Stdout#init for (self: Object) */
757 void VIRTUAL_file__Stdout__init(val* self) {
758 file__Stdout__init(self);
759 RET_LABEL:;
760 }
761 /* method file#Stderr#init for (self: Stderr) */
762 void file__Stderr__init(val* self) {
763 void* var /* : NativeFile */;
764 void* var1 /* : NativeFile */;
765 val* var2 /* : nullable NativeFile */;
766 static val* varonce;
767 val* var3 /* : String */;
768 char* var4 /* : NativeString */;
769 long var5 /* : Int */;
770 val* var6 /* : String */;
771 short int var7 /* : Bool */;
772 ((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on <self:Stderr>*/;
773 var = NULL/*special!*/;
774 var1 = file__NativeFile__native_stderr(var);
775 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
776 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stderr> */
777 if (varonce) {
778 var3 = varonce;
779 } else {
780 var4 = "/dev/stderr";
781 var5 = 11;
782 var6 = string__NativeString__to_s_with_length(var4, var5);
783 var3 = var6;
784 varonce = var3;
785 }
786 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stderr> */
787 var7 = 1;
788 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:Stderr> */
789 RET_LABEL:;
790 }
791 /* method file#Stderr#init for (self: Object) */
792 void VIRTUAL_file__Stderr__init(val* self) {
793 file__Stderr__init(self);
794 RET_LABEL:;
795 }
796 /* method file#String#file_exists for (self: String): Bool */
797 short int file__String__file_exists(val* self) {
798 short int var /* : Bool */;
799 char* var1 /* : NativeString */;
800 short int var2 /* : Bool */;
801 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
802 var2 = file__NativeString__file_exists(var1);
803 var = var2;
804 goto RET_LABEL;
805 RET_LABEL:;
806 return var;
807 }
808 /* method file#String#file_exists for (self: Object): Bool */
809 short int VIRTUAL_file__String__file_exists(val* self) {
810 short int var /* : Bool */;
811 short int var1 /* : Bool */;
812 var1 = file__String__file_exists(self);
813 var = var1;
814 RET_LABEL:;
815 return var;
816 }
817 /* method file#String#file_stat for (self: String): FileStat */
818 void* file__String__file_stat(val* self) {
819 void* var /* : FileStat */;
820 char* var1 /* : NativeString */;
821 void* var2 /* : FileStat */;
822 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
823 var2 = file__NativeString__file_stat(var1);
824 var = var2;
825 goto RET_LABEL;
826 RET_LABEL:;
827 return var;
828 }
829 /* method file#String#file_stat for (self: Object): FileStat */
830 void* VIRTUAL_file__String__file_stat(val* self) {
831 void* var /* : FileStat */;
832 void* var1 /* : FileStat */;
833 var1 = file__String__file_stat(self);
834 var = var1;
835 RET_LABEL:;
836 return var;
837 }
838 /* method file#String#file_lstat for (self: String): FileStat */
839 void* file__String__file_lstat(val* self) {
840 void* var /* : FileStat */;
841 char* var1 /* : NativeString */;
842 void* var2 /* : FileStat */;
843 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
844 var2 = file__NativeString__file_lstat(var1);
845 var = var2;
846 goto RET_LABEL;
847 RET_LABEL:;
848 return var;
849 }
850 /* method file#String#file_lstat for (self: Object): FileStat */
851 void* VIRTUAL_file__String__file_lstat(val* self) {
852 void* var /* : FileStat */;
853 void* var1 /* : FileStat */;
854 var1 = file__String__file_lstat(self);
855 var = var1;
856 RET_LABEL:;
857 return var;
858 }
859 /* method file#String#file_delete for (self: String): Bool */
860 short int file__String__file_delete(val* self) {
861 short int var /* : Bool */;
862 char* var1 /* : NativeString */;
863 short int var2 /* : Bool */;
864 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
865 var2 = file__NativeString__file_delete(var1);
866 var = var2;
867 goto RET_LABEL;
868 RET_LABEL:;
869 return var;
870 }
871 /* method file#String#file_delete for (self: Object): Bool */
872 short int VIRTUAL_file__String__file_delete(val* self) {
873 short int var /* : Bool */;
874 short int var1 /* : Bool */;
875 var1 = file__String__file_delete(self);
876 var = var1;
877 RET_LABEL:;
878 return var;
879 }
880 /* method file#String#strip_extension for (self: String, String): String */
881 val* file__String__strip_extension(val* self, val* p0) {
882 val* var /* : String */;
883 val* var_ext /* var ext: String */;
884 short int var1 /* : Bool */;
885 long var2 /* : Int */;
886 long var3 /* : Int */;
887 long var4 /* : Int */;
888 long var5 /* : Int */;
889 long var7 /* : Int */;
890 val* var8 /* : String */;
891 var_ext = p0;
892 var1 = ((short int (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__has_suffix]))(self, var_ext) /* has_suffix on <self:String>*/;
893 if (var1){
894 var2 = 0;
895 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
896 var4 = ((long (*)(val*))(var_ext->class->vft[COLOR_abstract_collection__Collection__length]))(var_ext) /* length on <var_ext:String>*/;
897 { /* Inline kernel#Int#- (var3,var4) */
898 var7 = var3 - var4;
899 var5 = var7;
900 goto RET_LABEL6;
901 RET_LABEL6:(void)0;
902 }
903 var8 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var2, var5) /* substring on <self:String>*/;
904 var = var8;
905 goto RET_LABEL;
906 } else {
907 }
908 var = self;
909 goto RET_LABEL;
910 RET_LABEL:;
911 return var;
912 }
913 /* method file#String#strip_extension for (self: Object, String): String */
914 val* VIRTUAL_file__String__strip_extension(val* self, val* p0) {
915 val* var /* : String */;
916 val* var1 /* : String */;
917 var1 = file__String__strip_extension(self, p0);
918 var = var1;
919 RET_LABEL:;
920 return var;
921 }
922 /* method file#String#basename for (self: String, String): String */
923 val* file__String__basename(val* self, val* p0) {
924 val* var /* : String */;
925 val* var_ext /* var ext: String */;
926 char var1 /* : Char */;
927 long var2 /* : Int */;
928 long var3 /* : Int */;
929 long var4 /* : Int */;
930 long var6 /* : Int */;
931 long var7 /* : Int */;
932 val* var8 /* : nullable Object */;
933 long var_pos /* var pos: Int */;
934 val* var_n /* var n: String */;
935 long var9 /* : Int */;
936 short int var10 /* : Bool */;
937 short int var12 /* : Bool */;
938 int cltype;
939 int idtype;
940 const char* var_class_name;
941 short int var13 /* : Bool */;
942 long var14 /* : Int */;
943 long var15 /* : Int */;
944 long var17 /* : Int */;
945 val* var18 /* : String */;
946 val* var19 /* : String */;
947 var_ext = p0;
948 var1 = '/';
949 var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
950 var3 = 1;
951 { /* Inline kernel#Int#- (var2,var3) */
952 var6 = var2 - var3;
953 var4 = var6;
954 goto RET_LABEL5;
955 RET_LABEL5:(void)0;
956 }
957 var8 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
958 var7 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var8, var4) /* last_index_of_from on <self:String>*/;
959 var_pos = var7;
960 var_n = self;
961 var9 = 0;
962 { /* Inline kernel#Int#>= (var_pos,var9) */
963 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
964 /* <var9:Int> isa OTHER */
965 var12 = 1; /* easy <var9:Int> isa OTHER*/
966 if (!var12) {
967 var_class_name = type_kernel__Int.name;
968 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
969 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
970 exit(1);
971 }
972 var13 = var_pos >= var9;
973 var10 = var13;
974 goto RET_LABEL11;
975 RET_LABEL11:(void)0;
976 }
977 if (var10){
978 var14 = 1;
979 { /* Inline kernel#Int#+ (var_pos,var14) */
980 var17 = var_pos + var14;
981 var15 = var17;
982 goto RET_LABEL16;
983 RET_LABEL16:(void)0;
984 }
985 var18 = ((val* (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__substring_from]))(self, var15) /* substring_from on <self:String>*/;
986 var_n = var18;
987 } else {
988 }
989 var19 = ((val* (*)(val*, val*))(var_n->class->vft[COLOR_file__String__strip_extension]))(var_n, var_ext) /* strip_extension on <var_n:String>*/;
990 var = var19;
991 goto RET_LABEL;
992 RET_LABEL:;
993 return var;
994 }
995 /* method file#String#basename for (self: Object, String): String */
996 val* VIRTUAL_file__String__basename(val* self, val* p0) {
997 val* var /* : String */;
998 val* var1 /* : String */;
999 var1 = file__String__basename(self, p0);
1000 var = var1;
1001 RET_LABEL:;
1002 return var;
1003 }
1004 /* method file#String#dirname for (self: String): String */
1005 val* file__String__dirname(val* self) {
1006 val* var /* : String */;
1007 long var1 /* : Int */;
1008 long var2 /* : Int */;
1009 long var3 /* : Int */;
1010 long var5 /* : Int */;
1011 long var_l /* var l: Int */;
1012 short int var6 /* : Bool */;
1013 long var7 /* : Int */;
1014 short int var8 /* : Bool */;
1015 short int var10 /* : Bool */;
1016 int cltype;
1017 int idtype;
1018 const char* var_class_name;
1019 short int var11 /* : Bool */;
1020 short int var_ /* var : Bool */;
1021 val* var12 /* : nullable Object */;
1022 char var13 /* : Char */;
1023 short int var14 /* : Bool */;
1024 short int var16 /* : Bool */;
1025 char var17 /* : Char */;
1026 long var18 /* : Int */;
1027 long var19 /* : Int */;
1028 long var21 /* : Int */;
1029 char var22 /* : Char */;
1030 long var23 /* : Int */;
1031 val* var24 /* : nullable Object */;
1032 long var_pos /* var pos: Int */;
1033 long var25 /* : Int */;
1034 short int var26 /* : Bool */;
1035 short int var28 /* : Bool */;
1036 int cltype29;
1037 int idtype30;
1038 const char* var_class_name31;
1039 short int var32 /* : Bool */;
1040 long var33 /* : Int */;
1041 val* var34 /* : String */;
1042 long var35 /* : Int */;
1043 short int var36 /* : Bool */;
1044 short int var38 /* : Bool */;
1045 static val* varonce;
1046 val* var39 /* : String */;
1047 char* var40 /* : NativeString */;
1048 long var41 /* : Int */;
1049 val* var42 /* : String */;
1050 static val* varonce43;
1051 val* var44 /* : String */;
1052 char* var45 /* : NativeString */;
1053 long var46 /* : Int */;
1054 val* var47 /* : String */;
1055 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
1056 var2 = 1;
1057 { /* Inline kernel#Int#- (var1,var2) */
1058 var5 = var1 - var2;
1059 var3 = var5;
1060 goto RET_LABEL4;
1061 RET_LABEL4:(void)0;
1062 }
1063 var_l = var3;
1064 var7 = 0;
1065 { /* Inline kernel#Int#> (var_l,var7) */
1066 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
1067 /* <var7:Int> isa OTHER */
1068 var10 = 1; /* easy <var7:Int> isa OTHER*/
1069 if (!var10) {
1070 var_class_name = type_kernel__Int.name;
1071 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1072 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1073 exit(1);
1074 }
1075 var11 = var_l > var7;
1076 var8 = var11;
1077 goto RET_LABEL9;
1078 RET_LABEL9:(void)0;
1079 }
1080 var_ = var8;
1081 if (var8){
1082 var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_l) /* [] on <self:String>*/;
1083 var13 = '/';
1084 { /* Inline kernel#Char#== (var12,var13) */
1085 var16 = (var12 != NULL) && (var12->class == &class_kernel__Char);
1086 if (var16) {
1087 var17 = ((struct instance_kernel__Char*)var12)->value; /* autounbox from nullable Object to Char */;
1088 var16 = (var17 == var13);
1089 }
1090 var14 = var16;
1091 goto RET_LABEL15;
1092 RET_LABEL15:(void)0;
1093 }
1094 var6 = var14;
1095 } else {
1096 var6 = var_;
1097 }
1098 if (var6){
1099 var18 = 1;
1100 { /* Inline kernel#Int#- (var_l,var18) */
1101 var21 = var_l - var18;
1102 var19 = var21;
1103 goto RET_LABEL20;
1104 RET_LABEL20:(void)0;
1105 }
1106 var_l = var19;
1107 } else {
1108 }
1109 var22 = '/';
1110 var24 = BOX_kernel__Char(var22); /* autobox from Char to nullable Object */
1111 var23 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var24, var_l) /* last_index_of_from on <self:String>*/;
1112 var_pos = var23;
1113 var25 = 0;
1114 { /* Inline kernel#Int#> (var_pos,var25) */
1115 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
1116 /* <var25:Int> isa OTHER */
1117 var28 = 1; /* easy <var25:Int> isa OTHER*/
1118 if (!var28) {
1119 var_class_name31 = type_kernel__Int.name;
1120 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
1121 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1122 exit(1);
1123 }
1124 var32 = var_pos > var25;
1125 var26 = var32;
1126 goto RET_LABEL27;
1127 RET_LABEL27:(void)0;
1128 }
1129 if (var26){
1130 var33 = 0;
1131 var34 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var33, var_pos) /* substring on <self:String>*/;
1132 var = var34;
1133 goto RET_LABEL;
1134 } else {
1135 var35 = 0;
1136 { /* Inline kernel#Int#== (var_pos,var35) */
1137 var38 = var_pos == var35;
1138 var36 = var38;
1139 goto RET_LABEL37;
1140 RET_LABEL37:(void)0;
1141 }
1142 if (var36){
1143 if (varonce) {
1144 var39 = varonce;
1145 } else {
1146 var40 = "/";
1147 var41 = 1;
1148 var42 = string__NativeString__to_s_with_length(var40, var41);
1149 var39 = var42;
1150 varonce = var39;
1151 }
1152 var = var39;
1153 goto RET_LABEL;
1154 } else {
1155 if (varonce43) {
1156 var44 = varonce43;
1157 } else {
1158 var45 = ".";
1159 var46 = 1;
1160 var47 = string__NativeString__to_s_with_length(var45, var46);
1161 var44 = var47;
1162 varonce43 = var44;
1163 }
1164 var = var44;
1165 goto RET_LABEL;
1166 }
1167 }
1168 RET_LABEL:;
1169 return var;
1170 }
1171 /* method file#String#dirname for (self: Object): String */
1172 val* VIRTUAL_file__String__dirname(val* self) {
1173 val* var /* : String */;
1174 val* var1 /* : String */;
1175 var1 = file__String__dirname(self);
1176 var = var1;
1177 RET_LABEL:;
1178 return var;
1179 }
1180 /* method file#String#simplify_path for (self: String): String */
1181 val* file__String__simplify_path(val* self) {
1182 val* var /* : String */;
1183 static val* varonce;
1184 val* var1 /* : String */;
1185 char* var2 /* : NativeString */;
1186 long var3 /* : Int */;
1187 val* var4 /* : String */;
1188 val* var5 /* : Array[String] */;
1189 val* var_a /* var a: Array[String] */;
1190 val* var6 /* : Array[String] */;
1191 val* var_a2 /* var a2: Array[String] */;
1192 val* var7 /* : Iterator[nullable Object] */;
1193 short int var8 /* : Bool */;
1194 val* var9 /* : nullable Object */;
1195 val* var_x /* var x: String */;
1196 static val* varonce10;
1197 val* var11 /* : String */;
1198 char* var12 /* : NativeString */;
1199 long var13 /* : Int */;
1200 val* var14 /* : String */;
1201 short int var15 /* : Bool */;
1202 short int var16 /* : Bool */;
1203 static val* varonce17;
1204 val* var18 /* : String */;
1205 char* var19 /* : NativeString */;
1206 long var20 /* : Int */;
1207 val* var21 /* : String */;
1208 short int var22 /* : Bool */;
1209 short int var_ /* var : Bool */;
1210 short int var23 /* : Bool */;
1211 short int var24 /* : Bool */;
1212 short int var25 /* : Bool */;
1213 short int var26 /* : Bool */;
1214 static val* varonce27;
1215 val* var28 /* : String */;
1216 char* var29 /* : NativeString */;
1217 long var30 /* : Int */;
1218 val* var31 /* : String */;
1219 short int var32 /* : Bool */;
1220 short int var_33 /* var : Bool */;
1221 short int var34 /* : Bool */;
1222 short int var35 /* : Bool */;
1223 short int var_36 /* var : Bool */;
1224 val* var37 /* : nullable Object */;
1225 static val* varonce38;
1226 val* var39 /* : String */;
1227 char* var40 /* : NativeString */;
1228 long var41 /* : Int */;
1229 val* var42 /* : String */;
1230 short int var43 /* : Bool */;
1231 val* var44 /* : nullable Object */;
1232 static val* varonce45;
1233 val* var46 /* : String */;
1234 char* var47 /* : NativeString */;
1235 long var48 /* : Int */;
1236 val* var49 /* : String */;
1237 val* var50 /* : String */;
1238 if (varonce) {
1239 var1 = varonce;
1240 } else {
1241 var2 = "/";
1242 var3 = 1;
1243 var4 = string__NativeString__to_s_with_length(var2, var3);
1244 var1 = var4;
1245 varonce = var1;
1246 }
1247 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var1) /* split_with on <self:String>*/;
1248 var_a = var5;
1249 var6 = NEW_array__Array(&type_array__Arraystring__String);
1250 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
1251 CHECK_NEW_array__Array(var6);
1252 var_a2 = var6;
1253 var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on <var_a:Array[String]>*/;
1254 for(;;) {
1255 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1256 if(!var8) break;
1257 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1258 var_x = var9;
1259 if (varonce10) {
1260 var11 = varonce10;
1261 } else {
1262 var12 = ".";
1263 var13 = 1;
1264 var14 = string__NativeString__to_s_with_length(var12, var13);
1265 var11 = var14;
1266 varonce10 = var11;
1267 }
1268 var15 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var11) /* == on <var_x:String>*/;
1269 if (var15){
1270 goto CONTINUE_label;
1271 } else {
1272 }
1273 if (varonce17) {
1274 var18 = varonce17;
1275 } else {
1276 var19 = "";
1277 var20 = 0;
1278 var21 = string__NativeString__to_s_with_length(var19, var20);
1279 var18 = var21;
1280 varonce17 = var18;
1281 }
1282 var22 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var18) /* == on <var_x:String>*/;
1283 var_ = var22;
1284 if (var22){
1285 var23 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1286 var24 = !var23;
1287 var16 = var24;
1288 } else {
1289 var16 = var_;
1290 }
1291 if (var16){
1292 goto CONTINUE_label;
1293 } else {
1294 }
1295 if (varonce27) {
1296 var28 = varonce27;
1297 } else {
1298 var29 = "..";
1299 var30 = 2;
1300 var31 = string__NativeString__to_s_with_length(var29, var30);
1301 var28 = var31;
1302 varonce27 = var28;
1303 }
1304 var32 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var28) /* == on <var_x:String>*/;
1305 var_33 = var32;
1306 if (var32){
1307 var34 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1308 var35 = !var34;
1309 var26 = var35;
1310 } else {
1311 var26 = var_33;
1312 }
1313 var_36 = var26;
1314 if (var26){
1315 var37 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var_a2) /* last on <var_a2:Array[String]>*/;
1316 if (varonce38) {
1317 var39 = varonce38;
1318 } else {
1319 var40 = "..";
1320 var41 = 2;
1321 var42 = string__NativeString__to_s_with_length(var40, var41);
1322 var39 = var42;
1323 varonce38 = var39;
1324 }
1325 var43 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___33d_61d]))(var37, var39) /* != on <var37:nullable Object(String)>*/;
1326 var25 = var43;
1327 } else {
1328 var25 = var_36;
1329 }
1330 if (var25){
1331 var44 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_a2) /* pop on <var_a2:Array[String]>*/;
1332 var44;
1333 goto CONTINUE_label;
1334 } else {
1335 }
1336 ((void (*)(val*, val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__push]))(var_a2, var_x) /* push on <var_a2:Array[String]>*/;
1337 CONTINUE_label: (void)0;
1338 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1339 }
1340 BREAK_label: (void)0;
1341 if (varonce45) {
1342 var46 = varonce45;
1343 } else {
1344 var47 = "/";
1345 var48 = 1;
1346 var49 = string__NativeString__to_s_with_length(var47, var48);
1347 var46 = var49;
1348 varonce45 = var46;
1349 }
1350 var50 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var46) /* join on <var_a2:Array[String]>*/;
1351 var = var50;
1352 goto RET_LABEL;
1353 RET_LABEL:;
1354 return var;
1355 }
1356 /* method file#String#simplify_path for (self: Object): String */
1357 val* VIRTUAL_file__String__simplify_path(val* self) {
1358 val* var /* : String */;
1359 val* var1 /* : String */;
1360 var1 = file__String__simplify_path(self);
1361 var = var1;
1362 RET_LABEL:;
1363 return var;
1364 }
1365 /* method file#String#join_path for (self: String, String): String */
1366 val* file__String__join_path(val* self, val* p0) {
1367 val* var /* : String */;
1368 val* var_path /* var path: String */;
1369 short int var1 /* : Bool */;
1370 short int var2 /* : Bool */;
1371 long var3 /* : Int */;
1372 val* var4 /* : nullable Object */;
1373 char var5 /* : Char */;
1374 short int var6 /* : Bool */;
1375 short int var8 /* : Bool */;
1376 char var9 /* : Char */;
1377 val* var10 /* : Array[Object] */;
1378 long var11 /* : Int */;
1379 val* var_ /* var : Array[Object] */;
1380 static val* varonce;
1381 val* var12 /* : String */;
1382 char* var13 /* : NativeString */;
1383 long var14 /* : Int */;
1384 val* var15 /* : String */;
1385 static val* varonce16;
1386 val* var17 /* : String */;
1387 char* var18 /* : NativeString */;
1388 long var19 /* : Int */;
1389 val* var20 /* : String */;
1390 static val* varonce21;
1391 val* var22 /* : String */;
1392 char* var23 /* : NativeString */;
1393 long var24 /* : Int */;
1394 val* var25 /* : String */;
1395 val* var26 /* : String */;
1396 var_path = p0;
1397 var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path) /* is_empty on <var_path:String>*/;
1398 if (var1){
1399 var = self;
1400 goto RET_LABEL;
1401 } else {
1402 }
1403 var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:String>*/;
1404 if (var2){
1405 var = var_path;
1406 goto RET_LABEL;
1407 } else {
1408 }
1409 var3 = 0;
1410 var4 = ((val* (*)(val*, long))(var_path->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_path, var3) /* [] on <var_path:String>*/;
1411 var5 = '/';
1412 { /* Inline kernel#Char#== (var4,var5) */
1413 var8 = (var4 != NULL) && (var4->class == &class_kernel__Char);
1414 if (var8) {
1415 var9 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
1416 var8 = (var9 == var5);
1417 }
1418 var6 = var8;
1419 goto RET_LABEL7;
1420 RET_LABEL7:(void)0;
1421 }
1422 if (var6){
1423 var = var_path;
1424 goto RET_LABEL;
1425 } else {
1426 }
1427 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1428 var11 = 5;
1429 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[Object]>*/;
1430 CHECK_NEW_array__Array(var10);
1431 var_ = var10;
1432 if (varonce) {
1433 var12 = varonce;
1434 } else {
1435 var13 = "";
1436 var14 = 0;
1437 var15 = string__NativeString__to_s_with_length(var13, var14);
1438 var12 = var15;
1439 varonce = var12;
1440 }
1441 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
1442 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, self) /* add on <var_:Array[Object]>*/;
1443 if (varonce16) {
1444 var17 = varonce16;
1445 } else {
1446 var18 = "/";
1447 var19 = 1;
1448 var20 = string__NativeString__to_s_with_length(var18, var19);
1449 var17 = var20;
1450 varonce16 = var17;
1451 }
1452 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
1453 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path) /* add on <var_:Array[Object]>*/;
1454 if (varonce21) {
1455 var22 = varonce21;
1456 } else {
1457 var23 = "";
1458 var24 = 0;
1459 var25 = string__NativeString__to_s_with_length(var23, var24);
1460 var22 = var25;
1461 varonce21 = var22;
1462 }
1463 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
1464 var26 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1465 var = var26;
1466 goto RET_LABEL;
1467 RET_LABEL:;
1468 return var;
1469 }
1470 /* method file#String#join_path for (self: Object, String): String */
1471 val* VIRTUAL_file__String__join_path(val* self, val* p0) {
1472 val* var /* : String */;
1473 val* var1 /* : String */;
1474 var1 = file__String__join_path(self, p0);
1475 var = var1;
1476 RET_LABEL:;
1477 return var;
1478 }
1479 /* method file#String#mkdir for (self: String) */
1480 void file__String__mkdir(val* self) {
1481 static val* varonce;
1482 val* var /* : String */;
1483 char* var1 /* : NativeString */;
1484 long var2 /* : Int */;
1485 val* var3 /* : String */;
1486 val* var4 /* : Array[String] */;
1487 val* var_dirs /* var dirs: Array[String] */;
1488 val* var5 /* : Buffer */;
1489 val* var_path /* var path: Buffer */;
1490 short int var6 /* : Bool */;
1491 long var7 /* : Int */;
1492 val* var8 /* : nullable Object */;
1493 short int var9 /* : Bool */;
1494 char var10 /* : Char */;
1495 val* var11 /* : nullable Object */;
1496 val* var12 /* : Iterator[nullable Object] */;
1497 short int var13 /* : Bool */;
1498 val* var14 /* : nullable Object */;
1499 val* var_d /* var d: String */;
1500 short int var15 /* : Bool */;
1501 char var16 /* : Char */;
1502 val* var17 /* : nullable Object */;
1503 val* var18 /* : String */;
1504 char* var19 /* : NativeString */;
1505 short int var20 /* : Bool */;
1506 if (varonce) {
1507 var = varonce;
1508 } else {
1509 var1 = "/";
1510 var2 = 1;
1511 var3 = string__NativeString__to_s_with_length(var1, var2);
1512 var = var3;
1513 varonce = var;
1514 }
1515 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var) /* split_with on <self:String>*/;
1516 var_dirs = var4;
1517 var5 = NEW_string__Buffer(&type_string__Buffer);
1518 ((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on <var5:Buffer>*/;
1519 CHECK_NEW_string__Buffer(var5);
1520 var_path = var5;
1521 var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on <var_dirs:Array[String]>*/;
1522 if (var6){
1523 goto RET_LABEL;
1524 } else {
1525 }
1526 var7 = 0;
1527 var8 = ((val* (*)(val*, long))(var_dirs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_dirs, var7) /* [] on <var_dirs:Array[String]>*/;
1528 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var8) /* is_empty on <var8:nullable Object(String)>*/;
1529 if (var9){
1530 var10 = '/';
1531 var11 = BOX_kernel__Char(var10); /* autobox from Char to nullable Object */
1532 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var11) /* add on <var_path:Buffer>*/;
1533 } else {
1534 }
1535 var12 = ((val* (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_dirs) /* iterator on <var_dirs:Array[String]>*/;
1536 for(;;) {
1537 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
1538 if(!var13) break;
1539 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
1540 var_d = var14;
1541 var15 = ((short int (*)(val*))(var_d->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_d) /* is_empty on <var_d:String>*/;
1542 if (var15){
1543 goto CONTINUE_label;
1544 } else {
1545 }
1546 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__Sequence__append]))(var_path, var_d) /* append on <var_path:Buffer>*/;
1547 var16 = '/';
1548 var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */
1549 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var17) /* add on <var_path:Buffer>*/;
1550 var18 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__Object__to_s]))(var_path) /* to_s on <var_path:Buffer>*/;
1551 var19 = ((char* (*)(val*))(var18->class->vft[COLOR_string__String__to_cstring]))(var18) /* to_cstring on <var18:String>*/;
1552 var20 = file__NativeString__file_mkdir(var19);
1553 var20;
1554 CONTINUE_label: (void)0;
1555 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
1556 }
1557 BREAK_label: (void)0;
1558 RET_LABEL:;
1559 }
1560 /* method file#String#mkdir for (self: Object) */
1561 void VIRTUAL_file__String__mkdir(val* self) {
1562 file__String__mkdir(self);
1563 RET_LABEL:;
1564 }
1565 /* method file#String#chdir for (self: String) */
1566 void file__String__chdir(val* self) {
1567 char* var /* : NativeString */;
1568 var = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
1569 file__NativeString__file_chdir(var);
1570 RET_LABEL:;
1571 }
1572 /* method file#String#chdir for (self: Object) */
1573 void VIRTUAL_file__String__chdir(val* self) {
1574 file__String__chdir(self);
1575 RET_LABEL:;
1576 }
1577 /* method file#String#file_extension for (self: String): nullable String */
1578 val* file__String__file_extension(val* self) {
1579 val* var /* : nullable String */;
1580 char var1 /* : Char */;
1581 long var2 /* : Int */;
1582 val* var3 /* : nullable Object */;
1583 long var_last_slash /* var last_slash: Int */;
1584 long var4 /* : Int */;
1585 short int var5 /* : Bool */;
1586 short int var7 /* : Bool */;
1587 int cltype;
1588 int idtype;
1589 const char* var_class_name;
1590 short int var8 /* : Bool */;
1591 long var9 /* : Int */;
1592 long var10 /* : Int */;
1593 long var12 /* : Int */;
1594 long var13 /* : Int */;
1595 val* var14 /* : String */;
1596 val* var15 /* : null */;
1597 var1 = '.';
1598 var3 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
1599 var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(self, var3) /* last_index_of on <self:String>*/;
1600 var_last_slash = var2;
1601 var4 = 0;
1602 { /* Inline kernel#Int#>= (var_last_slash,var4) */
1603 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1604 /* <var4:Int> isa OTHER */
1605 var7 = 1; /* easy <var4:Int> isa OTHER*/
1606 if (!var7) {
1607 var_class_name = type_kernel__Int.name;
1608 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1609 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
1610 exit(1);
1611 }
1612 var8 = var_last_slash >= var4;
1613 var5 = var8;
1614 goto RET_LABEL6;
1615 RET_LABEL6:(void)0;
1616 }
1617 if (var5){
1618 var9 = 1;
1619 { /* Inline kernel#Int#+ (var_last_slash,var9) */
1620 var12 = var_last_slash + var9;
1621 var10 = var12;
1622 goto RET_LABEL11;
1623 RET_LABEL11:(void)0;
1624 }
1625 var13 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
1626 var14 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var10, var13) /* substring on <self:String>*/;
1627 var = var14;
1628 goto RET_LABEL;
1629 } else {
1630 var15 = NULL;
1631 var = var15;
1632 goto RET_LABEL;
1633 }
1634 RET_LABEL:;
1635 return var;
1636 }
1637 /* method file#String#file_extension for (self: Object): nullable String */
1638 val* VIRTUAL_file__String__file_extension(val* self) {
1639 val* var /* : nullable String */;
1640 val* var1 /* : nullable String */;
1641 var1 = file__String__file_extension(self);
1642 var = var1;
1643 RET_LABEL:;
1644 return var;
1645 }
1646 /* method file#String#files for (self: String): Set[String] */
1647 val* file__String__files(val* self) {
1648 val* var /* : Set[String] */;
1649 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#String#files at lib/standard/file.nit:345,2--346,159\n");
1650 exit(1);
1651 RET_LABEL:;
1652 return var;
1653 }
1654 /* method file#String#files for (self: Object): Set[String] */
1655 val* VIRTUAL_file__String__files(val* self) {
1656 val* var /* : Set[String] */;
1657 val* var1 /* : Set[String] */;
1658 var1 = file__String__files(self);
1659 var = var1;
1660 RET_LABEL:;
1661 return var;
1662 }
1663 /* method file#NativeString#file_exists for (self: NativeString): Bool */
1664 short int file__NativeString__file_exists(char* self) {
1665 short int var /* : Bool */;
1666 short int var1 /* : Bool */;
1667 var1 = string_NativeString_NativeString_file_exists_0(self);
1668 var = var1;
1669 goto RET_LABEL;
1670 RET_LABEL:;
1671 return var;
1672 }
1673 /* method file#NativeString#file_exists for (self: Object): Bool */
1674 short int VIRTUAL_file__NativeString__file_exists(val* self) {
1675 short int var /* : Bool */;
1676 short int var1 /* : Bool */;
1677 char* var2 /* : NativeString */;
1678 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1679 var1 = file__NativeString__file_exists(var2);
1680 var = var1;
1681 RET_LABEL:;
1682 return var;
1683 }
1684 /* method file#NativeString#file_stat for (self: NativeString): FileStat */
1685 void* file__NativeString__file_stat(char* self) {
1686 void* var /* : FileStat */;
1687 void* var1 /* : FileStat */;
1688 var1 = string_NativeString_NativeString_file_stat_0(self);
1689 var = var1;
1690 goto RET_LABEL;
1691 RET_LABEL:;
1692 return var;
1693 }
1694 /* method file#NativeString#file_stat for (self: Object): FileStat */
1695 void* VIRTUAL_file__NativeString__file_stat(val* self) {
1696 void* var /* : FileStat */;
1697 void* var1 /* : FileStat */;
1698 char* var2 /* : NativeString */;
1699 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1700 var1 = file__NativeString__file_stat(var2);
1701 var = var1;
1702 RET_LABEL:;
1703 return var;
1704 }
1705 /* method file#NativeString#file_lstat for (self: NativeString): FileStat */
1706 void* file__NativeString__file_lstat(char* self) {
1707 void* var /* : FileStat */;
1708 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#NativeString#file_lstat at lib/standard/file.nit:352,2--359,3\n");
1709 exit(1);
1710 RET_LABEL:;
1711 return var;
1712 }
1713 /* method file#NativeString#file_lstat for (self: Object): FileStat */
1714 void* VIRTUAL_file__NativeString__file_lstat(val* self) {
1715 void* var /* : FileStat */;
1716 void* var1 /* : FileStat */;
1717 char* var2 /* : NativeString */;
1718 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1719 var1 = file__NativeString__file_lstat(var2);
1720 var = var1;
1721 RET_LABEL:;
1722 return var;
1723 }
1724 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
1725 short int file__NativeString__file_mkdir(char* self) {
1726 short int var /* : Bool */;
1727 short int var1 /* : Bool */;
1728 var1 = string_NativeString_NativeString_file_mkdir_0(self);
1729 var = var1;
1730 goto RET_LABEL;
1731 RET_LABEL:;
1732 return var;
1733 }
1734 /* method file#NativeString#file_mkdir for (self: Object): Bool */
1735 short int VIRTUAL_file__NativeString__file_mkdir(val* self) {
1736 short int var /* : Bool */;
1737 short int var1 /* : Bool */;
1738 char* var2 /* : NativeString */;
1739 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1740 var1 = file__NativeString__file_mkdir(var2);
1741 var = var1;
1742 RET_LABEL:;
1743 return var;
1744 }
1745 /* method file#NativeString#file_delete for (self: NativeString): Bool */
1746 short int file__NativeString__file_delete(char* self) {
1747 short int var /* : Bool */;
1748 short int var1 /* : Bool */;
1749 var1 = string_NativeString_NativeString_file_delete_0(self);
1750 var = var1;
1751 goto RET_LABEL;
1752 RET_LABEL:;
1753 return var;
1754 }
1755 /* method file#NativeString#file_delete for (self: Object): Bool */
1756 short int VIRTUAL_file__NativeString__file_delete(val* self) {
1757 short int var /* : Bool */;
1758 short int var1 /* : Bool */;
1759 char* var2 /* : NativeString */;
1760 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1761 var1 = file__NativeString__file_delete(var2);
1762 var = var1;
1763 RET_LABEL:;
1764 return var;
1765 }
1766 /* method file#NativeString#file_chdir for (self: NativeString) */
1767 void file__NativeString__file_chdir(char* self) {
1768 string_NativeString_NativeString_file_chdir_0(self);
1769 RET_LABEL:;
1770 }
1771 /* method file#NativeString#file_chdir for (self: Object) */
1772 void VIRTUAL_file__NativeString__file_chdir(val* self) {
1773 char* var /* : NativeString */;
1774 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1775 file__NativeString__file_chdir(var);
1776 RET_LABEL:;
1777 }
1778 /* method file#FileStat#mode for (self: FileStat): Int */
1779 long file__FileStat__mode(void* self) {
1780 long var /* : Int */;
1781 long var1 /* : Int */;
1782 var1 = file_FileStat_FileStat_mode_0(self);
1783 var = var1;
1784 goto RET_LABEL;
1785 RET_LABEL:;
1786 return var;
1787 }
1788 /* method file#FileStat#mode for (self: Object): Int */
1789 long VIRTUAL_file__FileStat__mode(val* self) {
1790 long var /* : Int */;
1791 long var1 /* : Int */;
1792 void* var2 /* : FileStat */;
1793 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1794 var1 = file__FileStat__mode(var2);
1795 var = var1;
1796 RET_LABEL:;
1797 return var;
1798 }
1799 /* method file#FileStat#atime for (self: FileStat): Int */
1800 long file__FileStat__atime(void* self) {
1801 long var /* : Int */;
1802 long var1 /* : Int */;
1803 var1 = file_FileStat_FileStat_atime_0(self);
1804 var = var1;
1805 goto RET_LABEL;
1806 RET_LABEL:;
1807 return var;
1808 }
1809 /* method file#FileStat#atime for (self: Object): Int */
1810 long VIRTUAL_file__FileStat__atime(val* self) {
1811 long var /* : Int */;
1812 long var1 /* : Int */;
1813 void* var2 /* : FileStat */;
1814 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1815 var1 = file__FileStat__atime(var2);
1816 var = var1;
1817 RET_LABEL:;
1818 return var;
1819 }
1820 /* method file#FileStat#ctime for (self: FileStat): Int */
1821 long file__FileStat__ctime(void* self) {
1822 long var /* : Int */;
1823 long var1 /* : Int */;
1824 var1 = file_FileStat_FileStat_ctime_0(self);
1825 var = var1;
1826 goto RET_LABEL;
1827 RET_LABEL:;
1828 return var;
1829 }
1830 /* method file#FileStat#ctime for (self: Object): Int */
1831 long VIRTUAL_file__FileStat__ctime(val* self) {
1832 long var /* : Int */;
1833 long var1 /* : Int */;
1834 void* var2 /* : FileStat */;
1835 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1836 var1 = file__FileStat__ctime(var2);
1837 var = var1;
1838 RET_LABEL:;
1839 return var;
1840 }
1841 /* method file#FileStat#mtime for (self: FileStat): Int */
1842 long file__FileStat__mtime(void* self) {
1843 long var /* : Int */;
1844 long var1 /* : Int */;
1845 var1 = file_FileStat_FileStat_mtime_0(self);
1846 var = var1;
1847 goto RET_LABEL;
1848 RET_LABEL:;
1849 return var;
1850 }
1851 /* method file#FileStat#mtime for (self: Object): Int */
1852 long VIRTUAL_file__FileStat__mtime(val* self) {
1853 long var /* : Int */;
1854 long var1 /* : Int */;
1855 void* var2 /* : FileStat */;
1856 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1857 var1 = file__FileStat__mtime(var2);
1858 var = var1;
1859 RET_LABEL:;
1860 return var;
1861 }
1862 /* method file#FileStat#size for (self: FileStat): Int */
1863 long file__FileStat__size(void* self) {
1864 long var /* : Int */;
1865 long var1 /* : Int */;
1866 var1 = file_FileStat_FileStat_size_0(self);
1867 var = var1;
1868 goto RET_LABEL;
1869 RET_LABEL:;
1870 return var;
1871 }
1872 /* method file#FileStat#size for (self: Object): Int */
1873 long VIRTUAL_file__FileStat__size(val* self) {
1874 long var /* : Int */;
1875 long var1 /* : Int */;
1876 void* var2 /* : FileStat */;
1877 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1878 var1 = file__FileStat__size(var2);
1879 var = var1;
1880 RET_LABEL:;
1881 return var;
1882 }
1883 /* method file#FileStat#is_reg for (self: FileStat): Bool */
1884 short int file__FileStat__is_reg(void* self) {
1885 short int var /* : Bool */;
1886 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_reg at lib/standard/file.nit:373,2--54\n");
1887 exit(1);
1888 RET_LABEL:;
1889 return var;
1890 }
1891 /* method file#FileStat#is_reg for (self: Object): Bool */
1892 short int VIRTUAL_file__FileStat__is_reg(val* self) {
1893 short int var /* : Bool */;
1894 short int var1 /* : Bool */;
1895 void* var2 /* : FileStat */;
1896 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1897 var1 = file__FileStat__is_reg(var2);
1898 var = var1;
1899 RET_LABEL:;
1900 return var;
1901 }
1902 /* method file#FileStat#is_dir for (self: FileStat): Bool */
1903 short int file__FileStat__is_dir(void* self) {
1904 short int var /* : Bool */;
1905 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_dir at lib/standard/file.nit:374,2--54\n");
1906 exit(1);
1907 RET_LABEL:;
1908 return var;
1909 }
1910 /* method file#FileStat#is_dir for (self: Object): Bool */
1911 short int VIRTUAL_file__FileStat__is_dir(val* self) {
1912 short int var /* : Bool */;
1913 short int var1 /* : Bool */;
1914 void* var2 /* : FileStat */;
1915 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1916 var1 = file__FileStat__is_dir(var2);
1917 var = var1;
1918 RET_LABEL:;
1919 return var;
1920 }
1921 /* method file#FileStat#is_chr for (self: FileStat): Bool */
1922 short int file__FileStat__is_chr(void* self) {
1923 short int var /* : Bool */;
1924 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_chr at lib/standard/file.nit:375,2--54\n");
1925 exit(1);
1926 RET_LABEL:;
1927 return var;
1928 }
1929 /* method file#FileStat#is_chr for (self: Object): Bool */
1930 short int VIRTUAL_file__FileStat__is_chr(val* self) {
1931 short int var /* : Bool */;
1932 short int var1 /* : Bool */;
1933 void* var2 /* : FileStat */;
1934 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1935 var1 = file__FileStat__is_chr(var2);
1936 var = var1;
1937 RET_LABEL:;
1938 return var;
1939 }
1940 /* method file#FileStat#is_blk for (self: FileStat): Bool */
1941 short int file__FileStat__is_blk(void* self) {
1942 short int var /* : Bool */;
1943 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_blk at lib/standard/file.nit:376,2--54\n");
1944 exit(1);
1945 RET_LABEL:;
1946 return var;
1947 }
1948 /* method file#FileStat#is_blk for (self: Object): Bool */
1949 short int VIRTUAL_file__FileStat__is_blk(val* self) {
1950 short int var /* : Bool */;
1951 short int var1 /* : Bool */;
1952 void* var2 /* : FileStat */;
1953 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1954 var1 = file__FileStat__is_blk(var2);
1955 var = var1;
1956 RET_LABEL:;
1957 return var;
1958 }
1959 /* method file#FileStat#is_fifo for (self: FileStat): Bool */
1960 short int file__FileStat__is_fifo(void* self) {
1961 short int var /* : Bool */;
1962 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:377,2--56\n");
1963 exit(1);
1964 RET_LABEL:;
1965 return var;
1966 }
1967 /* method file#FileStat#is_fifo for (self: Object): Bool */
1968 short int VIRTUAL_file__FileStat__is_fifo(val* self) {
1969 short int var /* : Bool */;
1970 short int var1 /* : Bool */;
1971 void* var2 /* : FileStat */;
1972 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1973 var1 = file__FileStat__is_fifo(var2);
1974 var = var1;
1975 RET_LABEL:;
1976 return var;
1977 }
1978 /* method file#FileStat#is_lnk for (self: FileStat): Bool */
1979 short int file__FileStat__is_lnk(void* self) {
1980 short int var /* : Bool */;
1981 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:378,2--54\n");
1982 exit(1);
1983 RET_LABEL:;
1984 return var;
1985 }
1986 /* method file#FileStat#is_lnk for (self: Object): Bool */
1987 short int VIRTUAL_file__FileStat__is_lnk(val* self) {
1988 short int var /* : Bool */;
1989 short int var1 /* : Bool */;
1990 void* var2 /* : FileStat */;
1991 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1992 var1 = file__FileStat__is_lnk(var2);
1993 var = var1;
1994 RET_LABEL:;
1995 return var;
1996 }
1997 /* method file#FileStat#is_sock for (self: FileStat): Bool */
1998 short int file__FileStat__is_sock(void* self) {
1999 short int var /* : Bool */;
2000 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_sock at lib/standard/file.nit:379,2--56\n");
2001 exit(1);
2002 RET_LABEL:;
2003 return var;
2004 }
2005 /* method file#FileStat#is_sock for (self: Object): Bool */
2006 short int VIRTUAL_file__FileStat__is_sock(val* self) {
2007 short int var /* : Bool */;
2008 short int var1 /* : Bool */;
2009 void* var2 /* : FileStat */;
2010 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2011 var1 = file__FileStat__is_sock(var2);
2012 var = var1;
2013 RET_LABEL:;
2014 return var;
2015 }
2016 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
2017 long file__NativeFile__io_read(void* self, char* p0, long p1) {
2018 long var /* : Int */;
2019 long var1 /* : Int */;
2020 var1 = file_NativeFile_NativeFile_io_read_2(self, p0, p1);
2021 var = var1;
2022 goto RET_LABEL;
2023 RET_LABEL:;
2024 return var;
2025 }
2026 /* method file#NativeFile#io_read for (self: Object, NativeString, Int): Int */
2027 long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) {
2028 long var /* : Int */;
2029 long var1 /* : Int */;
2030 void* var2 /* : NativeFile */;
2031 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2032 var1 = file__NativeFile__io_read(var2, p0, p1);
2033 var = var1;
2034 RET_LABEL:;
2035 return var;
2036 }
2037 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */
2038 long file__NativeFile__io_write(void* self, char* p0, long p1) {
2039 long var /* : Int */;
2040 long var1 /* : Int */;
2041 var1 = file_NativeFile_NativeFile_io_write_2(self, p0, p1);
2042 var = var1;
2043 goto RET_LABEL;
2044 RET_LABEL:;
2045 return var;
2046 }
2047 /* method file#NativeFile#io_write for (self: Object, NativeString, Int): Int */
2048 long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) {
2049 long var /* : Int */;
2050 long var1 /* : Int */;
2051 void* var2 /* : NativeFile */;
2052 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2053 var1 = file__NativeFile__io_write(var2, p0, p1);
2054 var = var1;
2055 RET_LABEL:;
2056 return var;
2057 }
2058 /* method file#NativeFile#io_close for (self: NativeFile): Int */
2059 long file__NativeFile__io_close(void* self) {
2060 long var /* : Int */;
2061 long var1 /* : Int */;
2062 var1 = file_NativeFile_NativeFile_io_close_0(self);
2063 var = var1;
2064 goto RET_LABEL;
2065 RET_LABEL:;
2066 return var;
2067 }
2068 /* method file#NativeFile#io_close for (self: Object): Int */
2069 long VIRTUAL_file__NativeFile__io_close(val* self) {
2070 long var /* : Int */;
2071 long var1 /* : Int */;
2072 void* var2 /* : NativeFile */;
2073 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2074 var1 = file__NativeFile__io_close(var2);
2075 var = var1;
2076 RET_LABEL:;
2077 return var;
2078 }
2079 /* method file#NativeFile#file_stat for (self: NativeFile): FileStat */
2080 void* file__NativeFile__file_stat(void* self) {
2081 void* var /* : FileStat */;
2082 void* var1 /* : FileStat */;
2083 var1 = file_NativeFile_NativeFile_file_stat_0(self);
2084 var = var1;
2085 goto RET_LABEL;
2086 RET_LABEL:;
2087 return var;
2088 }
2089 /* method file#NativeFile#file_stat for (self: Object): FileStat */
2090 void* VIRTUAL_file__NativeFile__file_stat(val* self) {
2091 void* var /* : FileStat */;
2092 void* var1 /* : FileStat */;
2093 void* var2 /* : NativeFile */;
2094 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2095 var1 = file__NativeFile__file_stat(var2);
2096 var = var1;
2097 RET_LABEL:;
2098 return var;
2099 }
2100 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
2101 void* file__NativeFile__io_open_read(void* self, char* p0) {
2102 void* var /* : NativeFile */;
2103 void* var1 /* : NativeFile */;
2104 var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
2105 var = var1;
2106 goto RET_LABEL;
2107 RET_LABEL:;
2108 return var;
2109 }
2110 /* method file#NativeFile#io_open_read for (self: Object, NativeString): NativeFile */
2111 void* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) {
2112 void* var /* : NativeFile */;
2113 val* var1 /* : Object */;
2114 void* var2 /* : NativeFile */;
2115 void* var3 /* : NativeFile */;
2116 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2117 var1 = file__NativeFile__io_open_read(var2, p0);
2118 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2119 var = var3;
2120 RET_LABEL:;
2121 return var;
2122 }
2123 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
2124 void* file__NativeFile__io_open_write(void* self, char* p0) {
2125 void* var /* : NativeFile */;
2126 void* var1 /* : NativeFile */;
2127 var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
2128 var = var1;
2129 goto RET_LABEL;
2130 RET_LABEL:;
2131 return var;
2132 }
2133 /* method file#NativeFile#io_open_write for (self: Object, NativeString): NativeFile */
2134 void* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) {
2135 void* var /* : NativeFile */;
2136 val* var1 /* : Object */;
2137 void* var2 /* : NativeFile */;
2138 void* var3 /* : NativeFile */;
2139 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2140 var1 = file__NativeFile__io_open_write(var2, p0);
2141 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2142 var = var3;
2143 RET_LABEL:;
2144 return var;
2145 }
2146 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
2147 void* file__NativeFile__native_stdin(void* self) {
2148 void* var /* : NativeFile */;
2149 void* var1 /* : NativeFile */;
2150 var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
2151 var = var1;
2152 goto RET_LABEL;
2153 RET_LABEL:;
2154 return var;
2155 }
2156 /* method file#NativeFile#native_stdin for (self: Object): NativeFile */
2157 void* VIRTUAL_file__NativeFile__native_stdin(val* self) {
2158 void* var /* : NativeFile */;
2159 val* var1 /* : Object */;
2160 void* var2 /* : NativeFile */;
2161 void* var3 /* : NativeFile */;
2162 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2163 var1 = file__NativeFile__native_stdin(var2);
2164 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2165 var = var3;
2166 RET_LABEL:;
2167 return var;
2168 }
2169 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
2170 void* file__NativeFile__native_stdout(void* self) {
2171 void* var /* : NativeFile */;
2172 void* var1 /* : NativeFile */;
2173 var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
2174 var = var1;
2175 goto RET_LABEL;
2176 RET_LABEL:;
2177 return var;
2178 }
2179 /* method file#NativeFile#native_stdout for (self: Object): NativeFile */
2180 void* VIRTUAL_file__NativeFile__native_stdout(val* self) {
2181 void* var /* : NativeFile */;
2182 val* var1 /* : Object */;
2183 void* var2 /* : NativeFile */;
2184 void* var3 /* : NativeFile */;
2185 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2186 var1 = file__NativeFile__native_stdout(var2);
2187 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2188 var = var3;
2189 RET_LABEL:;
2190 return var;
2191 }
2192 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
2193 void* file__NativeFile__native_stderr(void* self) {
2194 void* var /* : NativeFile */;
2195 void* var1 /* : NativeFile */;
2196 var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
2197 var = var1;
2198 goto RET_LABEL;
2199 RET_LABEL:;
2200 return var;
2201 }
2202 /* method file#NativeFile#native_stderr for (self: Object): NativeFile */
2203 void* VIRTUAL_file__NativeFile__native_stderr(val* self) {
2204 void* var /* : NativeFile */;
2205 val* var1 /* : Object */;
2206 void* var2 /* : NativeFile */;
2207 void* var3 /* : NativeFile */;
2208 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2209 var1 = file__NativeFile__native_stderr(var2);
2210 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2211 var = var3;
2212 RET_LABEL:;
2213 return var;
2214 }
2215 /* method file#Object#stdin for (self: Object): Stdin */
2216 val* file__Object__stdin(val* self) {
2217 val* var /* : Stdin */;
2218 static val* varonce;
2219 static int varonce_guard;
2220 val* var1 /* : Stdin */;
2221 val* var2 /* : Stdin */;
2222 if (varonce_guard) {
2223 var1 = varonce;
2224 } else {
2225 var2 = NEW_file__Stdin(&type_file__Stdin);
2226 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on <var2:Stdin>*/;
2227 CHECK_NEW_file__Stdin(var2);
2228 var1 = var2;
2229 varonce = var1;
2230 varonce_guard = 1;
2231 }
2232 var = var1;
2233 goto RET_LABEL;
2234 RET_LABEL:;
2235 return var;
2236 }
2237 /* method file#Object#stdin for (self: Object): Stdin */
2238 val* VIRTUAL_file__Object__stdin(val* self) {
2239 val* var /* : Stdin */;
2240 val* var1 /* : Stdin */;
2241 var1 = file__Object__stdin(self);
2242 var = var1;
2243 RET_LABEL:;
2244 return var;
2245 }
2246 /* method file#Object#stdout for (self: Object): OFStream */
2247 val* file__Object__stdout(val* self) {
2248 val* var /* : OFStream */;
2249 static val* varonce;
2250 static int varonce_guard;
2251 val* var1 /* : Stdout */;
2252 val* var2 /* : Stdout */;
2253 if (varonce_guard) {
2254 var1 = varonce;
2255 } else {
2256 var2 = NEW_file__Stdout(&type_file__Stdout);
2257 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on <var2:Stdout>*/;
2258 CHECK_NEW_file__Stdout(var2);
2259 var1 = var2;
2260 varonce = var1;
2261 varonce_guard = 1;
2262 }
2263 var = var1;
2264 goto RET_LABEL;
2265 RET_LABEL:;
2266 return var;
2267 }
2268 /* method file#Object#stdout for (self: Object): OFStream */
2269 val* VIRTUAL_file__Object__stdout(val* self) {
2270 val* var /* : OFStream */;
2271 val* var1 /* : OFStream */;
2272 var1 = file__Object__stdout(self);
2273 var = var1;
2274 RET_LABEL:;
2275 return var;
2276 }
2277 /* method file#Object#stderr for (self: Object): OFStream */
2278 val* file__Object__stderr(val* self) {
2279 val* var /* : OFStream */;
2280 static val* varonce;
2281 static int varonce_guard;
2282 val* var1 /* : Stderr */;
2283 val* var2 /* : Stderr */;
2284 if (varonce_guard) {
2285 var1 = varonce;
2286 } else {
2287 var2 = NEW_file__Stderr(&type_file__Stderr);
2288 ((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on <var2:Stderr>*/;
2289 CHECK_NEW_file__Stderr(var2);
2290 var1 = var2;
2291 varonce = var1;
2292 varonce_guard = 1;
2293 }
2294 var = var1;
2295 goto RET_LABEL;
2296 RET_LABEL:;
2297 return var;
2298 }
2299 /* method file#Object#stderr for (self: Object): OFStream */
2300 val* VIRTUAL_file__Object__stderr(val* self) {
2301 val* var /* : OFStream */;
2302 val* var1 /* : OFStream */;
2303 var1 = file__Object__stderr(self);
2304 var = var1;
2305 RET_LABEL:;
2306 return var;
2307 }