lib/mnit_linux: use annotations to link with libraries
[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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 show_backtrace(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 }
601 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var21) /* printn on <self:OFStream>*/;
602 } else {
603 }
604 RET_LABEL:;
605 }
606 /* method file#OFStream#write_native for (self: Object, NativeString, Int) */
607 void VIRTUAL_file__OFStream__write_native(val* self, char* p0, long p1) {
608 file__OFStream__write_native(self, p0, p1);
609 RET_LABEL:;
610 }
611 /* method file#OFStream#open for (self: OFStream, String) */
612 void file__OFStream__open(val* self, val* p0) {
613 val* var_path /* var path: String */;
614 void* var /* : NativeFile */;
615 char* var1 /* : NativeString */;
616 void* var2 /* : NativeFile */;
617 val* var3 /* : nullable NativeFile */;
618 val* var4 /* : nullable NativeFile */;
619 val* var5 /* : null */;
620 short int var6 /* : Bool */;
621 short int var7 /* : Bool */;
622 var_path = p0;
623 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
624 var = NULL/*special!*/;
625 var1 = ((char* (*)(val*))(var_path->class->vft[COLOR_string__String__to_cstring]))(var_path) /* to_cstring on <var_path:String>*/;
626 var2 = file__NativeFile__io_open_write(var, var1);
627 var3 = BOX_file__NativeFile(var2); /* autobox from NativeFile to nullable NativeFile */
628 self->attrs[COLOR_file__FStream___file].val = var3; /* _file on <self:OFStream> */
629 var4 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
630 var5 = NULL;
631 if (var4 == NULL) {
632 var6 = 0; /* is null */
633 } else {
634 var6 = 1; /* arg is null and recv is not */
635 }
636 if (!var6) {
637 fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
638 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 156);
639 show_backtrace(1);
640 }
641 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:OFStream> */
642 var7 = 1;
643 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:OFStream> */
644 RET_LABEL:;
645 }
646 /* method file#OFStream#open for (self: Object, String) */
647 void VIRTUAL_file__OFStream__open(val* self, val* p0) {
648 file__OFStream__open(self, p0);
649 RET_LABEL:;
650 }
651 /* method file#OFStream#init for (self: OFStream) */
652 void file__OFStream__init(val* self) {
653 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
654 RET_LABEL:;
655 }
656 /* method file#OFStream#init for (self: Object) */
657 void VIRTUAL_file__OFStream__init(val* self) {
658 file__OFStream__init(self);
659 RET_LABEL:;
660 }
661 /* method file#OFStream#without_file for (self: OFStream) */
662 void file__OFStream__without_file(val* self) {
663 ((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on <self:OFStream>*/;
664 RET_LABEL:;
665 }
666 /* method file#OFStream#without_file for (self: Object) */
667 void VIRTUAL_file__OFStream__without_file(val* self) {
668 file__OFStream__without_file(self);
669 RET_LABEL:;
670 }
671 /* method file#Stdin#init for (self: Stdin) */
672 void file__Stdin__init(val* self) {
673 void* var /* : NativeFile */;
674 void* var1 /* : NativeFile */;
675 val* var2 /* : nullable NativeFile */;
676 static val* varonce;
677 val* var3 /* : String */;
678 char* var4 /* : NativeString */;
679 long var5 /* : Int */;
680 val* var6 /* : String */;
681 long var7 /* : Int */;
682 ((void (*)(val*))(self->class->vft[COLOR_file__IFStream__init]))(self) /* init on <self:Stdin>*/;
683 var = NULL/*special!*/;
684 var1 = file__NativeFile__native_stdin(var);
685 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
686 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stdin> */
687 if (varonce) {
688 var3 = varonce;
689 } else {
690 var4 = "/dev/stdin";
691 var5 = 10;
692 var6 = string__NativeString__to_s_with_length(var4, var5);
693 var3 = var6;
694 varonce = var3;
695 }
696 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stdin> */
697 var7 = 1;
698 ((void (*)(val*, long))(self->class->vft[COLOR_stream__BufferedIStream__prepare_buffer]))(self, var7) /* prepare_buffer on <self:Stdin>*/;
699 RET_LABEL:;
700 }
701 /* method file#Stdin#init for (self: Object) */
702 void VIRTUAL_file__Stdin__init(val* self) {
703 file__Stdin__init(self);
704 RET_LABEL:;
705 }
706 /* method file#Stdin#poll_in for (self: Stdin): Bool */
707 short int file__Stdin__poll_in(val* self) {
708 short int var /* : Bool */;
709 short int var1 /* : Bool */;
710 var1 = file_stdin_poll_in(self);
711 var = var1;
712 goto RET_LABEL;
713 RET_LABEL:;
714 return var;
715 }
716 /* method file#Stdin#poll_in for (self: Object): Bool */
717 short int VIRTUAL_file__Stdin__poll_in(val* self) {
718 short int var /* : Bool */;
719 short int var1 /* : Bool */;
720 var1 = file__Stdin__poll_in(self);
721 var = var1;
722 RET_LABEL:;
723 return var;
724 }
725 /* method file#Stdout#init for (self: Stdout) */
726 void file__Stdout__init(val* self) {
727 void* var /* : NativeFile */;
728 void* var1 /* : NativeFile */;
729 val* var2 /* : nullable NativeFile */;
730 static val* varonce;
731 val* var3 /* : String */;
732 char* var4 /* : NativeString */;
733 long var5 /* : Int */;
734 val* var6 /* : String */;
735 short int var7 /* : Bool */;
736 ((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on <self:Stdout>*/;
737 var = NULL/*special!*/;
738 var1 = file__NativeFile__native_stdout(var);
739 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
740 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stdout> */
741 if (varonce) {
742 var3 = varonce;
743 } else {
744 var4 = "/dev/stdout";
745 var5 = 11;
746 var6 = string__NativeString__to_s_with_length(var4, var5);
747 var3 = var6;
748 varonce = var3;
749 }
750 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stdout> */
751 var7 = 1;
752 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:Stdout> */
753 RET_LABEL:;
754 }
755 /* method file#Stdout#init for (self: Object) */
756 void VIRTUAL_file__Stdout__init(val* self) {
757 file__Stdout__init(self);
758 RET_LABEL:;
759 }
760 /* method file#Stderr#init for (self: Stderr) */
761 void file__Stderr__init(val* self) {
762 void* var /* : NativeFile */;
763 void* var1 /* : NativeFile */;
764 val* var2 /* : nullable NativeFile */;
765 static val* varonce;
766 val* var3 /* : String */;
767 char* var4 /* : NativeString */;
768 long var5 /* : Int */;
769 val* var6 /* : String */;
770 short int var7 /* : Bool */;
771 ((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on <self:Stderr>*/;
772 var = NULL/*special!*/;
773 var1 = file__NativeFile__native_stderr(var);
774 var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
775 self->attrs[COLOR_file__FStream___file].val = var2; /* _file on <self:Stderr> */
776 if (varonce) {
777 var3 = varonce;
778 } else {
779 var4 = "/dev/stderr";
780 var5 = 11;
781 var6 = string__NativeString__to_s_with_length(var4, var5);
782 var3 = var6;
783 varonce = var3;
784 }
785 self->attrs[COLOR_file__FStream___path].val = var3; /* _path on <self:Stderr> */
786 var7 = 1;
787 self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on <self:Stderr> */
788 RET_LABEL:;
789 }
790 /* method file#Stderr#init for (self: Object) */
791 void VIRTUAL_file__Stderr__init(val* self) {
792 file__Stderr__init(self);
793 RET_LABEL:;
794 }
795 /* method file#String#file_exists for (self: String): Bool */
796 short int file__String__file_exists(val* self) {
797 short int var /* : Bool */;
798 char* var1 /* : NativeString */;
799 short int var2 /* : Bool */;
800 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
801 var2 = file__NativeString__file_exists(var1);
802 var = var2;
803 goto RET_LABEL;
804 RET_LABEL:;
805 return var;
806 }
807 /* method file#String#file_exists for (self: Object): Bool */
808 short int VIRTUAL_file__String__file_exists(val* self) {
809 short int var /* : Bool */;
810 short int var1 /* : Bool */;
811 var1 = file__String__file_exists(self);
812 var = var1;
813 RET_LABEL:;
814 return var;
815 }
816 /* method file#String#file_stat for (self: String): FileStat */
817 void* file__String__file_stat(val* self) {
818 void* var /* : FileStat */;
819 char* var1 /* : NativeString */;
820 void* var2 /* : FileStat */;
821 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
822 var2 = file__NativeString__file_stat(var1);
823 var = var2;
824 goto RET_LABEL;
825 RET_LABEL:;
826 return var;
827 }
828 /* method file#String#file_stat for (self: Object): FileStat */
829 void* VIRTUAL_file__String__file_stat(val* self) {
830 void* var /* : FileStat */;
831 void* var1 /* : FileStat */;
832 var1 = file__String__file_stat(self);
833 var = var1;
834 RET_LABEL:;
835 return var;
836 }
837 /* method file#String#file_lstat for (self: String): FileStat */
838 void* file__String__file_lstat(val* self) {
839 void* var /* : FileStat */;
840 char* var1 /* : NativeString */;
841 void* var2 /* : FileStat */;
842 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
843 var2 = file__NativeString__file_lstat(var1);
844 var = var2;
845 goto RET_LABEL;
846 RET_LABEL:;
847 return var;
848 }
849 /* method file#String#file_lstat for (self: Object): FileStat */
850 void* VIRTUAL_file__String__file_lstat(val* self) {
851 void* var /* : FileStat */;
852 void* var1 /* : FileStat */;
853 var1 = file__String__file_lstat(self);
854 var = var1;
855 RET_LABEL:;
856 return var;
857 }
858 /* method file#String#file_delete for (self: String): Bool */
859 short int file__String__file_delete(val* self) {
860 short int var /* : Bool */;
861 char* var1 /* : NativeString */;
862 short int var2 /* : Bool */;
863 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
864 var2 = file__NativeString__file_delete(var1);
865 var = var2;
866 goto RET_LABEL;
867 RET_LABEL:;
868 return var;
869 }
870 /* method file#String#file_delete for (self: Object): Bool */
871 short int VIRTUAL_file__String__file_delete(val* self) {
872 short int var /* : Bool */;
873 short int var1 /* : Bool */;
874 var1 = file__String__file_delete(self);
875 var = var1;
876 RET_LABEL:;
877 return var;
878 }
879 /* method file#String#strip_extension for (self: String, String): String */
880 val* file__String__strip_extension(val* self, val* p0) {
881 val* var /* : String */;
882 val* var_ext /* var ext: String */;
883 short int var1 /* : Bool */;
884 long var2 /* : Int */;
885 long var3 /* : Int */;
886 long var4 /* : Int */;
887 long var5 /* : Int */;
888 long var7 /* : Int */;
889 val* var8 /* : String */;
890 var_ext = p0;
891 var1 = ((short int (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__has_suffix]))(self, var_ext) /* has_suffix on <self:String>*/;
892 if (var1){
893 var2 = 0;
894 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
895 var4 = ((long (*)(val*))(var_ext->class->vft[COLOR_abstract_collection__Collection__length]))(var_ext) /* length on <var_ext:String>*/;
896 { /* Inline kernel#Int#- (var3,var4) */
897 var7 = var3 - var4;
898 var5 = var7;
899 goto RET_LABEL6;
900 RET_LABEL6:(void)0;
901 }
902 var8 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var2, var5) /* substring on <self:String>*/;
903 var = var8;
904 goto RET_LABEL;
905 } else {
906 }
907 var = self;
908 goto RET_LABEL;
909 RET_LABEL:;
910 return var;
911 }
912 /* method file#String#strip_extension for (self: Object, String): String */
913 val* VIRTUAL_file__String__strip_extension(val* self, val* p0) {
914 val* var /* : String */;
915 val* var1 /* : String */;
916 var1 = file__String__strip_extension(self, p0);
917 var = var1;
918 RET_LABEL:;
919 return var;
920 }
921 /* method file#String#basename for (self: String, String): String */
922 val* file__String__basename(val* self, val* p0) {
923 val* var /* : String */;
924 val* var_ext /* var ext: String */;
925 char var1 /* : Char */;
926 long var2 /* : Int */;
927 long var3 /* : Int */;
928 long var4 /* : Int */;
929 long var6 /* : Int */;
930 long var7 /* : Int */;
931 val* var8 /* : nullable Object */;
932 long var_pos /* var pos: Int */;
933 val* var_n /* var n: String */;
934 long var9 /* : Int */;
935 short int var10 /* : Bool */;
936 short int var12 /* : Bool */;
937 int cltype;
938 int idtype;
939 const char* var_class_name;
940 short int var13 /* : Bool */;
941 long var14 /* : Int */;
942 long var15 /* : Int */;
943 long var17 /* : Int */;
944 val* var18 /* : String */;
945 val* var19 /* : String */;
946 var_ext = p0;
947 var1 = '/';
948 var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
949 var3 = 1;
950 { /* Inline kernel#Int#- (var2,var3) */
951 var6 = var2 - var3;
952 var4 = var6;
953 goto RET_LABEL5;
954 RET_LABEL5:(void)0;
955 }
956 var8 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
957 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>*/;
958 var_pos = var7;
959 var_n = self;
960 var9 = 0;
961 { /* Inline kernel#Int#>= (var_pos,var9) */
962 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
963 /* <var9:Int> isa OTHER */
964 var12 = 1; /* easy <var9:Int> isa OTHER*/
965 if (!var12) {
966 var_class_name = type_kernel__Int.name;
967 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
968 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
969 show_backtrace(1);
970 }
971 var13 = var_pos >= var9;
972 var10 = var13;
973 goto RET_LABEL11;
974 RET_LABEL11:(void)0;
975 }
976 if (var10){
977 var14 = 1;
978 { /* Inline kernel#Int#+ (var_pos,var14) */
979 var17 = var_pos + var14;
980 var15 = var17;
981 goto RET_LABEL16;
982 RET_LABEL16:(void)0;
983 }
984 var18 = ((val* (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__substring_from]))(self, var15) /* substring_from on <self:String>*/;
985 var_n = var18;
986 } else {
987 }
988 var19 = ((val* (*)(val*, val*))(var_n->class->vft[COLOR_file__String__strip_extension]))(var_n, var_ext) /* strip_extension on <var_n:String>*/;
989 var = var19;
990 goto RET_LABEL;
991 RET_LABEL:;
992 return var;
993 }
994 /* method file#String#basename for (self: Object, String): String */
995 val* VIRTUAL_file__String__basename(val* self, val* p0) {
996 val* var /* : String */;
997 val* var1 /* : String */;
998 var1 = file__String__basename(self, p0);
999 var = var1;
1000 RET_LABEL:;
1001 return var;
1002 }
1003 /* method file#String#dirname for (self: String): String */
1004 val* file__String__dirname(val* self) {
1005 val* var /* : String */;
1006 long var1 /* : Int */;
1007 long var2 /* : Int */;
1008 long var3 /* : Int */;
1009 long var5 /* : Int */;
1010 long var_l /* var l: Int */;
1011 short int var6 /* : Bool */;
1012 long var7 /* : Int */;
1013 short int var8 /* : Bool */;
1014 short int var10 /* : Bool */;
1015 int cltype;
1016 int idtype;
1017 const char* var_class_name;
1018 short int var11 /* : Bool */;
1019 short int var_ /* var : Bool */;
1020 val* var12 /* : nullable Object */;
1021 char var13 /* : Char */;
1022 short int var14 /* : Bool */;
1023 short int var16 /* : Bool */;
1024 char var17 /* : Char */;
1025 long var18 /* : Int */;
1026 long var19 /* : Int */;
1027 long var21 /* : Int */;
1028 char var22 /* : Char */;
1029 long var23 /* : Int */;
1030 val* var24 /* : nullable Object */;
1031 long var_pos /* var pos: Int */;
1032 long var25 /* : Int */;
1033 short int var26 /* : Bool */;
1034 short int var28 /* : Bool */;
1035 int cltype29;
1036 int idtype30;
1037 const char* var_class_name31;
1038 short int var32 /* : Bool */;
1039 long var33 /* : Int */;
1040 val* var34 /* : String */;
1041 long var35 /* : Int */;
1042 short int var36 /* : Bool */;
1043 short int var38 /* : Bool */;
1044 static val* varonce;
1045 val* var39 /* : String */;
1046 char* var40 /* : NativeString */;
1047 long var41 /* : Int */;
1048 val* var42 /* : String */;
1049 static val* varonce43;
1050 val* var44 /* : String */;
1051 char* var45 /* : NativeString */;
1052 long var46 /* : Int */;
1053 val* var47 /* : String */;
1054 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
1055 var2 = 1;
1056 { /* Inline kernel#Int#- (var1,var2) */
1057 var5 = var1 - var2;
1058 var3 = var5;
1059 goto RET_LABEL4;
1060 RET_LABEL4:(void)0;
1061 }
1062 var_l = var3;
1063 var7 = 0;
1064 { /* Inline kernel#Int#> (var_l,var7) */
1065 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
1066 /* <var7:Int> isa OTHER */
1067 var10 = 1; /* easy <var7:Int> isa OTHER*/
1068 if (!var10) {
1069 var_class_name = type_kernel__Int.name;
1070 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1071 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1072 show_backtrace(1);
1073 }
1074 var11 = var_l > var7;
1075 var8 = var11;
1076 goto RET_LABEL9;
1077 RET_LABEL9:(void)0;
1078 }
1079 var_ = var8;
1080 if (var8){
1081 var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_l) /* [] on <self:String>*/;
1082 var13 = '/';
1083 { /* Inline kernel#Char#== (var12,var13) */
1084 var16 = (var12 != NULL) && (var12->class == &class_kernel__Char);
1085 if (var16) {
1086 var17 = ((struct instance_kernel__Char*)var12)->value; /* autounbox from nullable Object to Char */;
1087 var16 = (var17 == var13);
1088 }
1089 var14 = var16;
1090 goto RET_LABEL15;
1091 RET_LABEL15:(void)0;
1092 }
1093 var6 = var14;
1094 } else {
1095 var6 = var_;
1096 }
1097 if (var6){
1098 var18 = 1;
1099 { /* Inline kernel#Int#- (var_l,var18) */
1100 var21 = var_l - var18;
1101 var19 = var21;
1102 goto RET_LABEL20;
1103 RET_LABEL20:(void)0;
1104 }
1105 var_l = var19;
1106 } else {
1107 }
1108 var22 = '/';
1109 var24 = BOX_kernel__Char(var22); /* autobox from Char to nullable Object */
1110 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>*/;
1111 var_pos = var23;
1112 var25 = 0;
1113 { /* Inline kernel#Int#> (var_pos,var25) */
1114 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
1115 /* <var25:Int> isa OTHER */
1116 var28 = 1; /* easy <var25:Int> isa OTHER*/
1117 if (!var28) {
1118 var_class_name31 = type_kernel__Int.name;
1119 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
1120 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1121 show_backtrace(1);
1122 }
1123 var32 = var_pos > var25;
1124 var26 = var32;
1125 goto RET_LABEL27;
1126 RET_LABEL27:(void)0;
1127 }
1128 if (var26){
1129 var33 = 0;
1130 var34 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var33, var_pos) /* substring on <self:String>*/;
1131 var = var34;
1132 goto RET_LABEL;
1133 } else {
1134 var35 = 0;
1135 { /* Inline kernel#Int#== (var_pos,var35) */
1136 var38 = var_pos == var35;
1137 var36 = var38;
1138 goto RET_LABEL37;
1139 RET_LABEL37:(void)0;
1140 }
1141 if (var36){
1142 if (varonce) {
1143 var39 = varonce;
1144 } else {
1145 var40 = "/";
1146 var41 = 1;
1147 var42 = string__NativeString__to_s_with_length(var40, var41);
1148 var39 = var42;
1149 varonce = var39;
1150 }
1151 var = var39;
1152 goto RET_LABEL;
1153 } else {
1154 if (varonce43) {
1155 var44 = varonce43;
1156 } else {
1157 var45 = ".";
1158 var46 = 1;
1159 var47 = string__NativeString__to_s_with_length(var45, var46);
1160 var44 = var47;
1161 varonce43 = var44;
1162 }
1163 var = var44;
1164 goto RET_LABEL;
1165 }
1166 }
1167 RET_LABEL:;
1168 return var;
1169 }
1170 /* method file#String#dirname for (self: Object): String */
1171 val* VIRTUAL_file__String__dirname(val* self) {
1172 val* var /* : String */;
1173 val* var1 /* : String */;
1174 var1 = file__String__dirname(self);
1175 var = var1;
1176 RET_LABEL:;
1177 return var;
1178 }
1179 /* method file#String#realpath for (self: String): String */
1180 val* file__String__realpath(val* self) {
1181 val* var /* : String */;
1182 char* var1 /* : NativeString */;
1183 char* var2 /* : NativeString */;
1184 char* var_cs /* var cs: NativeString */;
1185 val* var3 /* : String */;
1186 val* var_res /* var res: String */;
1187 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
1188 var2 = file__NativeString__file_realpath(var1);
1189 var_cs = var2;
1190 var3 = string__NativeString__to_s_with_copy(var_cs);
1191 var_res = var3;
1192 var = var_res;
1193 goto RET_LABEL;
1194 RET_LABEL:;
1195 return var;
1196 }
1197 /* method file#String#realpath for (self: Object): String */
1198 val* VIRTUAL_file__String__realpath(val* self) {
1199 val* var /* : String */;
1200 val* var1 /* : String */;
1201 var1 = file__String__realpath(self);
1202 var = var1;
1203 RET_LABEL:;
1204 return var;
1205 }
1206 /* method file#String#simplify_path for (self: String): String */
1207 val* file__String__simplify_path(val* self) {
1208 val* var /* : String */;
1209 static val* varonce;
1210 val* var1 /* : String */;
1211 char* var2 /* : NativeString */;
1212 long var3 /* : Int */;
1213 val* var4 /* : String */;
1214 val* var5 /* : Array[String] */;
1215 val* var_a /* var a: Array[String] */;
1216 val* var6 /* : Array[String] */;
1217 val* var_a2 /* var a2: Array[String] */;
1218 val* var7 /* : Iterator[nullable Object] */;
1219 short int var8 /* : Bool */;
1220 val* var9 /* : nullable Object */;
1221 val* var_x /* var x: String */;
1222 static val* varonce10;
1223 val* var11 /* : String */;
1224 char* var12 /* : NativeString */;
1225 long var13 /* : Int */;
1226 val* var14 /* : String */;
1227 short int var15 /* : Bool */;
1228 short int var16 /* : Bool */;
1229 static val* varonce17;
1230 val* var18 /* : String */;
1231 char* var19 /* : NativeString */;
1232 long var20 /* : Int */;
1233 val* var21 /* : String */;
1234 short int var22 /* : Bool */;
1235 short int var_ /* var : Bool */;
1236 short int var23 /* : Bool */;
1237 short int var24 /* : Bool */;
1238 short int var25 /* : Bool */;
1239 short int var26 /* : Bool */;
1240 static val* varonce27;
1241 val* var28 /* : String */;
1242 char* var29 /* : NativeString */;
1243 long var30 /* : Int */;
1244 val* var31 /* : String */;
1245 short int var32 /* : Bool */;
1246 short int var_33 /* var : Bool */;
1247 short int var34 /* : Bool */;
1248 short int var35 /* : Bool */;
1249 short int var_36 /* var : Bool */;
1250 val* var37 /* : nullable Object */;
1251 static val* varonce38;
1252 val* var39 /* : String */;
1253 char* var40 /* : NativeString */;
1254 long var41 /* : Int */;
1255 val* var42 /* : String */;
1256 short int var43 /* : Bool */;
1257 val* var44 /* : nullable Object */;
1258 short int var45 /* : Bool */;
1259 static val* varonce46;
1260 val* var47 /* : String */;
1261 char* var48 /* : NativeString */;
1262 long var49 /* : Int */;
1263 val* var50 /* : String */;
1264 static val* varonce51;
1265 val* var52 /* : String */;
1266 char* var53 /* : NativeString */;
1267 long var54 /* : Int */;
1268 val* var55 /* : String */;
1269 val* var56 /* : String */;
1270 if (varonce) {
1271 var1 = varonce;
1272 } else {
1273 var2 = "/";
1274 var3 = 1;
1275 var4 = string__NativeString__to_s_with_length(var2, var3);
1276 var1 = var4;
1277 varonce = var1;
1278 }
1279 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var1) /* split_with on <self:String>*/;
1280 var_a = var5;
1281 var6 = NEW_array__Array(&type_array__Arraystring__String);
1282 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
1283 var_a2 = var6;
1284 var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on <var_a:Array[String]>*/;
1285 for(;;) {
1286 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1287 if(!var8) break;
1288 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1289 var_x = var9;
1290 if (varonce10) {
1291 var11 = varonce10;
1292 } else {
1293 var12 = ".";
1294 var13 = 1;
1295 var14 = string__NativeString__to_s_with_length(var12, var13);
1296 var11 = var14;
1297 varonce10 = var11;
1298 }
1299 var15 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var11) /* == on <var_x:String>*/;
1300 if (var15){
1301 goto CONTINUE_label;
1302 } else {
1303 }
1304 if (varonce17) {
1305 var18 = varonce17;
1306 } else {
1307 var19 = "";
1308 var20 = 0;
1309 var21 = string__NativeString__to_s_with_length(var19, var20);
1310 var18 = var21;
1311 varonce17 = var18;
1312 }
1313 var22 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var18) /* == on <var_x:String>*/;
1314 var_ = var22;
1315 if (var22){
1316 var23 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1317 var24 = !var23;
1318 var16 = var24;
1319 } else {
1320 var16 = var_;
1321 }
1322 if (var16){
1323 goto CONTINUE_label;
1324 } else {
1325 }
1326 if (varonce27) {
1327 var28 = varonce27;
1328 } else {
1329 var29 = "..";
1330 var30 = 2;
1331 var31 = string__NativeString__to_s_with_length(var29, var30);
1332 var28 = var31;
1333 varonce27 = var28;
1334 }
1335 var32 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var28) /* == on <var_x:String>*/;
1336 var_33 = var32;
1337 if (var32){
1338 var34 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1339 var35 = !var34;
1340 var26 = var35;
1341 } else {
1342 var26 = var_33;
1343 }
1344 var_36 = var26;
1345 if (var26){
1346 var37 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var_a2) /* last on <var_a2:Array[String]>*/;
1347 if (varonce38) {
1348 var39 = varonce38;
1349 } else {
1350 var40 = "..";
1351 var41 = 2;
1352 var42 = string__NativeString__to_s_with_length(var40, var41);
1353 var39 = var42;
1354 varonce38 = var39;
1355 }
1356 var43 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___33d_61d]))(var37, var39) /* != on <var37:nullable Object(String)>*/;
1357 var25 = var43;
1358 } else {
1359 var25 = var_36;
1360 }
1361 if (var25){
1362 var44 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_a2) /* pop on <var_a2:Array[String]>*/;
1363 var44;
1364 goto CONTINUE_label;
1365 } else {
1366 }
1367 ((void (*)(val*, val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__push]))(var_a2, var_x) /* push on <var_a2:Array[String]>*/;
1368 CONTINUE_label: (void)0;
1369 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1370 }
1371 BREAK_label: (void)0;
1372 var45 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1373 if (var45){
1374 if (varonce46) {
1375 var47 = varonce46;
1376 } else {
1377 var48 = ".";
1378 var49 = 1;
1379 var50 = string__NativeString__to_s_with_length(var48, var49);
1380 var47 = var50;
1381 varonce46 = var47;
1382 }
1383 var = var47;
1384 goto RET_LABEL;
1385 } else {
1386 }
1387 if (varonce51) {
1388 var52 = varonce51;
1389 } else {
1390 var53 = "/";
1391 var54 = 1;
1392 var55 = string__NativeString__to_s_with_length(var53, var54);
1393 var52 = var55;
1394 varonce51 = var52;
1395 }
1396 var56 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var52) /* join on <var_a2:Array[String]>*/;
1397 var = var56;
1398 goto RET_LABEL;
1399 RET_LABEL:;
1400 return var;
1401 }
1402 /* method file#String#simplify_path for (self: Object): String */
1403 val* VIRTUAL_file__String__simplify_path(val* self) {
1404 val* var /* : String */;
1405 val* var1 /* : String */;
1406 var1 = file__String__simplify_path(self);
1407 var = var1;
1408 RET_LABEL:;
1409 return var;
1410 }
1411 /* method file#String#join_path for (self: String, String): String */
1412 val* file__String__join_path(val* self, val* p0) {
1413 val* var /* : String */;
1414 val* var_path /* var path: String */;
1415 short int var1 /* : Bool */;
1416 short int var2 /* : Bool */;
1417 long var3 /* : Int */;
1418 val* var4 /* : nullable Object */;
1419 char var5 /* : Char */;
1420 short int var6 /* : Bool */;
1421 short int var8 /* : Bool */;
1422 char var9 /* : Char */;
1423 val* var10 /* : Array[Object] */;
1424 long var11 /* : Int */;
1425 val* var_ /* var : Array[Object] */;
1426 static val* varonce;
1427 val* var12 /* : String */;
1428 char* var13 /* : NativeString */;
1429 long var14 /* : Int */;
1430 val* var15 /* : String */;
1431 static val* varonce16;
1432 val* var17 /* : String */;
1433 char* var18 /* : NativeString */;
1434 long var19 /* : Int */;
1435 val* var20 /* : String */;
1436 static val* varonce21;
1437 val* var22 /* : String */;
1438 char* var23 /* : NativeString */;
1439 long var24 /* : Int */;
1440 val* var25 /* : String */;
1441 val* var26 /* : String */;
1442 var_path = p0;
1443 var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path) /* is_empty on <var_path:String>*/;
1444 if (var1){
1445 var = self;
1446 goto RET_LABEL;
1447 } else {
1448 }
1449 var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:String>*/;
1450 if (var2){
1451 var = var_path;
1452 goto RET_LABEL;
1453 } else {
1454 }
1455 var3 = 0;
1456 var4 = ((val* (*)(val*, long))(var_path->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_path, var3) /* [] on <var_path:String>*/;
1457 var5 = '/';
1458 { /* Inline kernel#Char#== (var4,var5) */
1459 var8 = (var4 != NULL) && (var4->class == &class_kernel__Char);
1460 if (var8) {
1461 var9 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
1462 var8 = (var9 == var5);
1463 }
1464 var6 = var8;
1465 goto RET_LABEL7;
1466 RET_LABEL7:(void)0;
1467 }
1468 if (var6){
1469 var = var_path;
1470 goto RET_LABEL;
1471 } else {
1472 }
1473 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1474 var11 = 5;
1475 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[Object]>*/;
1476 var_ = var10;
1477 if (varonce) {
1478 var12 = varonce;
1479 } else {
1480 var13 = "";
1481 var14 = 0;
1482 var15 = string__NativeString__to_s_with_length(var13, var14);
1483 var12 = var15;
1484 varonce = var12;
1485 }
1486 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
1487 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, self) /* add on <var_:Array[Object]>*/;
1488 if (varonce16) {
1489 var17 = varonce16;
1490 } else {
1491 var18 = "/";
1492 var19 = 1;
1493 var20 = string__NativeString__to_s_with_length(var18, var19);
1494 var17 = var20;
1495 varonce16 = var17;
1496 }
1497 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
1498 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path) /* add on <var_:Array[Object]>*/;
1499 if (varonce21) {
1500 var22 = varonce21;
1501 } else {
1502 var23 = "";
1503 var24 = 0;
1504 var25 = string__NativeString__to_s_with_length(var23, var24);
1505 var22 = var25;
1506 varonce21 = var22;
1507 }
1508 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
1509 var26 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1510 var = var26;
1511 goto RET_LABEL;
1512 RET_LABEL:;
1513 return var;
1514 }
1515 /* method file#String#join_path for (self: Object, String): String */
1516 val* VIRTUAL_file__String__join_path(val* self, val* p0) {
1517 val* var /* : String */;
1518 val* var1 /* : String */;
1519 var1 = file__String__join_path(self, p0);
1520 var = var1;
1521 RET_LABEL:;
1522 return var;
1523 }
1524 /* method file#String#mkdir for (self: String) */
1525 void file__String__mkdir(val* self) {
1526 static val* varonce;
1527 val* var /* : String */;
1528 char* var1 /* : NativeString */;
1529 long var2 /* : Int */;
1530 val* var3 /* : String */;
1531 val* var4 /* : Array[String] */;
1532 val* var_dirs /* var dirs: Array[String] */;
1533 val* var5 /* : Buffer */;
1534 val* var_path /* var path: Buffer */;
1535 short int var6 /* : Bool */;
1536 long var7 /* : Int */;
1537 val* var8 /* : nullable Object */;
1538 short int var9 /* : Bool */;
1539 char var10 /* : Char */;
1540 val* var11 /* : nullable Object */;
1541 val* var12 /* : Iterator[nullable Object] */;
1542 short int var13 /* : Bool */;
1543 val* var14 /* : nullable Object */;
1544 val* var_d /* var d: String */;
1545 short int var15 /* : Bool */;
1546 char var16 /* : Char */;
1547 val* var17 /* : nullable Object */;
1548 val* var18 /* : String */;
1549 char* var19 /* : NativeString */;
1550 short int var20 /* : Bool */;
1551 if (varonce) {
1552 var = varonce;
1553 } else {
1554 var1 = "/";
1555 var2 = 1;
1556 var3 = string__NativeString__to_s_with_length(var1, var2);
1557 var = var3;
1558 varonce = var;
1559 }
1560 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var) /* split_with on <self:String>*/;
1561 var_dirs = var4;
1562 var5 = NEW_string__Buffer(&type_string__Buffer);
1563 ((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on <var5:Buffer>*/;
1564 var_path = var5;
1565 var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on <var_dirs:Array[String]>*/;
1566 if (var6){
1567 goto RET_LABEL;
1568 } else {
1569 }
1570 var7 = 0;
1571 var8 = ((val* (*)(val*, long))(var_dirs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_dirs, var7) /* [] on <var_dirs:Array[String]>*/;
1572 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var8) /* is_empty on <var8:nullable Object(String)>*/;
1573 if (var9){
1574 var10 = '/';
1575 var11 = BOX_kernel__Char(var10); /* autobox from Char to nullable Object */
1576 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var11) /* add on <var_path:Buffer>*/;
1577 } else {
1578 }
1579 var12 = ((val* (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_dirs) /* iterator on <var_dirs:Array[String]>*/;
1580 for(;;) {
1581 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
1582 if(!var13) break;
1583 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
1584 var_d = var14;
1585 var15 = ((short int (*)(val*))(var_d->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_d) /* is_empty on <var_d:String>*/;
1586 if (var15){
1587 goto CONTINUE_label;
1588 } else {
1589 }
1590 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__Sequence__append]))(var_path, var_d) /* append on <var_path:Buffer>*/;
1591 var16 = '/';
1592 var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */
1593 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var17) /* add on <var_path:Buffer>*/;
1594 var18 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__Object__to_s]))(var_path) /* to_s on <var_path:Buffer>*/;
1595 var19 = ((char* (*)(val*))(var18->class->vft[COLOR_string__String__to_cstring]))(var18) /* to_cstring on <var18:String>*/;
1596 var20 = file__NativeString__file_mkdir(var19);
1597 var20;
1598 CONTINUE_label: (void)0;
1599 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
1600 }
1601 BREAK_label: (void)0;
1602 RET_LABEL:;
1603 }
1604 /* method file#String#mkdir for (self: Object) */
1605 void VIRTUAL_file__String__mkdir(val* self) {
1606 file__String__mkdir(self);
1607 RET_LABEL:;
1608 }
1609 /* method file#String#chdir for (self: String) */
1610 void file__String__chdir(val* self) {
1611 char* var /* : NativeString */;
1612 var = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
1613 file__NativeString__file_chdir(var);
1614 RET_LABEL:;
1615 }
1616 /* method file#String#chdir for (self: Object) */
1617 void VIRTUAL_file__String__chdir(val* self) {
1618 file__String__chdir(self);
1619 RET_LABEL:;
1620 }
1621 /* method file#String#file_extension for (self: String): nullable String */
1622 val* file__String__file_extension(val* self) {
1623 val* var /* : nullable String */;
1624 char var1 /* : Char */;
1625 long var2 /* : Int */;
1626 val* var3 /* : nullable Object */;
1627 long var_last_slash /* var last_slash: Int */;
1628 long var4 /* : Int */;
1629 short int var5 /* : Bool */;
1630 short int var7 /* : Bool */;
1631 int cltype;
1632 int idtype;
1633 const char* var_class_name;
1634 short int var8 /* : Bool */;
1635 long var9 /* : Int */;
1636 long var10 /* : Int */;
1637 long var12 /* : Int */;
1638 long var13 /* : Int */;
1639 val* var14 /* : String */;
1640 val* var15 /* : null */;
1641 var1 = '.';
1642 var3 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
1643 var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(self, var3) /* last_index_of on <self:String>*/;
1644 var_last_slash = var2;
1645 var4 = 0;
1646 { /* Inline kernel#Int#>= (var_last_slash,var4) */
1647 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1648 /* <var4:Int> isa OTHER */
1649 var7 = 1; /* easy <var4:Int> isa OTHER*/
1650 if (!var7) {
1651 var_class_name = type_kernel__Int.name;
1652 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1653 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
1654 show_backtrace(1);
1655 }
1656 var8 = var_last_slash >= var4;
1657 var5 = var8;
1658 goto RET_LABEL6;
1659 RET_LABEL6:(void)0;
1660 }
1661 if (var5){
1662 var9 = 1;
1663 { /* Inline kernel#Int#+ (var_last_slash,var9) */
1664 var12 = var_last_slash + var9;
1665 var10 = var12;
1666 goto RET_LABEL11;
1667 RET_LABEL11:(void)0;
1668 }
1669 var13 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
1670 var14 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var10, var13) /* substring on <self:String>*/;
1671 var = var14;
1672 goto RET_LABEL;
1673 } else {
1674 var15 = NULL;
1675 var = var15;
1676 goto RET_LABEL;
1677 }
1678 RET_LABEL:;
1679 return var;
1680 }
1681 /* method file#String#file_extension for (self: Object): nullable String */
1682 val* VIRTUAL_file__String__file_extension(val* self) {
1683 val* var /* : nullable String */;
1684 val* var1 /* : nullable String */;
1685 var1 = file__String__file_extension(self);
1686 var = var1;
1687 RET_LABEL:;
1688 return var;
1689 }
1690 /* method file#String#files for (self: String): Set[String] */
1691 val* file__String__files(val* self) {
1692 val* var /* : Set[String] */;
1693 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#String#files at lib/standard/file.nit:355,2--356,159\n");
1694 show_backtrace(1);
1695 RET_LABEL:;
1696 return var;
1697 }
1698 /* method file#String#files for (self: Object): Set[String] */
1699 val* VIRTUAL_file__String__files(val* self) {
1700 val* var /* : Set[String] */;
1701 val* var1 /* : Set[String] */;
1702 var1 = file__String__files(self);
1703 var = var1;
1704 RET_LABEL:;
1705 return var;
1706 }
1707 /* method file#NativeString#file_exists for (self: NativeString): Bool */
1708 short int file__NativeString__file_exists(char* self) {
1709 short int var /* : Bool */;
1710 short int var1 /* : Bool */;
1711 var1 = string_NativeString_NativeString_file_exists_0(self);
1712 var = var1;
1713 goto RET_LABEL;
1714 RET_LABEL:;
1715 return var;
1716 }
1717 /* method file#NativeString#file_exists for (self: Object): Bool */
1718 short int VIRTUAL_file__NativeString__file_exists(val* self) {
1719 short int var /* : Bool */;
1720 short int var1 /* : Bool */;
1721 char* var2 /* : NativeString */;
1722 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1723 var1 = file__NativeString__file_exists(var2);
1724 var = var1;
1725 RET_LABEL:;
1726 return var;
1727 }
1728 /* method file#NativeString#file_stat for (self: NativeString): FileStat */
1729 void* file__NativeString__file_stat(char* self) {
1730 void* var /* : FileStat */;
1731 void* var1 /* : FileStat */;
1732 var1 = string_NativeString_NativeString_file_stat_0(self);
1733 var = var1;
1734 goto RET_LABEL;
1735 RET_LABEL:;
1736 return var;
1737 }
1738 /* method file#NativeString#file_stat for (self: Object): FileStat */
1739 void* VIRTUAL_file__NativeString__file_stat(val* self) {
1740 void* var /* : FileStat */;
1741 void* var1 /* : FileStat */;
1742 char* var2 /* : NativeString */;
1743 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1744 var1 = file__NativeString__file_stat(var2);
1745 var = var1;
1746 RET_LABEL:;
1747 return var;
1748 }
1749 /* method file#NativeString#file_lstat for (self: NativeString): FileStat */
1750 void* file__NativeString__file_lstat(char* self) {
1751 void* var /* : FileStat */;
1752 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#NativeString#file_lstat at lib/standard/file.nit:362,2--369,3\n");
1753 show_backtrace(1);
1754 RET_LABEL:;
1755 return var;
1756 }
1757 /* method file#NativeString#file_lstat for (self: Object): FileStat */
1758 void* VIRTUAL_file__NativeString__file_lstat(val* self) {
1759 void* var /* : FileStat */;
1760 void* var1 /* : FileStat */;
1761 char* var2 /* : NativeString */;
1762 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1763 var1 = file__NativeString__file_lstat(var2);
1764 var = var1;
1765 RET_LABEL:;
1766 return var;
1767 }
1768 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
1769 short int file__NativeString__file_mkdir(char* self) {
1770 short int var /* : Bool */;
1771 short int var1 /* : Bool */;
1772 var1 = string_NativeString_NativeString_file_mkdir_0(self);
1773 var = var1;
1774 goto RET_LABEL;
1775 RET_LABEL:;
1776 return var;
1777 }
1778 /* method file#NativeString#file_mkdir for (self: Object): Bool */
1779 short int VIRTUAL_file__NativeString__file_mkdir(val* self) {
1780 short int var /* : Bool */;
1781 short int var1 /* : Bool */;
1782 char* var2 /* : NativeString */;
1783 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1784 var1 = file__NativeString__file_mkdir(var2);
1785 var = var1;
1786 RET_LABEL:;
1787 return var;
1788 }
1789 /* method file#NativeString#file_delete for (self: NativeString): Bool */
1790 short int file__NativeString__file_delete(char* self) {
1791 short int var /* : Bool */;
1792 short int var1 /* : Bool */;
1793 var1 = string_NativeString_NativeString_file_delete_0(self);
1794 var = var1;
1795 goto RET_LABEL;
1796 RET_LABEL:;
1797 return var;
1798 }
1799 /* method file#NativeString#file_delete for (self: Object): Bool */
1800 short int VIRTUAL_file__NativeString__file_delete(val* self) {
1801 short int var /* : Bool */;
1802 short int var1 /* : Bool */;
1803 char* var2 /* : NativeString */;
1804 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1805 var1 = file__NativeString__file_delete(var2);
1806 var = var1;
1807 RET_LABEL:;
1808 return var;
1809 }
1810 /* method file#NativeString#file_chdir for (self: NativeString) */
1811 void file__NativeString__file_chdir(char* self) {
1812 string_NativeString_NativeString_file_chdir_0(self);
1813 RET_LABEL:;
1814 }
1815 /* method file#NativeString#file_chdir for (self: Object) */
1816 void VIRTUAL_file__NativeString__file_chdir(val* self) {
1817 char* var /* : NativeString */;
1818 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1819 file__NativeString__file_chdir(var);
1820 RET_LABEL:;
1821 }
1822 /* method file#NativeString#file_realpath for (self: NativeString): NativeString */
1823 char* file__NativeString__file_realpath(char* self) {
1824 char* var /* : NativeString */;
1825 char* var1 /* : NativeString */;
1826 var1 = file_NativeString_realpath(self);
1827 var = var1;
1828 goto RET_LABEL;
1829 RET_LABEL:;
1830 return var;
1831 }
1832 /* method file#NativeString#file_realpath for (self: Object): NativeString */
1833 char* VIRTUAL_file__NativeString__file_realpath(val* self) {
1834 char* var /* : NativeString */;
1835 char* var1 /* : NativeString */;
1836 char* var2 /* : NativeString */;
1837 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1838 var1 = file__NativeString__file_realpath(var2);
1839 var = var1;
1840 RET_LABEL:;
1841 return var;
1842 }
1843 /* method file#FileStat#mode for (self: FileStat): Int */
1844 long file__FileStat__mode(void* self) {
1845 long var /* : Int */;
1846 long var1 /* : Int */;
1847 var1 = file_FileStat_FileStat_mode_0(self);
1848 var = var1;
1849 goto RET_LABEL;
1850 RET_LABEL:;
1851 return var;
1852 }
1853 /* method file#FileStat#mode for (self: Object): Int */
1854 long VIRTUAL_file__FileStat__mode(val* self) {
1855 long var /* : Int */;
1856 long var1 /* : Int */;
1857 void* var2 /* : FileStat */;
1858 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1859 var1 = file__FileStat__mode(var2);
1860 var = var1;
1861 RET_LABEL:;
1862 return var;
1863 }
1864 /* method file#FileStat#atime for (self: FileStat): Int */
1865 long file__FileStat__atime(void* self) {
1866 long var /* : Int */;
1867 long var1 /* : Int */;
1868 var1 = file_FileStat_FileStat_atime_0(self);
1869 var = var1;
1870 goto RET_LABEL;
1871 RET_LABEL:;
1872 return var;
1873 }
1874 /* method file#FileStat#atime for (self: Object): Int */
1875 long VIRTUAL_file__FileStat__atime(val* self) {
1876 long var /* : Int */;
1877 long var1 /* : Int */;
1878 void* var2 /* : FileStat */;
1879 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1880 var1 = file__FileStat__atime(var2);
1881 var = var1;
1882 RET_LABEL:;
1883 return var;
1884 }
1885 /* method file#FileStat#ctime for (self: FileStat): Int */
1886 long file__FileStat__ctime(void* self) {
1887 long var /* : Int */;
1888 long var1 /* : Int */;
1889 var1 = file_FileStat_FileStat_ctime_0(self);
1890 var = var1;
1891 goto RET_LABEL;
1892 RET_LABEL:;
1893 return var;
1894 }
1895 /* method file#FileStat#ctime for (self: Object): Int */
1896 long VIRTUAL_file__FileStat__ctime(val* self) {
1897 long var /* : Int */;
1898 long var1 /* : Int */;
1899 void* var2 /* : FileStat */;
1900 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1901 var1 = file__FileStat__ctime(var2);
1902 var = var1;
1903 RET_LABEL:;
1904 return var;
1905 }
1906 /* method file#FileStat#mtime for (self: FileStat): Int */
1907 long file__FileStat__mtime(void* self) {
1908 long var /* : Int */;
1909 long var1 /* : Int */;
1910 var1 = file_FileStat_FileStat_mtime_0(self);
1911 var = var1;
1912 goto RET_LABEL;
1913 RET_LABEL:;
1914 return var;
1915 }
1916 /* method file#FileStat#mtime for (self: Object): Int */
1917 long VIRTUAL_file__FileStat__mtime(val* self) {
1918 long var /* : Int */;
1919 long var1 /* : Int */;
1920 void* var2 /* : FileStat */;
1921 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1922 var1 = file__FileStat__mtime(var2);
1923 var = var1;
1924 RET_LABEL:;
1925 return var;
1926 }
1927 /* method file#FileStat#size for (self: FileStat): Int */
1928 long file__FileStat__size(void* self) {
1929 long var /* : Int */;
1930 long var1 /* : Int */;
1931 var1 = file_FileStat_FileStat_size_0(self);
1932 var = var1;
1933 goto RET_LABEL;
1934 RET_LABEL:;
1935 return var;
1936 }
1937 /* method file#FileStat#size for (self: Object): Int */
1938 long VIRTUAL_file__FileStat__size(val* self) {
1939 long var /* : Int */;
1940 long var1 /* : Int */;
1941 void* var2 /* : FileStat */;
1942 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1943 var1 = file__FileStat__size(var2);
1944 var = var1;
1945 RET_LABEL:;
1946 return var;
1947 }
1948 /* method file#FileStat#is_reg for (self: FileStat): Bool */
1949 short int file__FileStat__is_reg(void* self) {
1950 short int var /* : Bool */;
1951 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_reg at lib/standard/file.nit:384,2--54\n");
1952 show_backtrace(1);
1953 RET_LABEL:;
1954 return var;
1955 }
1956 /* method file#FileStat#is_reg for (self: Object): Bool */
1957 short int VIRTUAL_file__FileStat__is_reg(val* self) {
1958 short int var /* : Bool */;
1959 short int var1 /* : Bool */;
1960 void* var2 /* : FileStat */;
1961 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1962 var1 = file__FileStat__is_reg(var2);
1963 var = var1;
1964 RET_LABEL:;
1965 return var;
1966 }
1967 /* method file#FileStat#is_dir for (self: FileStat): Bool */
1968 short int file__FileStat__is_dir(void* self) {
1969 short int var /* : Bool */;
1970 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_dir at lib/standard/file.nit:385,2--54\n");
1971 show_backtrace(1);
1972 RET_LABEL:;
1973 return var;
1974 }
1975 /* method file#FileStat#is_dir for (self: Object): Bool */
1976 short int VIRTUAL_file__FileStat__is_dir(val* self) {
1977 short int var /* : Bool */;
1978 short int var1 /* : Bool */;
1979 void* var2 /* : FileStat */;
1980 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
1981 var1 = file__FileStat__is_dir(var2);
1982 var = var1;
1983 RET_LABEL:;
1984 return var;
1985 }
1986 /* method file#FileStat#is_chr for (self: FileStat): Bool */
1987 short int file__FileStat__is_chr(void* self) {
1988 short int var /* : Bool */;
1989 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_chr at lib/standard/file.nit:386,2--54\n");
1990 show_backtrace(1);
1991 RET_LABEL:;
1992 return var;
1993 }
1994 /* method file#FileStat#is_chr for (self: Object): Bool */
1995 short int VIRTUAL_file__FileStat__is_chr(val* self) {
1996 short int var /* : Bool */;
1997 short int var1 /* : Bool */;
1998 void* var2 /* : FileStat */;
1999 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2000 var1 = file__FileStat__is_chr(var2);
2001 var = var1;
2002 RET_LABEL:;
2003 return var;
2004 }
2005 /* method file#FileStat#is_blk for (self: FileStat): Bool */
2006 short int file__FileStat__is_blk(void* self) {
2007 short int var /* : Bool */;
2008 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_blk at lib/standard/file.nit:387,2--54\n");
2009 show_backtrace(1);
2010 RET_LABEL:;
2011 return var;
2012 }
2013 /* method file#FileStat#is_blk for (self: Object): Bool */
2014 short int VIRTUAL_file__FileStat__is_blk(val* self) {
2015 short int var /* : Bool */;
2016 short int var1 /* : Bool */;
2017 void* var2 /* : FileStat */;
2018 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2019 var1 = file__FileStat__is_blk(var2);
2020 var = var1;
2021 RET_LABEL:;
2022 return var;
2023 }
2024 /* method file#FileStat#is_fifo for (self: FileStat): Bool */
2025 short int file__FileStat__is_fifo(void* self) {
2026 short int var /* : Bool */;
2027 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:388,2--56\n");
2028 show_backtrace(1);
2029 RET_LABEL:;
2030 return var;
2031 }
2032 /* method file#FileStat#is_fifo for (self: Object): Bool */
2033 short int VIRTUAL_file__FileStat__is_fifo(val* self) {
2034 short int var /* : Bool */;
2035 short int var1 /* : Bool */;
2036 void* var2 /* : FileStat */;
2037 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2038 var1 = file__FileStat__is_fifo(var2);
2039 var = var1;
2040 RET_LABEL:;
2041 return var;
2042 }
2043 /* method file#FileStat#is_lnk for (self: FileStat): Bool */
2044 short int file__FileStat__is_lnk(void* self) {
2045 short int var /* : Bool */;
2046 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:389,2--54\n");
2047 show_backtrace(1);
2048 RET_LABEL:;
2049 return var;
2050 }
2051 /* method file#FileStat#is_lnk for (self: Object): Bool */
2052 short int VIRTUAL_file__FileStat__is_lnk(val* self) {
2053 short int var /* : Bool */;
2054 short int var1 /* : Bool */;
2055 void* var2 /* : FileStat */;
2056 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2057 var1 = file__FileStat__is_lnk(var2);
2058 var = var1;
2059 RET_LABEL:;
2060 return var;
2061 }
2062 /* method file#FileStat#is_sock for (self: FileStat): Bool */
2063 short int file__FileStat__is_sock(void* self) {
2064 short int var /* : Bool */;
2065 fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_sock at lib/standard/file.nit:390,2--56\n");
2066 show_backtrace(1);
2067 RET_LABEL:;
2068 return var;
2069 }
2070 /* method file#FileStat#is_sock for (self: Object): Bool */
2071 short int VIRTUAL_file__FileStat__is_sock(val* self) {
2072 short int var /* : Bool */;
2073 short int var1 /* : Bool */;
2074 void* var2 /* : FileStat */;
2075 var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
2076 var1 = file__FileStat__is_sock(var2);
2077 var = var1;
2078 RET_LABEL:;
2079 return var;
2080 }
2081 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
2082 long file__NativeFile__io_read(void* self, char* p0, long p1) {
2083 long var /* : Int */;
2084 long var1 /* : Int */;
2085 var1 = file_NativeFile_NativeFile_io_read_2(self, p0, p1);
2086 var = var1;
2087 goto RET_LABEL;
2088 RET_LABEL:;
2089 return var;
2090 }
2091 /* method file#NativeFile#io_read for (self: Object, NativeString, Int): Int */
2092 long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) {
2093 long var /* : Int */;
2094 long var1 /* : Int */;
2095 void* var2 /* : NativeFile */;
2096 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2097 var1 = file__NativeFile__io_read(var2, p0, p1);
2098 var = var1;
2099 RET_LABEL:;
2100 return var;
2101 }
2102 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */
2103 long file__NativeFile__io_write(void* self, char* p0, long p1) {
2104 long var /* : Int */;
2105 long var1 /* : Int */;
2106 var1 = file_NativeFile_NativeFile_io_write_2(self, p0, p1);
2107 var = var1;
2108 goto RET_LABEL;
2109 RET_LABEL:;
2110 return var;
2111 }
2112 /* method file#NativeFile#io_write for (self: Object, NativeString, Int): Int */
2113 long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) {
2114 long var /* : Int */;
2115 long var1 /* : Int */;
2116 void* var2 /* : NativeFile */;
2117 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2118 var1 = file__NativeFile__io_write(var2, p0, p1);
2119 var = var1;
2120 RET_LABEL:;
2121 return var;
2122 }
2123 /* method file#NativeFile#io_close for (self: NativeFile): Int */
2124 long file__NativeFile__io_close(void* self) {
2125 long var /* : Int */;
2126 long var1 /* : Int */;
2127 var1 = file_NativeFile_NativeFile_io_close_0(self);
2128 var = var1;
2129 goto RET_LABEL;
2130 RET_LABEL:;
2131 return var;
2132 }
2133 /* method file#NativeFile#io_close for (self: Object): Int */
2134 long VIRTUAL_file__NativeFile__io_close(val* self) {
2135 long var /* : Int */;
2136 long var1 /* : Int */;
2137 void* var2 /* : NativeFile */;
2138 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2139 var1 = file__NativeFile__io_close(var2);
2140 var = var1;
2141 RET_LABEL:;
2142 return var;
2143 }
2144 /* method file#NativeFile#file_stat for (self: NativeFile): FileStat */
2145 void* file__NativeFile__file_stat(void* self) {
2146 void* var /* : FileStat */;
2147 void* var1 /* : FileStat */;
2148 var1 = file_NativeFile_NativeFile_file_stat_0(self);
2149 var = var1;
2150 goto RET_LABEL;
2151 RET_LABEL:;
2152 return var;
2153 }
2154 /* method file#NativeFile#file_stat for (self: Object): FileStat */
2155 void* VIRTUAL_file__NativeFile__file_stat(val* self) {
2156 void* var /* : FileStat */;
2157 void* var1 /* : FileStat */;
2158 void* var2 /* : NativeFile */;
2159 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2160 var1 = file__NativeFile__file_stat(var2);
2161 var = var1;
2162 RET_LABEL:;
2163 return var;
2164 }
2165 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
2166 void* file__NativeFile__io_open_read(void* self, char* p0) {
2167 void* var /* : NativeFile */;
2168 void* var1 /* : NativeFile */;
2169 var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
2170 var = var1;
2171 goto RET_LABEL;
2172 RET_LABEL:;
2173 return var;
2174 }
2175 /* method file#NativeFile#io_open_read for (self: Object, NativeString): NativeFile */
2176 void* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) {
2177 void* var /* : NativeFile */;
2178 val* var1 /* : Object */;
2179 void* var2 /* : NativeFile */;
2180 void* var3 /* : NativeFile */;
2181 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2182 var1 = file__NativeFile__io_open_read(var2, p0);
2183 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2184 var = var3;
2185 RET_LABEL:;
2186 return var;
2187 }
2188 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
2189 void* file__NativeFile__io_open_write(void* self, char* p0) {
2190 void* var /* : NativeFile */;
2191 void* var1 /* : NativeFile */;
2192 var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
2193 var = var1;
2194 goto RET_LABEL;
2195 RET_LABEL:;
2196 return var;
2197 }
2198 /* method file#NativeFile#io_open_write for (self: Object, NativeString): NativeFile */
2199 void* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) {
2200 void* var /* : NativeFile */;
2201 val* var1 /* : Object */;
2202 void* var2 /* : NativeFile */;
2203 void* var3 /* : NativeFile */;
2204 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2205 var1 = file__NativeFile__io_open_write(var2, p0);
2206 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2207 var = var3;
2208 RET_LABEL:;
2209 return var;
2210 }
2211 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
2212 void* file__NativeFile__native_stdin(void* self) {
2213 void* var /* : NativeFile */;
2214 void* var1 /* : NativeFile */;
2215 var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
2216 var = var1;
2217 goto RET_LABEL;
2218 RET_LABEL:;
2219 return var;
2220 }
2221 /* method file#NativeFile#native_stdin for (self: Object): NativeFile */
2222 void* VIRTUAL_file__NativeFile__native_stdin(val* self) {
2223 void* var /* : NativeFile */;
2224 val* var1 /* : Object */;
2225 void* var2 /* : NativeFile */;
2226 void* var3 /* : NativeFile */;
2227 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2228 var1 = file__NativeFile__native_stdin(var2);
2229 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2230 var = var3;
2231 RET_LABEL:;
2232 return var;
2233 }
2234 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
2235 void* file__NativeFile__native_stdout(void* self) {
2236 void* var /* : NativeFile */;
2237 void* var1 /* : NativeFile */;
2238 var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
2239 var = var1;
2240 goto RET_LABEL;
2241 RET_LABEL:;
2242 return var;
2243 }
2244 /* method file#NativeFile#native_stdout for (self: Object): NativeFile */
2245 void* VIRTUAL_file__NativeFile__native_stdout(val* self) {
2246 void* var /* : NativeFile */;
2247 val* var1 /* : Object */;
2248 void* var2 /* : NativeFile */;
2249 void* var3 /* : NativeFile */;
2250 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2251 var1 = file__NativeFile__native_stdout(var2);
2252 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2253 var = var3;
2254 RET_LABEL:;
2255 return var;
2256 }
2257 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
2258 void* file__NativeFile__native_stderr(void* self) {
2259 void* var /* : NativeFile */;
2260 void* var1 /* : NativeFile */;
2261 var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
2262 var = var1;
2263 goto RET_LABEL;
2264 RET_LABEL:;
2265 return var;
2266 }
2267 /* method file#NativeFile#native_stderr for (self: Object): NativeFile */
2268 void* VIRTUAL_file__NativeFile__native_stderr(val* self) {
2269 void* var /* : NativeFile */;
2270 val* var1 /* : Object */;
2271 void* var2 /* : NativeFile */;
2272 void* var3 /* : NativeFile */;
2273 var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
2274 var1 = file__NativeFile__native_stderr(var2);
2275 var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
2276 var = var3;
2277 RET_LABEL:;
2278 return var;
2279 }
2280 /* method file#Object#stdin for (self: Object): Stdin */
2281 val* file__Object__stdin(val* self) {
2282 val* var /* : Stdin */;
2283 static val* varonce;
2284 static int varonce_guard;
2285 val* var1 /* : Stdin */;
2286 val* var2 /* : Stdin */;
2287 if (varonce_guard) {
2288 var1 = varonce;
2289 } else {
2290 var2 = NEW_file__Stdin(&type_file__Stdin);
2291 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on <var2:Stdin>*/;
2292 var1 = var2;
2293 varonce = var1;
2294 varonce_guard = 1;
2295 }
2296 var = var1;
2297 goto RET_LABEL;
2298 RET_LABEL:;
2299 return var;
2300 }
2301 /* method file#Object#stdin for (self: Object): Stdin */
2302 val* VIRTUAL_file__Object__stdin(val* self) {
2303 val* var /* : Stdin */;
2304 val* var1 /* : Stdin */;
2305 var1 = file__Object__stdin(self);
2306 var = var1;
2307 RET_LABEL:;
2308 return var;
2309 }
2310 /* method file#Object#stdout for (self: Object): OFStream */
2311 val* file__Object__stdout(val* self) {
2312 val* var /* : OFStream */;
2313 static val* varonce;
2314 static int varonce_guard;
2315 val* var1 /* : Stdout */;
2316 val* var2 /* : Stdout */;
2317 if (varonce_guard) {
2318 var1 = varonce;
2319 } else {
2320 var2 = NEW_file__Stdout(&type_file__Stdout);
2321 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on <var2:Stdout>*/;
2322 var1 = var2;
2323 varonce = var1;
2324 varonce_guard = 1;
2325 }
2326 var = var1;
2327 goto RET_LABEL;
2328 RET_LABEL:;
2329 return var;
2330 }
2331 /* method file#Object#stdout for (self: Object): OFStream */
2332 val* VIRTUAL_file__Object__stdout(val* self) {
2333 val* var /* : OFStream */;
2334 val* var1 /* : OFStream */;
2335 var1 = file__Object__stdout(self);
2336 var = var1;
2337 RET_LABEL:;
2338 return var;
2339 }
2340 /* method file#Object#stderr for (self: Object): OFStream */
2341 val* file__Object__stderr(val* self) {
2342 val* var /* : OFStream */;
2343 static val* varonce;
2344 static int varonce_guard;
2345 val* var1 /* : Stderr */;
2346 val* var2 /* : Stderr */;
2347 if (varonce_guard) {
2348 var1 = varonce;
2349 } else {
2350 var2 = NEW_file__Stderr(&type_file__Stderr);
2351 ((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on <var2:Stderr>*/;
2352 var1 = var2;
2353 varonce = var1;
2354 varonce_guard = 1;
2355 }
2356 var = var1;
2357 goto RET_LABEL;
2358 RET_LABEL:;
2359 return var;
2360 }
2361 /* method file#Object#stderr for (self: Object): OFStream */
2362 val* VIRTUAL_file__Object__stderr(val* self) {
2363 val* var /* : OFStream */;
2364 val* var1 /* : OFStream */;
2365 var1 = file__Object__stderr(self);
2366 var = var1;
2367 RET_LABEL:;
2368 return var;
2369 }