tests: add new lines on some tests
[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", "Receiver is null");
167 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 74);
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", "Receiver is null");
217 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88);
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", "Receiver is null");
232 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 91);
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", "Receiver is null");
253 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 96);
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", "Receiver is null");
292 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
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", "Receiver is null");
299 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
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", "Receiver is null");
305 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
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", 264);
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", "Receiver is null");
337 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 107);
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", "Receiver is null");
390 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 119);
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", 120);
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", 134);
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", "Receiver is null");
490 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 142);
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", 152);
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", "Receiver is null");
547 fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 153);
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", 164);
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#file_copy_to for (self: String, String) */
880 void file__String__file_copy_to(val* self, val* p0) {
881 val* var_dest /* var dest: String */;
882 val* var /* : IFStream */;
883 val* var_input /* var input: IFStream */;
884 val* var1 /* : OFStream */;
885 val* var_output /* var output: OFStream */;
886 short int var2 /* : Bool */;
887 short int var3 /* : Bool */;
888 long var4 /* : Int */;
889 val* var5 /* : String */;
890 val* var_buffer /* var buffer: String */;
891 var_dest = p0;
892 var = NEW_file__IFStream(&type_file__IFStream);
893 ((void (*)(val*, val*))(var->class->vft[COLOR_file__IFStream__open]))(var, self) /* open on <var:IFStream>*/;
894 var_input = var;
895 var1 = NEW_file__OFStream(&type_file__OFStream);
896 ((void (*)(val*, val*))(var1->class->vft[COLOR_file__OFStream__open]))(var1, var_dest) /* open on <var1:OFStream>*/;
897 var_output = var1;
898 for(;;) {
899 var2 = ((short int (*)(val*))(var_input->class->vft[COLOR_stream__IStream__eof]))(var_input) /* eof on <var_input:IFStream>*/;
900 var3 = !var2;
901 if (!var3) break;
902 var4 = 1024;
903 var5 = ((val* (*)(val*, long))(var_input->class->vft[COLOR_stream__IStream__read]))(var_input, var4) /* read on <var_input:IFStream>*/;
904 var_buffer = var5;
905 ((void (*)(val*, val*))(var_output->class->vft[COLOR_stream__OStream__write]))(var_output, var_buffer) /* write on <var_output:OFStream>*/;
906 CONTINUE_label: (void)0;
907 }
908 BREAK_label: (void)0;
909 ((void (*)(val*))(var_input->class->vft[COLOR_stream__IOS__close]))(var_input) /* close on <var_input:IFStream>*/;
910 ((void (*)(val*))(var_output->class->vft[COLOR_stream__IOS__close]))(var_output) /* close on <var_output:OFStream>*/;
911 RET_LABEL:;
912 }
913 /* method file#String#file_copy_to for (self: Object, String) */
914 void VIRTUAL_file__String__file_copy_to(val* self, val* p0) {
915 file__String__file_copy_to(self, p0);
916 RET_LABEL:;
917 }
918 /* method file#String#strip_extension for (self: String, String): String */
919 val* file__String__strip_extension(val* self, val* p0) {
920 val* var /* : String */;
921 val* var_ext /* var ext: String */;
922 short int var1 /* : Bool */;
923 long var2 /* : Int */;
924 long var3 /* : Int */;
925 long var4 /* : Int */;
926 long var5 /* : Int */;
927 long var7 /* : Int */;
928 val* var8 /* : String */;
929 var_ext = p0;
930 var1 = ((short int (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__has_suffix]))(self, var_ext) /* has_suffix on <self:String>*/;
931 if (var1){
932 var2 = 0;
933 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
934 var4 = ((long (*)(val*))(var_ext->class->vft[COLOR_abstract_collection__Collection__length]))(var_ext) /* length on <var_ext:String>*/;
935 { /* Inline kernel#Int#- (var3,var4) */
936 var7 = var3 - var4;
937 var5 = var7;
938 goto RET_LABEL6;
939 RET_LABEL6:(void)0;
940 }
941 var8 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var2, var5) /* substring on <self:String>*/;
942 var = var8;
943 goto RET_LABEL;
944 } else {
945 }
946 var = self;
947 goto RET_LABEL;
948 RET_LABEL:;
949 return var;
950 }
951 /* method file#String#strip_extension for (self: Object, String): String */
952 val* VIRTUAL_file__String__strip_extension(val* self, val* p0) {
953 val* var /* : String */;
954 val* var1 /* : String */;
955 var1 = file__String__strip_extension(self, p0);
956 var = var1;
957 RET_LABEL:;
958 return var;
959 }
960 /* method file#String#basename for (self: String, String): String */
961 val* file__String__basename(val* self, val* p0) {
962 val* var /* : String */;
963 val* var_ext /* var ext: String */;
964 char var1 /* : Char */;
965 long var2 /* : Int */;
966 long var3 /* : Int */;
967 long var4 /* : Int */;
968 long var6 /* : Int */;
969 long var7 /* : Int */;
970 val* var8 /* : nullable Object */;
971 long var_pos /* var pos: Int */;
972 val* var_n /* var n: String */;
973 long var9 /* : Int */;
974 short int var10 /* : Bool */;
975 short int var12 /* : Bool */;
976 int cltype;
977 int idtype;
978 const char* var_class_name;
979 short int var13 /* : Bool */;
980 long var14 /* : Int */;
981 long var15 /* : Int */;
982 long var17 /* : Int */;
983 val* var18 /* : String */;
984 val* var19 /* : String */;
985 var_ext = p0;
986 var1 = '/';
987 var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
988 var3 = 1;
989 { /* Inline kernel#Int#- (var2,var3) */
990 var6 = var2 - var3;
991 var4 = var6;
992 goto RET_LABEL5;
993 RET_LABEL5:(void)0;
994 }
995 var8 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
996 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>*/;
997 var_pos = var7;
998 var_n = self;
999 var9 = 0;
1000 { /* Inline kernel#Int#>= (var_pos,var9) */
1001 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
1002 /* <var9:Int> isa OTHER */
1003 var12 = 1; /* easy <var9:Int> isa OTHER*/
1004 if (!var12) {
1005 var_class_name = type_kernel__Int.name;
1006 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1007 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1008 show_backtrace(1);
1009 }
1010 var13 = var_pos >= var9;
1011 var10 = var13;
1012 goto RET_LABEL11;
1013 RET_LABEL11:(void)0;
1014 }
1015 if (var10){
1016 var14 = 1;
1017 { /* Inline kernel#Int#+ (var_pos,var14) */
1018 var17 = var_pos + var14;
1019 var15 = var17;
1020 goto RET_LABEL16;
1021 RET_LABEL16:(void)0;
1022 }
1023 var18 = ((val* (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__substring_from]))(self, var15) /* substring_from on <self:String>*/;
1024 var_n = var18;
1025 } else {
1026 }
1027 var19 = ((val* (*)(val*, val*))(var_n->class->vft[COLOR_file__String__strip_extension]))(var_n, var_ext) /* strip_extension on <var_n:String>*/;
1028 var = var19;
1029 goto RET_LABEL;
1030 RET_LABEL:;
1031 return var;
1032 }
1033 /* method file#String#basename for (self: Object, String): String */
1034 val* VIRTUAL_file__String__basename(val* self, val* p0) {
1035 val* var /* : String */;
1036 val* var1 /* : String */;
1037 var1 = file__String__basename(self, p0);
1038 var = var1;
1039 RET_LABEL:;
1040 return var;
1041 }
1042 /* method file#String#dirname for (self: String): String */
1043 val* file__String__dirname(val* self) {
1044 val* var /* : String */;
1045 long var1 /* : Int */;
1046 long var2 /* : Int */;
1047 long var3 /* : Int */;
1048 long var5 /* : Int */;
1049 long var_l /* var l: Int */;
1050 short int var6 /* : Bool */;
1051 long var7 /* : Int */;
1052 short int var8 /* : Bool */;
1053 short int var10 /* : Bool */;
1054 int cltype;
1055 int idtype;
1056 const char* var_class_name;
1057 short int var11 /* : Bool */;
1058 short int var_ /* var : Bool */;
1059 val* var12 /* : StringCharView */;
1060 val* var13 /* : nullable Object */;
1061 char var14 /* : Char */;
1062 short int var15 /* : Bool */;
1063 short int var17 /* : Bool */;
1064 char var18 /* : Char */;
1065 long var19 /* : Int */;
1066 long var20 /* : Int */;
1067 long var22 /* : Int */;
1068 char var23 /* : Char */;
1069 long var24 /* : Int */;
1070 val* var25 /* : nullable Object */;
1071 long var_pos /* var pos: Int */;
1072 long var26 /* : Int */;
1073 short int var27 /* : Bool */;
1074 short int var29 /* : Bool */;
1075 int cltype30;
1076 int idtype31;
1077 const char* var_class_name32;
1078 short int var33 /* : Bool */;
1079 long var34 /* : Int */;
1080 val* var35 /* : String */;
1081 long var36 /* : Int */;
1082 short int var37 /* : Bool */;
1083 short int var39 /* : Bool */;
1084 static val* varonce;
1085 val* var40 /* : String */;
1086 char* var41 /* : NativeString */;
1087 long var42 /* : Int */;
1088 val* var43 /* : String */;
1089 static val* varonce44;
1090 val* var45 /* : String */;
1091 char* var46 /* : NativeString */;
1092 long var47 /* : Int */;
1093 val* var48 /* : String */;
1094 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
1095 var2 = 1;
1096 { /* Inline kernel#Int#- (var1,var2) */
1097 var5 = var1 - var2;
1098 var3 = var5;
1099 goto RET_LABEL4;
1100 RET_LABEL4:(void)0;
1101 }
1102 var_l = var3;
1103 var7 = 0;
1104 { /* Inline kernel#Int#> (var_l,var7) */
1105 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
1106 /* <var7:Int> isa OTHER */
1107 var10 = 1; /* easy <var7:Int> isa OTHER*/
1108 if (!var10) {
1109 var_class_name = type_kernel__Int.name;
1110 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1111 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
1112 show_backtrace(1);
1113 }
1114 var11 = var_l > var7;
1115 var8 = var11;
1116 goto RET_LABEL9;
1117 RET_LABEL9:(void)0;
1118 }
1119 var_ = var8;
1120 if (var8){
1121 var12 = ((val* (*)(val*))(self->class->vft[COLOR_string__AbstractString__chars]))(self) /* chars on <self:String>*/;
1122 var13 = ((val* (*)(val*, long))(var12->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var12, var_l) /* [] on <var12:StringCharView>*/;
1123 var14 = '/';
1124 { /* Inline kernel#Char#== (var13,var14) */
1125 var17 = (var13 != NULL) && (var13->class == &class_kernel__Char);
1126 if (var17) {
1127 var18 = ((struct instance_kernel__Char*)var13)->value; /* autounbox from nullable Object to Char */;
1128 var17 = (var18 == var14);
1129 }
1130 var15 = var17;
1131 goto RET_LABEL16;
1132 RET_LABEL16:(void)0;
1133 }
1134 var6 = var15;
1135 } else {
1136 var6 = var_;
1137 }
1138 if (var6){
1139 var19 = 1;
1140 { /* Inline kernel#Int#- (var_l,var19) */
1141 var22 = var_l - var19;
1142 var20 = var22;
1143 goto RET_LABEL21;
1144 RET_LABEL21:(void)0;
1145 }
1146 var_l = var20;
1147 } else {
1148 }
1149 var23 = '/';
1150 var25 = BOX_kernel__Char(var23); /* autobox from Char to nullable Object */
1151 var24 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var25, var_l) /* last_index_of_from on <self:String>*/;
1152 var_pos = var24;
1153 var26 = 0;
1154 { /* Inline kernel#Int#> (var_pos,var26) */
1155 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
1156 /* <var26:Int> isa OTHER */
1157 var29 = 1; /* easy <var26:Int> isa OTHER*/
1158 if (!var29) {
1159 var_class_name32 = type_kernel__Int.name;
1160 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
1161 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
1162 show_backtrace(1);
1163 }
1164 var33 = var_pos > var26;
1165 var27 = var33;
1166 goto RET_LABEL28;
1167 RET_LABEL28:(void)0;
1168 }
1169 if (var27){
1170 var34 = 0;
1171 var35 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var34, var_pos) /* substring on <self:String>*/;
1172 var = var35;
1173 goto RET_LABEL;
1174 } else {
1175 var36 = 0;
1176 { /* Inline kernel#Int#== (var_pos,var36) */
1177 var39 = var_pos == var36;
1178 var37 = var39;
1179 goto RET_LABEL38;
1180 RET_LABEL38:(void)0;
1181 }
1182 if (var37){
1183 if (varonce) {
1184 var40 = varonce;
1185 } else {
1186 var41 = "/";
1187 var42 = 1;
1188 var43 = string__NativeString__to_s_with_length(var41, var42);
1189 var40 = var43;
1190 varonce = var40;
1191 }
1192 var = var40;
1193 goto RET_LABEL;
1194 } else {
1195 if (varonce44) {
1196 var45 = varonce44;
1197 } else {
1198 var46 = ".";
1199 var47 = 1;
1200 var48 = string__NativeString__to_s_with_length(var46, var47);
1201 var45 = var48;
1202 varonce44 = var45;
1203 }
1204 var = var45;
1205 goto RET_LABEL;
1206 }
1207 }
1208 RET_LABEL:;
1209 return var;
1210 }
1211 /* method file#String#dirname for (self: Object): String */
1212 val* VIRTUAL_file__String__dirname(val* self) {
1213 val* var /* : String */;
1214 val* var1 /* : String */;
1215 var1 = file__String__dirname(self);
1216 var = var1;
1217 RET_LABEL:;
1218 return var;
1219 }
1220 /* method file#String#realpath for (self: String): String */
1221 val* file__String__realpath(val* self) {
1222 val* var /* : String */;
1223 char* var1 /* : NativeString */;
1224 char* var2 /* : NativeString */;
1225 char* var_cs /* var cs: NativeString */;
1226 val* var3 /* : String */;
1227 val* var_res /* var res: String */;
1228 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
1229 var2 = file__NativeString__file_realpath(var1);
1230 var_cs = var2;
1231 var3 = string__NativeString__to_s_with_copy(var_cs);
1232 var_res = var3;
1233 var = var_res;
1234 goto RET_LABEL;
1235 RET_LABEL:;
1236 return var;
1237 }
1238 /* method file#String#realpath for (self: Object): String */
1239 val* VIRTUAL_file__String__realpath(val* self) {
1240 val* var /* : String */;
1241 val* var1 /* : String */;
1242 var1 = file__String__realpath(self);
1243 var = var1;
1244 RET_LABEL:;
1245 return var;
1246 }
1247 /* method file#String#simplify_path for (self: String): String */
1248 val* file__String__simplify_path(val* self) {
1249 val* var /* : String */;
1250 static val* varonce;
1251 val* var1 /* : String */;
1252 char* var2 /* : NativeString */;
1253 long var3 /* : Int */;
1254 val* var4 /* : String */;
1255 val* var5 /* : Array[String] */;
1256 val* var_a /* var a: Array[String] */;
1257 val* var6 /* : Array[String] */;
1258 val* var_a2 /* var a2: Array[String] */;
1259 val* var7 /* : Iterator[nullable Object] */;
1260 short int var8 /* : Bool */;
1261 val* var9 /* : nullable Object */;
1262 val* var_x /* var x: String */;
1263 static val* varonce10;
1264 val* var11 /* : String */;
1265 char* var12 /* : NativeString */;
1266 long var13 /* : Int */;
1267 val* var14 /* : String */;
1268 short int var15 /* : Bool */;
1269 short int var16 /* : Bool */;
1270 static val* varonce17;
1271 val* var18 /* : String */;
1272 char* var19 /* : NativeString */;
1273 long var20 /* : Int */;
1274 val* var21 /* : String */;
1275 short int var22 /* : Bool */;
1276 short int var_ /* var : Bool */;
1277 short int var23 /* : Bool */;
1278 short int var24 /* : Bool */;
1279 short int var25 /* : Bool */;
1280 short int var26 /* : Bool */;
1281 static val* varonce27;
1282 val* var28 /* : String */;
1283 char* var29 /* : NativeString */;
1284 long var30 /* : Int */;
1285 val* var31 /* : String */;
1286 short int var32 /* : Bool */;
1287 short int var_33 /* var : Bool */;
1288 short int var34 /* : Bool */;
1289 short int var35 /* : Bool */;
1290 short int var_36 /* var : Bool */;
1291 val* var37 /* : nullable Object */;
1292 static val* varonce38;
1293 val* var39 /* : String */;
1294 char* var40 /* : NativeString */;
1295 long var41 /* : Int */;
1296 val* var42 /* : String */;
1297 short int var43 /* : Bool */;
1298 val* var44 /* : nullable Object */;
1299 short int var45 /* : Bool */;
1300 static val* varonce46;
1301 val* var47 /* : String */;
1302 char* var48 /* : NativeString */;
1303 long var49 /* : Int */;
1304 val* var50 /* : String */;
1305 static val* varonce51;
1306 val* var52 /* : String */;
1307 char* var53 /* : NativeString */;
1308 long var54 /* : Int */;
1309 val* var55 /* : String */;
1310 val* var56 /* : String */;
1311 if (varonce) {
1312 var1 = varonce;
1313 } else {
1314 var2 = "/";
1315 var3 = 1;
1316 var4 = string__NativeString__to_s_with_length(var2, var3);
1317 var1 = var4;
1318 varonce = var1;
1319 }
1320 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var1) /* split_with on <self:String>*/;
1321 var_a = var5;
1322 var6 = NEW_array__Array(&type_array__Arraystring__String);
1323 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
1324 var_a2 = var6;
1325 var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on <var_a:Array[String]>*/;
1326 for(;;) {
1327 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1328 if(!var8) break;
1329 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1330 var_x = var9;
1331 if (varonce10) {
1332 var11 = varonce10;
1333 } else {
1334 var12 = ".";
1335 var13 = 1;
1336 var14 = string__NativeString__to_s_with_length(var12, var13);
1337 var11 = var14;
1338 varonce10 = var11;
1339 }
1340 var15 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var11) /* == on <var_x:String>*/;
1341 if (var15){
1342 goto CONTINUE_label;
1343 } else {
1344 }
1345 if (varonce17) {
1346 var18 = varonce17;
1347 } else {
1348 var19 = "";
1349 var20 = 0;
1350 var21 = string__NativeString__to_s_with_length(var19, var20);
1351 var18 = var21;
1352 varonce17 = var18;
1353 }
1354 var22 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var18) /* == on <var_x:String>*/;
1355 var_ = var22;
1356 if (var22){
1357 var23 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1358 var24 = !var23;
1359 var16 = var24;
1360 } else {
1361 var16 = var_;
1362 }
1363 if (var16){
1364 goto CONTINUE_label;
1365 } else {
1366 }
1367 if (varonce27) {
1368 var28 = varonce27;
1369 } else {
1370 var29 = "..";
1371 var30 = 2;
1372 var31 = string__NativeString__to_s_with_length(var29, var30);
1373 var28 = var31;
1374 varonce27 = var28;
1375 }
1376 var32 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var28) /* == on <var_x:String>*/;
1377 var_33 = var32;
1378 if (var32){
1379 var34 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1380 var35 = !var34;
1381 var26 = var35;
1382 } else {
1383 var26 = var_33;
1384 }
1385 var_36 = var26;
1386 if (var26){
1387 var37 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var_a2) /* last on <var_a2:Array[String]>*/;
1388 if (varonce38) {
1389 var39 = varonce38;
1390 } else {
1391 var40 = "..";
1392 var41 = 2;
1393 var42 = string__NativeString__to_s_with_length(var40, var41);
1394 var39 = var42;
1395 varonce38 = var39;
1396 }
1397 var43 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___33d_61d]))(var37, var39) /* != on <var37:nullable Object(String)>*/;
1398 var25 = var43;
1399 } else {
1400 var25 = var_36;
1401 }
1402 if (var25){
1403 var44 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_a2) /* pop on <var_a2:Array[String]>*/;
1404 var44;
1405 goto CONTINUE_label;
1406 } else {
1407 }
1408 ((void (*)(val*, val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__push]))(var_a2, var_x) /* push on <var_a2:Array[String]>*/;
1409 CONTINUE_label: (void)0;
1410 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1411 }
1412 BREAK_label: (void)0;
1413 var45 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
1414 if (var45){
1415 if (varonce46) {
1416 var47 = varonce46;
1417 } else {
1418 var48 = ".";
1419 var49 = 1;
1420 var50 = string__NativeString__to_s_with_length(var48, var49);
1421 var47 = var50;
1422 varonce46 = var47;
1423 }
1424 var = var47;
1425 goto RET_LABEL;
1426 } else {
1427 }
1428 if (varonce51) {
1429 var52 = varonce51;
1430 } else {
1431 var53 = "/";
1432 var54 = 1;
1433 var55 = string__NativeString__to_s_with_length(var53, var54);
1434 var52 = var55;
1435 varonce51 = var52;
1436 }
1437 var56 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var52) /* join on <var_a2:Array[String]>*/;
1438 var = var56;
1439 goto RET_LABEL;
1440 RET_LABEL:;
1441 return var;
1442 }
1443 /* method file#String#simplify_path for (self: Object): String */
1444 val* VIRTUAL_file__String__simplify_path(val* self) {
1445 val* var /* : String */;
1446 val* var1 /* : String */;
1447 var1 = file__String__simplify_path(self);
1448 var = var1;
1449 RET_LABEL:;
1450 return var;
1451 }
1452 /* method file#String#join_path for (self: String, String): String */
1453 val* file__String__join_path(val* self, val* p0) {
1454 val* var /* : String */;
1455 val* var_path /* var path: String */;
1456 short int var1 /* : Bool */;
1457 short int var2 /* : Bool */;
1458 val* var3 /* : StringCharView */;
1459 long var4 /* : Int */;
1460 val* var5 /* : nullable Object */;
1461 char var6 /* : Char */;
1462 short int var7 /* : Bool */;
1463 short int var9 /* : Bool */;
1464 char var10 /* : Char */;
1465 val* var11 /* : Array[Object] */;
1466 long var12 /* : Int */;
1467 val* var_ /* var : Array[Object] */;
1468 static val* varonce;
1469 val* var13 /* : String */;
1470 char* var14 /* : NativeString */;
1471 long var15 /* : Int */;
1472 val* var16 /* : String */;
1473 static val* varonce17;
1474 val* var18 /* : String */;
1475 char* var19 /* : NativeString */;
1476 long var20 /* : Int */;
1477 val* var21 /* : String */;
1478 static val* varonce22;
1479 val* var23 /* : String */;
1480 char* var24 /* : NativeString */;
1481 long var25 /* : Int */;
1482 val* var26 /* : String */;
1483 val* var27 /* : String */;
1484 var_path = p0;
1485 var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path) /* is_empty on <var_path:String>*/;
1486 if (var1){
1487 var = self;
1488 goto RET_LABEL;
1489 } else {
1490 }
1491 var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:String>*/;
1492 if (var2){
1493 var = var_path;
1494 goto RET_LABEL;
1495 } else {
1496 }
1497 var3 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__AbstractString__chars]))(var_path) /* chars on <var_path:String>*/;
1498 var4 = 0;
1499 var5 = ((val* (*)(val*, long))(var3->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var3, var4) /* [] on <var3:StringCharView>*/;
1500 var6 = '/';
1501 { /* Inline kernel#Char#== (var5,var6) */
1502 var9 = (var5 != NULL) && (var5->class == &class_kernel__Char);
1503 if (var9) {
1504 var10 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
1505 var9 = (var10 == var6);
1506 }
1507 var7 = var9;
1508 goto RET_LABEL8;
1509 RET_LABEL8:(void)0;
1510 }
1511 if (var7){
1512 var = var_path;
1513 goto RET_LABEL;
1514 } else {
1515 }
1516 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
1517 var12 = 5;
1518 ((void (*)(val*, long))(var11->class->vft[COLOR_array__Array__with_capacity]))(var11, var12) /* with_capacity on <var11:Array[Object]>*/;
1519 var_ = var11;
1520 if (varonce) {
1521 var13 = varonce;
1522 } else {
1523 var14 = "";
1524 var15 = 0;
1525 var16 = string__NativeString__to_s_with_length(var14, var15);
1526 var13 = var16;
1527 varonce = var13;
1528 }
1529 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
1530 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, self) /* add on <var_:Array[Object]>*/;
1531 if (varonce17) {
1532 var18 = varonce17;
1533 } else {
1534 var19 = "/";
1535 var20 = 1;
1536 var21 = string__NativeString__to_s_with_length(var19, var20);
1537 var18 = var21;
1538 varonce17 = var18;
1539 }
1540 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var18) /* add on <var_:Array[Object]>*/;
1541 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path) /* add on <var_:Array[Object]>*/;
1542 if (varonce22) {
1543 var23 = varonce22;
1544 } else {
1545 var24 = "";
1546 var25 = 0;
1547 var26 = string__NativeString__to_s_with_length(var24, var25);
1548 var23 = var26;
1549 varonce22 = var23;
1550 }
1551 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
1552 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1553 var = var27;
1554 goto RET_LABEL;
1555 RET_LABEL:;
1556 return var;
1557 }
1558 /* method file#String#join_path for (self: Object, String): String */
1559 val* VIRTUAL_file__String__join_path(val* self, val* p0) {
1560 val* var /* : String */;
1561 val* var1 /* : String */;
1562 var1 = file__String__join_path(self, p0);
1563 var = var1;
1564 RET_LABEL:;
1565 return var;
1566 }
1567 /* method file#String#mkdir for (self: String) */
1568 void file__String__mkdir(val* self) {
1569 static val* varonce;
1570 val* var /* : String */;
1571 char* var1 /* : NativeString */;
1572 long var2 /* : Int */;
1573 val* var3 /* : String */;
1574 val* var4 /* : Array[String] */;
1575 val* var_dirs /* var dirs: Array[String] */;
1576 val* var5 /* : Buffer */;
1577 val* var_path /* var path: Buffer */;
1578 short int var6 /* : Bool */;
1579 long var7 /* : Int */;
1580 val* var8 /* : nullable Object */;
1581 short int var9 /* : Bool */;
1582 char var10 /* : Char */;
1583 val* var11 /* : nullable Object */;
1584 val* var12 /* : Iterator[nullable Object] */;
1585 short int var13 /* : Bool */;
1586 val* var14 /* : nullable Object */;
1587 val* var_d /* var d: String */;
1588 short int var15 /* : Bool */;
1589 char var16 /* : Char */;
1590 val* var17 /* : nullable Object */;
1591 val* var18 /* : String */;
1592 char* var19 /* : NativeString */;
1593 short int var20 /* : Bool */;
1594 if (varonce) {
1595 var = varonce;
1596 } else {
1597 var1 = "/";
1598 var2 = 1;
1599 var3 = string__NativeString__to_s_with_length(var1, var2);
1600 var = var3;
1601 varonce = var;
1602 }
1603 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var) /* split_with on <self:String>*/;
1604 var_dirs = var4;
1605 var5 = NEW_string__Buffer(&type_string__Buffer);
1606 ((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on <var5:Buffer>*/;
1607 var_path = var5;
1608 var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on <var_dirs:Array[String]>*/;
1609 if (var6){
1610 goto RET_LABEL;
1611 } else {
1612 }
1613 var7 = 0;
1614 var8 = ((val* (*)(val*, long))(var_dirs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_dirs, var7) /* [] on <var_dirs:Array[String]>*/;
1615 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var8) /* is_empty on <var8:nullable Object(String)>*/;
1616 if (var9){
1617 var10 = '/';
1618 var11 = BOX_kernel__Char(var10); /* autobox from Char to nullable Object */
1619 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var11) /* add on <var_path:Buffer>*/;
1620 } else {
1621 }
1622 var12 = ((val* (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_dirs) /* iterator on <var_dirs:Array[String]>*/;
1623 for(;;) {
1624 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
1625 if(!var13) break;
1626 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
1627 var_d = var14;
1628 var15 = ((short int (*)(val*))(var_d->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_d) /* is_empty on <var_d:String>*/;
1629 if (var15){
1630 goto CONTINUE_label;
1631 } else {
1632 }
1633 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__Sequence__append]))(var_path, var_d) /* append on <var_path:Buffer>*/;
1634 var16 = '/';
1635 var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */
1636 ((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var17) /* add on <var_path:Buffer>*/;
1637 var18 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__Object__to_s]))(var_path) /* to_s on <var_path:Buffer>*/;
1638 var19 = ((char* (*)(val*))(var18->class->vft[COLOR_string__String__to_cstring]))(var18) /* to_cstring on <var18:String>*/;
1639 var20 = file__NativeString__file_mkdir(var19);
1640 var20;
1641 CONTINUE_label: (void)0;
1642 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
1643 }
1644 BREAK_label: (void)0;
1645 RET_LABEL:;
1646 }
1647 /* method file#String#mkdir for (self: Object) */
1648 void VIRTUAL_file__String__mkdir(val* self) {
1649 file__String__mkdir(self);
1650 RET_LABEL:;
1651 }
1652 /* method file#String#chdir for (self: String) */
1653 void file__String__chdir(val* self) {
1654 char* var /* : NativeString */;
1655 var = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
1656 file__NativeString__file_chdir(var);
1657 RET_LABEL:;
1658 }
1659 /* method file#String#chdir for (self: Object) */
1660 void VIRTUAL_file__String__chdir(val* self) {
1661 file__String__chdir(self);
1662 RET_LABEL:;
1663 }
1664 /* method file#String#file_extension for (self: String): nullable String */
1665 val* file__String__file_extension(val* self) {
1666 val* var /* : nullable String */;
1667 char var1 /* : Char */;
1668 long var2 /* : Int */;
1669 val* var3 /* : nullable Object */;
1670 long var_last_slash /* var last_slash: Int */;
1671 long var4 /* : Int */;
1672 short int var5 /* : Bool */;
1673 short int var7 /* : Bool */;
1674 int cltype;
1675 int idtype;
1676 const char* var_class_name;
1677 short int var8 /* : Bool */;
1678 long var9 /* : Int */;
1679 long var10 /* : Int */;
1680 long var12 /* : Int */;
1681 long var13 /* : Int */;
1682 val* var14 /* : String */;
1683 val* var15 /* : null */;
1684 var1 = '.';
1685 var3 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
1686 var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(self, var3) /* last_index_of on <self:String>*/;
1687 var_last_slash = var2;
1688 var4 = 0;
1689 { /* Inline kernel#Int#>= (var_last_slash,var4) */
1690 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1691 /* <var4:Int> isa OTHER */
1692 var7 = 1; /* easy <var4:Int> isa OTHER*/
1693 if (!var7) {
1694 var_class_name = type_kernel__Int.name;
1695 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1696 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1697 show_backtrace(1);
1698 }
1699 var8 = var_last_slash >= var4;
1700 var5 = var8;
1701 goto RET_LABEL6;
1702 RET_LABEL6:(void)0;
1703 }
1704 if (var5){
1705 var9 = 1;
1706 { /* Inline kernel#Int#+ (var_last_slash,var9) */
1707 var12 = var_last_slash + var9;
1708 var10 = var12;
1709 goto RET_LABEL11;
1710 RET_LABEL11:(void)0;
1711 }
1712 var13 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
1713 var14 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var10, var13) /* substring on <self:String>*/;
1714 var = var14;
1715 goto RET_LABEL;
1716 } else {
1717 var15 = NULL;
1718 var = var15;
1719 goto RET_LABEL;
1720 }
1721 RET_LABEL:;
1722 return var;
1723 }
1724 /* method file#String#file_extension for (self: Object): nullable String */
1725 val* VIRTUAL_file__String__file_extension(val* self) {
1726 val* var /* : nullable String */;
1727 val* var1 /* : nullable String */;
1728 var1 = file__String__file_extension(self);
1729 var = var1;
1730 RET_LABEL:;
1731 return var;
1732 }
1733 /* method file#String#files for (self: String): Set[String] */
1734 val* file__String__files(val* self) {
1735 val* var /* : Set[String] */;
1736 val* var1 /* : Set[String] */;
1737 struct nitni_instance* var_for_c_0;
1738 var_for_c_0 = malloc(sizeof(struct nitni_instance));
1739 var_for_c_0->value = self;
1740 struct nitni_instance* ret_var;
1741 ret_var = file___String_files___impl(var_for_c_0);
1742 var1 = ret_var->value;
1743 var = var1;
1744 goto RET_LABEL;
1745 RET_LABEL:;
1746 return var;
1747 }
1748 /* nitni callback for standard::hash_collection::HashSet::init */
1749 struct nitni_instance * file___new_HashSet_of_String( ) {
1750 val* var /* : HashSet[String] */;
1751 var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetstring__String);
1752 val* recv /* var self: HashSet[String] */;
1753 recv = var;
1754 ((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashSet__init]))(var) /* init on <var:HashSet[String]>*/;
1755 struct nitni_instance* ret_for_c;
1756 ret_for_c = malloc(sizeof(struct nitni_instance));
1757 ret_for_c->value = var;
1758 return ret_for_c;
1759 }
1760 /* nitni callback for standard::abstract_collection::SimpleCollection::add */
1761 void file___HashSet_of_String_add( struct nitni_instance * recv, struct nitni_instance * item ) {
1762 ((void (*)(val*, val*))(recv->value->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(recv->value, item->value) /* add on <recv->value:HashSet[String]>*/;
1763 }
1764 /* nitni callback for standard::string::Object::to_s */
1765 struct nitni_instance * file___NativeString_to_s( char* recv ) {
1766 val* var /* : String */;
1767 var = string__NativeString__to_s(recv);
1768 struct nitni_instance* ret_for_c;
1769 ret_for_c = malloc(sizeof(struct nitni_instance));
1770 ret_for_c->value = var;
1771 return ret_for_c;
1772 }
1773 /* nitni callback for standard::string::String::to_cstring */
1774 char* file___String_to_cstring( struct nitni_instance * recv ) {
1775 char* var /* : NativeString */;
1776 var = ((char* (*)(val*))(recv->value->class->vft[COLOR_string__String__to_cstring]))(recv->value) /* to_cstring on <recv->value:String>*/;
1777 return var;
1778 }
1779 /* nitni check for HashSet[String] to Set[String] */
1780 int file___HashSet_of_String_is_a_Set_of_String(struct nitni_instance * from) {
1781 short int var /* : Bool */;
1782 int cltype;
1783 int idtype;
1784 /* <from->value:HashSet[String]> isa Set[String] */
1785 var = 1; /* easy <from->value:HashSet[String]> isa Set[String]*/
1786 return var;
1787 }
1788 /* nitni cast for HashSet[String] to Set[String] */
1789 struct nitni_instance * file___HashSet_of_String_as_Set_of_String(struct nitni_instance * from) {
1790 short int var /* : Bool */;
1791 int cltype;
1792 int idtype;
1793 /* <from->value:HashSet[String]> isa Set[String] */
1794 var = 1; /* easy <from->value:HashSet[String]> isa Set[String]*/
1795 if (!var) {
1796 fprintf(stderr, "Runtime error: %s", "FFI cast failed");
1797 fprintf(stderr, "\n");
1798 show_backtrace(1);
1799 }
1800 struct nitni_instance* ret_for_c;
1801 ret_for_c = malloc(sizeof(struct nitni_instance));
1802 ret_for_c->value = from->value;
1803 return ret_for_c;
1804 }
1805 /* method file#String#files for (self: Object): Set[String] */
1806 val* VIRTUAL_file__String__files(val* self) {
1807 val* var /* : Set[String] */;
1808 val* var1 /* : Set[String] */;
1809 var1 = file__String__files(self);
1810 var = var1;
1811 RET_LABEL:;
1812 return var;
1813 }
1814 /* method file#NativeString#file_exists for (self: NativeString): Bool */
1815 short int file__NativeString__file_exists(char* self) {
1816 short int var /* : Bool */;
1817 short int var1 /* : Bool */;
1818 var1 = string_NativeString_NativeString_file_exists_0(self);
1819 var = var1;
1820 goto RET_LABEL;
1821 RET_LABEL:;
1822 return var;
1823 }
1824 /* method file#NativeString#file_exists for (self: Object): Bool */
1825 short int VIRTUAL_file__NativeString__file_exists(val* self) {
1826 short int var /* : Bool */;
1827 short int var1 /* : Bool */;
1828 char* var2 /* : NativeString */;
1829 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1830 var1 = file__NativeString__file_exists(var2);
1831 var = var1;
1832 RET_LABEL:;
1833 return var;
1834 }
1835 /* method file#NativeString#file_stat for (self: NativeString): FileStat */
1836 void* file__NativeString__file_stat(char* self) {
1837 void* var /* : FileStat */;
1838 void* var1 /* : FileStat */;
1839 var1 = string_NativeString_NativeString_file_stat_0(self);
1840 var = var1;
1841 goto RET_LABEL;
1842 RET_LABEL:;
1843 return var;
1844 }
1845 /* method file#NativeString#file_stat for (self: Object): FileStat */
1846 void* VIRTUAL_file__NativeString__file_stat(val* self) {
1847 void* var /* : FileStat */;
1848 void* var1 /* : FileStat */;
1849 char* var2 /* : NativeString */;
1850 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1851 var1 = file__NativeString__file_stat(var2);
1852 var = var1;
1853 RET_LABEL:;
1854 return var;
1855 }
1856 /* method file#NativeString#file_lstat for (self: NativeString): FileStat */
1857 void* file__NativeString__file_lstat(char* self) {
1858 void* var /* : FileStat */;
1859 void* var1 /* : FileStat */;
1860 var1 = file___NativeString_file_lstat___impl(self);
1861 var = var1;
1862 goto RET_LABEL;
1863 RET_LABEL:;
1864 return var;
1865 }
1866 /* method file#NativeString#file_lstat for (self: Object): FileStat */
1867 void* VIRTUAL_file__NativeString__file_lstat(val* self) {
1868 void* var /* : FileStat */;
1869 void* var1 /* : FileStat */;
1870 char* var2 /* : NativeString */;
1871 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1872 var1 = file__NativeString__file_lstat(var2);
1873 var = var1;
1874 RET_LABEL:;
1875 return var;
1876 }
1877 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
1878 short int file__NativeString__file_mkdir(char* self) {
1879 short int var /* : Bool */;
1880 short int var1 /* : Bool */;
1881 var1 = string_NativeString_NativeString_file_mkdir_0(self);
1882 var = var1;
1883 goto RET_LABEL;
1884 RET_LABEL:;
1885 return var;
1886 }
1887 /* method file#NativeString#file_mkdir for (self: Object): Bool */
1888 short int VIRTUAL_file__NativeString__file_mkdir(val* self) {
1889 short int var /* : Bool */;
1890 short int var1 /* : Bool */;
1891 char* var2 /* : NativeString */;
1892 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1893 var1 = file__NativeString__file_mkdir(var2);
1894 var = var1;
1895 RET_LABEL:;
1896 return var;
1897 }
1898 /* method file#NativeString#file_delete for (self: NativeString): Bool */
1899 short int file__NativeString__file_delete(char* self) {
1900 short int var /* : Bool */;
1901 short int var1 /* : Bool */;
1902 var1 = string_NativeString_NativeString_file_delete_0(self);
1903 var = var1;
1904 goto RET_LABEL;
1905 RET_LABEL:;
1906 return var;
1907 }
1908 /* method file#NativeString#file_delete for (self: Object): Bool */
1909 short int VIRTUAL_file__NativeString__file_delete(val* self) {
1910 short int var /* : Bool */;
1911 short int var1 /* : Bool */;
1912 char* var2 /* : NativeString */;
1913 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1914 var1 = file__NativeString__file_delete(var2);
1915 var = var1;
1916 RET_LABEL:;
1917 return var;
1918 }
1919 /* method file#NativeString#file_chdir for (self: NativeString) */
1920 void file__NativeString__file_chdir(char* self) {
1921 string_NativeString_NativeString_file_chdir_0(self);
1922 RET_LABEL:;
1923 }
1924 /* method file#NativeString#file_chdir for (self: Object) */
1925 void VIRTUAL_file__NativeString__file_chdir(val* self) {
1926 char* var /* : NativeString */;
1927 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1928 file__NativeString__file_chdir(var);
1929 RET_LABEL:;
1930 }
1931 /* method file#NativeString#file_realpath for (self: NativeString): NativeString */
1932 char* file__NativeString__file_realpath(char* self) {
1933 char* var /* : NativeString */;
1934 char* var1 /* : NativeString */;
1935 var1 = file_NativeString_realpath(self);
1936 var = var1;
1937 goto RET_LABEL;
1938 RET_LABEL:;
1939 return var;
1940 }
1941 /* method file#NativeString#file_realpath for (self: Object): NativeString */
1942 char* VIRTUAL_file__NativeString__file_realpath(val* self) {
1943 char* var /* : NativeString */;
1944 char* var1 /* : NativeString */;
1945 char* var2 /* : NativeString */;
1946 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
1947 var1 = file__NativeString__file_realpath(var2);
1948 var = var1;
1949 RET_LABEL:;
1950 return var;
1951 }
1952 /* method file#FileStat#mode for (self: FileStat): Int */
1953 long file__FileStat__mode(void* self) {
1954 long var /* : Int */;
1955 long var1 /* : Int */;
1956 var1 = file_FileStat_FileStat_mode_0(self);
1957 var = var1;
1958 goto RET_LABEL;
1959 RET_LABEL:;
1960 return var;
1961 }
1962 /* method file#FileStat#mode for (self: Object): Int */
1963 long VIRTUAL_file__FileStat__mode(val* self) {
1964 long var /* : Int */;
1965 long var1 /* : Int */;
1966 void* var2 /* : FileStat */;
1967 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
1968 var1 = file__FileStat__mode(var2);
1969 var = var1;
1970 RET_LABEL:;
1971 return var;
1972 }
1973 /* method file#FileStat#atime for (self: FileStat): Int */
1974 long file__FileStat__atime(void* self) {
1975 long var /* : Int */;
1976 long var1 /* : Int */;
1977 var1 = file_FileStat_FileStat_atime_0(self);
1978 var = var1;
1979 goto RET_LABEL;
1980 RET_LABEL:;
1981 return var;
1982 }
1983 /* method file#FileStat#atime for (self: Object): Int */
1984 long VIRTUAL_file__FileStat__atime(val* self) {
1985 long var /* : Int */;
1986 long var1 /* : Int */;
1987 void* var2 /* : FileStat */;
1988 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
1989 var1 = file__FileStat__atime(var2);
1990 var = var1;
1991 RET_LABEL:;
1992 return var;
1993 }
1994 /* method file#FileStat#ctime for (self: FileStat): Int */
1995 long file__FileStat__ctime(void* self) {
1996 long var /* : Int */;
1997 long var1 /* : Int */;
1998 var1 = file_FileStat_FileStat_ctime_0(self);
1999 var = var1;
2000 goto RET_LABEL;
2001 RET_LABEL:;
2002 return var;
2003 }
2004 /* method file#FileStat#ctime for (self: Object): Int */
2005 long VIRTUAL_file__FileStat__ctime(val* self) {
2006 long var /* : Int */;
2007 long var1 /* : Int */;
2008 void* var2 /* : FileStat */;
2009 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2010 var1 = file__FileStat__ctime(var2);
2011 var = var1;
2012 RET_LABEL:;
2013 return var;
2014 }
2015 /* method file#FileStat#mtime for (self: FileStat): Int */
2016 long file__FileStat__mtime(void* self) {
2017 long var /* : Int */;
2018 long var1 /* : Int */;
2019 var1 = file_FileStat_FileStat_mtime_0(self);
2020 var = var1;
2021 goto RET_LABEL;
2022 RET_LABEL:;
2023 return var;
2024 }
2025 /* method file#FileStat#mtime for (self: Object): Int */
2026 long VIRTUAL_file__FileStat__mtime(val* self) {
2027 long var /* : Int */;
2028 long var1 /* : Int */;
2029 void* var2 /* : FileStat */;
2030 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2031 var1 = file__FileStat__mtime(var2);
2032 var = var1;
2033 RET_LABEL:;
2034 return var;
2035 }
2036 /* method file#FileStat#size for (self: FileStat): Int */
2037 long file__FileStat__size(void* self) {
2038 long var /* : Int */;
2039 long var1 /* : Int */;
2040 var1 = file_FileStat_FileStat_size_0(self);
2041 var = var1;
2042 goto RET_LABEL;
2043 RET_LABEL:;
2044 return var;
2045 }
2046 /* method file#FileStat#size for (self: Object): Int */
2047 long VIRTUAL_file__FileStat__size(val* self) {
2048 long var /* : Int */;
2049 long var1 /* : Int */;
2050 void* var2 /* : FileStat */;
2051 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2052 var1 = file__FileStat__size(var2);
2053 var = var1;
2054 RET_LABEL:;
2055 return var;
2056 }
2057 /* method file#FileStat#is_reg for (self: FileStat): Bool */
2058 short int file__FileStat__is_reg(void* self) {
2059 short int var /* : Bool */;
2060 short int var1 /* : Bool */;
2061 var1 = file___FileStat_is_reg___impl(self);
2062 var = var1;
2063 goto RET_LABEL;
2064 RET_LABEL:;
2065 return var;
2066 }
2067 /* method file#FileStat#is_reg for (self: Object): Bool */
2068 short int VIRTUAL_file__FileStat__is_reg(val* self) {
2069 short int var /* : Bool */;
2070 short int var1 /* : Bool */;
2071 void* var2 /* : FileStat */;
2072 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2073 var1 = file__FileStat__is_reg(var2);
2074 var = var1;
2075 RET_LABEL:;
2076 return var;
2077 }
2078 /* method file#FileStat#is_dir for (self: FileStat): Bool */
2079 short int file__FileStat__is_dir(void* self) {
2080 short int var /* : Bool */;
2081 short int var1 /* : Bool */;
2082 var1 = file___FileStat_is_dir___impl(self);
2083 var = var1;
2084 goto RET_LABEL;
2085 RET_LABEL:;
2086 return var;
2087 }
2088 /* method file#FileStat#is_dir for (self: Object): Bool */
2089 short int VIRTUAL_file__FileStat__is_dir(val* self) {
2090 short int var /* : Bool */;
2091 short int var1 /* : Bool */;
2092 void* var2 /* : FileStat */;
2093 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2094 var1 = file__FileStat__is_dir(var2);
2095 var = var1;
2096 RET_LABEL:;
2097 return var;
2098 }
2099 /* method file#FileStat#is_chr for (self: FileStat): Bool */
2100 short int file__FileStat__is_chr(void* self) {
2101 short int var /* : Bool */;
2102 short int var1 /* : Bool */;
2103 var1 = file___FileStat_is_chr___impl(self);
2104 var = var1;
2105 goto RET_LABEL;
2106 RET_LABEL:;
2107 return var;
2108 }
2109 /* method file#FileStat#is_chr for (self: Object): Bool */
2110 short int VIRTUAL_file__FileStat__is_chr(val* self) {
2111 short int var /* : Bool */;
2112 short int var1 /* : Bool */;
2113 void* var2 /* : FileStat */;
2114 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2115 var1 = file__FileStat__is_chr(var2);
2116 var = var1;
2117 RET_LABEL:;
2118 return var;
2119 }
2120 /* method file#FileStat#is_blk for (self: FileStat): Bool */
2121 short int file__FileStat__is_blk(void* self) {
2122 short int var /* : Bool */;
2123 short int var1 /* : Bool */;
2124 var1 = file___FileStat_is_blk___impl(self);
2125 var = var1;
2126 goto RET_LABEL;
2127 RET_LABEL:;
2128 return var;
2129 }
2130 /* method file#FileStat#is_blk for (self: Object): Bool */
2131 short int VIRTUAL_file__FileStat__is_blk(val* self) {
2132 short int var /* : Bool */;
2133 short int var1 /* : Bool */;
2134 void* var2 /* : FileStat */;
2135 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2136 var1 = file__FileStat__is_blk(var2);
2137 var = var1;
2138 RET_LABEL:;
2139 return var;
2140 }
2141 /* method file#FileStat#is_fifo for (self: FileStat): Bool */
2142 short int file__FileStat__is_fifo(void* self) {
2143 short int var /* : Bool */;
2144 short int var1 /* : Bool */;
2145 var1 = file___FileStat_is_fifo___impl(self);
2146 var = var1;
2147 goto RET_LABEL;
2148 RET_LABEL:;
2149 return var;
2150 }
2151 /* method file#FileStat#is_fifo for (self: Object): Bool */
2152 short int VIRTUAL_file__FileStat__is_fifo(val* self) {
2153 short int var /* : Bool */;
2154 short int var1 /* : Bool */;
2155 void* var2 /* : FileStat */;
2156 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2157 var1 = file__FileStat__is_fifo(var2);
2158 var = var1;
2159 RET_LABEL:;
2160 return var;
2161 }
2162 /* method file#FileStat#is_lnk for (self: FileStat): Bool */
2163 short int file__FileStat__is_lnk(void* self) {
2164 short int var /* : Bool */;
2165 short int var1 /* : Bool */;
2166 var1 = file___FileStat_is_lnk___impl(self);
2167 var = var1;
2168 goto RET_LABEL;
2169 RET_LABEL:;
2170 return var;
2171 }
2172 /* method file#FileStat#is_lnk for (self: Object): Bool */
2173 short int VIRTUAL_file__FileStat__is_lnk(val* self) {
2174 short int var /* : Bool */;
2175 short int var1 /* : Bool */;
2176 void* var2 /* : FileStat */;
2177 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2178 var1 = file__FileStat__is_lnk(var2);
2179 var = var1;
2180 RET_LABEL:;
2181 return var;
2182 }
2183 /* method file#FileStat#is_sock for (self: FileStat): Bool */
2184 short int file__FileStat__is_sock(void* self) {
2185 short int var /* : Bool */;
2186 short int var1 /* : Bool */;
2187 var1 = file___FileStat_is_sock___impl(self);
2188 var = var1;
2189 goto RET_LABEL;
2190 RET_LABEL:;
2191 return var;
2192 }
2193 /* method file#FileStat#is_sock for (self: Object): Bool */
2194 short int VIRTUAL_file__FileStat__is_sock(val* self) {
2195 short int var /* : Bool */;
2196 short int var1 /* : Bool */;
2197 void* var2 /* : FileStat */;
2198 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
2199 var1 = file__FileStat__is_sock(var2);
2200 var = var1;
2201 RET_LABEL:;
2202 return var;
2203 }
2204 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
2205 long file__NativeFile__io_read(void* self, char* p0, long p1) {
2206 long var /* : Int */;
2207 long var1 /* : Int */;
2208 var1 = file_NativeFile_NativeFile_io_read_2(self, p0, p1);
2209 var = var1;
2210 goto RET_LABEL;
2211 RET_LABEL:;
2212 return var;
2213 }
2214 /* method file#NativeFile#io_read for (self: Object, NativeString, Int): Int */
2215 long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) {
2216 long var /* : Int */;
2217 long var1 /* : Int */;
2218 void* var2 /* : NativeFile */;
2219 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2220 var1 = file__NativeFile__io_read(var2, p0, p1);
2221 var = var1;
2222 RET_LABEL:;
2223 return var;
2224 }
2225 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */
2226 long file__NativeFile__io_write(void* self, char* p0, long p1) {
2227 long var /* : Int */;
2228 long var1 /* : Int */;
2229 var1 = file_NativeFile_NativeFile_io_write_2(self, p0, p1);
2230 var = var1;
2231 goto RET_LABEL;
2232 RET_LABEL:;
2233 return var;
2234 }
2235 /* method file#NativeFile#io_write for (self: Object, NativeString, Int): Int */
2236 long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) {
2237 long var /* : Int */;
2238 long var1 /* : Int */;
2239 void* var2 /* : NativeFile */;
2240 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2241 var1 = file__NativeFile__io_write(var2, p0, p1);
2242 var = var1;
2243 RET_LABEL:;
2244 return var;
2245 }
2246 /* method file#NativeFile#io_close for (self: NativeFile): Int */
2247 long file__NativeFile__io_close(void* self) {
2248 long var /* : Int */;
2249 long var1 /* : Int */;
2250 var1 = file_NativeFile_NativeFile_io_close_0(self);
2251 var = var1;
2252 goto RET_LABEL;
2253 RET_LABEL:;
2254 return var;
2255 }
2256 /* method file#NativeFile#io_close for (self: Object): Int */
2257 long VIRTUAL_file__NativeFile__io_close(val* self) {
2258 long var /* : Int */;
2259 long var1 /* : Int */;
2260 void* var2 /* : NativeFile */;
2261 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2262 var1 = file__NativeFile__io_close(var2);
2263 var = var1;
2264 RET_LABEL:;
2265 return var;
2266 }
2267 /* method file#NativeFile#file_stat for (self: NativeFile): FileStat */
2268 void* file__NativeFile__file_stat(void* self) {
2269 void* var /* : FileStat */;
2270 void* var1 /* : FileStat */;
2271 var1 = file_NativeFile_NativeFile_file_stat_0(self);
2272 var = var1;
2273 goto RET_LABEL;
2274 RET_LABEL:;
2275 return var;
2276 }
2277 /* method file#NativeFile#file_stat for (self: Object): FileStat */
2278 void* VIRTUAL_file__NativeFile__file_stat(val* self) {
2279 void* var /* : FileStat */;
2280 void* var1 /* : FileStat */;
2281 void* var2 /* : NativeFile */;
2282 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2283 var1 = file__NativeFile__file_stat(var2);
2284 var = var1;
2285 RET_LABEL:;
2286 return var;
2287 }
2288 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
2289 void* file__NativeFile__io_open_read(void* self, char* p0) {
2290 void* var /* : NativeFile */;
2291 void* var1 /* : NativeFile */;
2292 var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
2293 var = var1;
2294 goto RET_LABEL;
2295 RET_LABEL:;
2296 return var;
2297 }
2298 /* method file#NativeFile#io_open_read for (self: Object, NativeString): NativeFile */
2299 void* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) {
2300 void* var /* : NativeFile */;
2301 val* var1 /* : Object */;
2302 void* var2 /* : NativeFile */;
2303 void* var3 /* : NativeFile */;
2304 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2305 var1 = file__NativeFile__io_open_read(var2, p0);
2306 var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2307 var = var3;
2308 RET_LABEL:;
2309 return var;
2310 }
2311 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
2312 void* file__NativeFile__io_open_write(void* self, char* p0) {
2313 void* var /* : NativeFile */;
2314 void* var1 /* : NativeFile */;
2315 var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
2316 var = var1;
2317 goto RET_LABEL;
2318 RET_LABEL:;
2319 return var;
2320 }
2321 /* method file#NativeFile#io_open_write for (self: Object, NativeString): NativeFile */
2322 void* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) {
2323 void* var /* : NativeFile */;
2324 val* var1 /* : Object */;
2325 void* var2 /* : NativeFile */;
2326 void* var3 /* : NativeFile */;
2327 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2328 var1 = file__NativeFile__io_open_write(var2, p0);
2329 var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2330 var = var3;
2331 RET_LABEL:;
2332 return var;
2333 }
2334 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
2335 void* file__NativeFile__native_stdin(void* self) {
2336 void* var /* : NativeFile */;
2337 void* var1 /* : NativeFile */;
2338 var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
2339 var = var1;
2340 goto RET_LABEL;
2341 RET_LABEL:;
2342 return var;
2343 }
2344 /* method file#NativeFile#native_stdin for (self: Object): NativeFile */
2345 void* VIRTUAL_file__NativeFile__native_stdin(val* self) {
2346 void* var /* : NativeFile */;
2347 val* var1 /* : Object */;
2348 void* var2 /* : NativeFile */;
2349 void* var3 /* : NativeFile */;
2350 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2351 var1 = file__NativeFile__native_stdin(var2);
2352 var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2353 var = var3;
2354 RET_LABEL:;
2355 return var;
2356 }
2357 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
2358 void* file__NativeFile__native_stdout(void* self) {
2359 void* var /* : NativeFile */;
2360 void* var1 /* : NativeFile */;
2361 var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
2362 var = var1;
2363 goto RET_LABEL;
2364 RET_LABEL:;
2365 return var;
2366 }
2367 /* method file#NativeFile#native_stdout for (self: Object): NativeFile */
2368 void* VIRTUAL_file__NativeFile__native_stdout(val* self) {
2369 void* var /* : NativeFile */;
2370 val* var1 /* : Object */;
2371 void* var2 /* : NativeFile */;
2372 void* var3 /* : NativeFile */;
2373 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2374 var1 = file__NativeFile__native_stdout(var2);
2375 var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2376 var = var3;
2377 RET_LABEL:;
2378 return var;
2379 }
2380 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
2381 void* file__NativeFile__native_stderr(void* self) {
2382 void* var /* : NativeFile */;
2383 void* var1 /* : NativeFile */;
2384 var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
2385 var = var1;
2386 goto RET_LABEL;
2387 RET_LABEL:;
2388 return var;
2389 }
2390 /* method file#NativeFile#native_stderr for (self: Object): NativeFile */
2391 void* VIRTUAL_file__NativeFile__native_stderr(val* self) {
2392 void* var /* : NativeFile */;
2393 val* var1 /* : Object */;
2394 void* var2 /* : NativeFile */;
2395 void* var3 /* : NativeFile */;
2396 var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2397 var1 = file__NativeFile__native_stderr(var2);
2398 var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2399 var = var3;
2400 RET_LABEL:;
2401 return var;
2402 }
2403 /* method file#Object#stdin for (self: Object): Stdin */
2404 val* file__Object__stdin(val* self) {
2405 val* var /* : Stdin */;
2406 static val* varonce;
2407 static int varonce_guard;
2408 val* var1 /* : Stdin */;
2409 val* var2 /* : Stdin */;
2410 if (varonce_guard) {
2411 var1 = varonce;
2412 } else {
2413 var2 = NEW_file__Stdin(&type_file__Stdin);
2414 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on <var2:Stdin>*/;
2415 var1 = var2;
2416 varonce = var1;
2417 varonce_guard = 1;
2418 }
2419 var = var1;
2420 goto RET_LABEL;
2421 RET_LABEL:;
2422 return var;
2423 }
2424 /* method file#Object#stdin for (self: Object): Stdin */
2425 val* VIRTUAL_file__Object__stdin(val* self) {
2426 val* var /* : Stdin */;
2427 val* var1 /* : Stdin */;
2428 var1 = file__Object__stdin(self);
2429 var = var1;
2430 RET_LABEL:;
2431 return var;
2432 }
2433 /* method file#Object#stdout for (self: Object): OFStream */
2434 val* file__Object__stdout(val* self) {
2435 val* var /* : OFStream */;
2436 static val* varonce;
2437 static int varonce_guard;
2438 val* var1 /* : Stdout */;
2439 val* var2 /* : Stdout */;
2440 if (varonce_guard) {
2441 var1 = varonce;
2442 } else {
2443 var2 = NEW_file__Stdout(&type_file__Stdout);
2444 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on <var2:Stdout>*/;
2445 var1 = var2;
2446 varonce = var1;
2447 varonce_guard = 1;
2448 }
2449 var = var1;
2450 goto RET_LABEL;
2451 RET_LABEL:;
2452 return var;
2453 }
2454 /* method file#Object#stdout for (self: Object): OFStream */
2455 val* VIRTUAL_file__Object__stdout(val* self) {
2456 val* var /* : OFStream */;
2457 val* var1 /* : OFStream */;
2458 var1 = file__Object__stdout(self);
2459 var = var1;
2460 RET_LABEL:;
2461 return var;
2462 }
2463 /* method file#Object#stderr for (self: Object): OFStream */
2464 val* file__Object__stderr(val* self) {
2465 val* var /* : OFStream */;
2466 static val* varonce;
2467 static int varonce_guard;
2468 val* var1 /* : Stderr */;
2469 val* var2 /* : Stderr */;
2470 if (varonce_guard) {
2471 var1 = varonce;
2472 } else {
2473 var2 = NEW_file__Stderr(&type_file__Stderr);
2474 ((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on <var2:Stderr>*/;
2475 var1 = var2;
2476 varonce = var1;
2477 varonce_guard = 1;
2478 }
2479 var = var1;
2480 goto RET_LABEL;
2481 RET_LABEL:;
2482 return var;
2483 }
2484 /* method file#Object#stderr for (self: Object): OFStream */
2485 val* VIRTUAL_file__Object__stderr(val* self) {
2486 val* var /* : OFStream */;
2487 val* var1 /* : OFStream */;
2488 var1 = file__Object__stderr(self);
2489 var = var1;
2490 RET_LABEL:;
2491 return var;
2492 }