README: add system configuration for OS X
[nit.git] / c_src / nitc__light_ffi_base.sep.1.c
1 #include "nitc__light_ffi_base.sep.0.h"
2 /* method light_ffi_base#ToolContext#ffi_language_assignation_phase for (self: ToolContext): Phase */
3 val* nitc__light_ffi_base___ToolContext___ffi_language_assignation_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_nitc__light_ffi_base__ToolContext___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 26);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method light_ffi_base#FFILanguageAssignationPhase#languages for (self: FFILanguageAssignationPhase): Array[FFILanguage] */
17 val* nitc___nitc__FFILanguageAssignationPhase___languages(val* self) {
18 val* var /* : Array[FFILanguage] */;
19 val* var1 /* : Array[FFILanguage] */;
20 var1 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
21 if (unlikely(var1 == NULL)) {
22 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
23 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
24 fatal_exit(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method light_ffi_base#FFILanguageAssignationPhase#process_nmodule for (self: FFILanguageAssignationPhase, AModule) */
31 void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_nmodule(val* self, val* p0) {
32 val* var_nmodule /* var nmodule: AModule */;
33 val* var /* : ANodes[AExternCodeBlock] */;
34 val* var2 /* : ANodes[AExternCodeBlock] */;
35 val* var_ /* var : ANodes[AExternCodeBlock] */;
36 val* var3 /* : Iterator[ANode] */;
37 val* var_4 /* var : Iterator[AExternCodeBlock] */;
38 short int var5 /* : Bool */;
39 val* var6 /* : nullable Object */;
40 val* var_block /* var block: AExternCodeBlock */;
41 var_nmodule = p0;
42 {
43 { /* Inline parser_nodes#AModule#n_extern_code_blocks (var_nmodule) on <var_nmodule:AModule> */
44 var2 = var_nmodule->attrs[COLOR_nitc__parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <var_nmodule:AModule> */
45 if (unlikely(var2 == NULL)) {
46 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
47 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1059);
48 fatal_exit(1);
49 }
50 var = var2;
51 RET_LABEL1:(void)0;
52 }
53 }
54 var_ = var;
55 {
56 var3 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_);
57 }
58 var_4 = var3;
59 for(;;) {
60 {
61 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AExternCodeBlock]>*/
62 }
63 if (var5){
64 } else {
65 goto BREAK_label;
66 }
67 {
68 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AExternCodeBlock]>*/
69 }
70 var_block = var6;
71 {
72 nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
73 }
74 {
75 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AExternCodeBlock]>*/
76 }
77 }
78 BREAK_label: (void)0;
79 {
80 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AExternCodeBlock]>*/
81 }
82 RET_LABEL:;
83 }
84 /* method light_ffi_base#FFILanguageAssignationPhase#process_npropdef for (self: FFILanguageAssignationPhase, APropdef) */
85 void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_npropdef(val* self, val* p0) {
86 val* var_npropdef /* var npropdef: APropdef */;
87 short int var /* : Bool */;
88 int cltype;
89 int idtype;
90 val* var1 /* : nullable AExternCodeBlock */;
91 val* var3 /* : nullable AExternCodeBlock */;
92 val* var_code_block /* var code_block: nullable AExternCodeBlock */;
93 short int var4 /* : Bool */;
94 short int var5 /* : Bool */;
95 val* var_other /* var other: nullable Object */;
96 short int var7 /* : Bool */;
97 short int var8 /* : Bool */;
98 var_npropdef = p0;
99 /* <var_npropdef:APropdef> isa AMethPropdef */
100 cltype = type_nitc__AMethPropdef.color;
101 idtype = type_nitc__AMethPropdef.id;
102 if(cltype >= var_npropdef->type->table_size) {
103 var = 0;
104 } else {
105 var = var_npropdef->type->type_table[cltype] == idtype;
106 }
107 if (var){
108 {
109 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
110 var3 = var_npropdef->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <var_npropdef:APropdef(AMethPropdef)> */
111 var1 = var3;
112 RET_LABEL2:(void)0;
113 }
114 }
115 var_code_block = var1;
116 if (var_code_block == NULL) {
117 var4 = 0; /* is null */
118 } else {
119 var4 = 1; /* arg is null and recv is not */
120 }
121 if (0) {
122 { /* Inline kernel#Object#!= (var_code_block,((val*)NULL)) on <var_code_block:nullable AExternCodeBlock> */
123 var_other = ((val*)NULL);
124 {
125 var7 = ((short int(*)(val* self, val* p0))(var_code_block->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_code_block, var_other); /* == on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/
126 }
127 var8 = !var7;
128 var5 = var8;
129 goto RET_LABEL6;
130 RET_LABEL6:(void)0;
131 }
132 var4 = var5;
133 }
134 if (var4){
135 {
136 nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_code_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
137 }
138 } else {
139 }
140 } else {
141 }
142 RET_LABEL:;
143 }
144 /* method light_ffi_base#FFILanguageAssignationPhase#process_nclassdef for (self: FFILanguageAssignationPhase, AClassdef) */
145 void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_nclassdef(val* self, val* p0) {
146 val* var_nclassdef /* var nclassdef: AClassdef */;
147 short int var /* : Bool */;
148 short int var1 /* : Bool */;
149 int cltype;
150 int idtype;
151 short int var_ /* var : Bool */;
152 val* var2 /* : nullable AExternCodeBlock */;
153 val* var4 /* : nullable AExternCodeBlock */;
154 short int var5 /* : Bool */;
155 short int var6 /* : Bool */;
156 val* var_other /* var other: nullable Object */;
157 short int var8 /* : Bool */;
158 short int var9 /* : Bool */;
159 val* var10 /* : nullable AExternCodeBlock */;
160 val* var12 /* : nullable AExternCodeBlock */;
161 var_nclassdef = p0;
162 /* <var_nclassdef:AClassdef> isa AStdClassdef */
163 cltype = type_nitc__AStdClassdef.color;
164 idtype = type_nitc__AStdClassdef.id;
165 if(cltype >= var_nclassdef->type->table_size) {
166 var1 = 0;
167 } else {
168 var1 = var_nclassdef->type->type_table[cltype] == idtype;
169 }
170 var_ = var1;
171 if (var1){
172 {
173 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
174 var4 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
175 var2 = var4;
176 RET_LABEL3:(void)0;
177 }
178 }
179 if (var2 == NULL) {
180 var5 = 0; /* is null */
181 } else {
182 var5 = 1; /* arg is null and recv is not */
183 }
184 if (0) {
185 { /* Inline kernel#Object#!= (var2,((val*)NULL)) on <var2:nullable AExternCodeBlock> */
186 var_other = ((val*)NULL);
187 {
188 var8 = ((short int(*)(val* self, val* p0))(var2->class->vft[COLOR_core__kernel__Object___61d_61d]))(var2, var_other); /* == on <var2:nullable AExternCodeBlock(AExternCodeBlock)>*/
189 }
190 var9 = !var8;
191 var6 = var9;
192 goto RET_LABEL7;
193 RET_LABEL7:(void)0;
194 }
195 var5 = var6;
196 }
197 var = var5;
198 } else {
199 var = var_;
200 }
201 if (var){
202 {
203 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
204 var12 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
205 var10 = var12;
206 RET_LABEL11:(void)0;
207 }
208 }
209 if (unlikely(var10 == NULL)) {
210 PRINT_ERROR("Runtime error: %s", "Cast failed");
211 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 59);
212 fatal_exit(1);
213 }
214 {
215 nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var10); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
216 }
217 } else {
218 }
219 RET_LABEL:;
220 }
221 /* method light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node for (self: FFILanguageAssignationPhase, AExternCodeBlock) */
222 void nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(val* self, val* p0) {
223 val* var_n /* var n: AExternCodeBlock */;
224 short int var_found /* var found: Bool */;
225 val* var /* : Array[FFILanguage] */;
226 val* var2 /* : Array[FFILanguage] */;
227 val* var_ /* var : Array[FFILanguage] */;
228 val* var3 /* : IndexedIterator[nullable Object] */;
229 val* var_4 /* var : IndexedIterator[FFILanguage] */;
230 short int var5 /* : Bool */;
231 val* var6 /* : nullable Object */;
232 val* var_v /* var v: FFILanguage */;
233 short int var7 /* : Bool */;
234 short int var_identified /* var identified: Bool */;
235 short int var8 /* : Bool */;
236 short int var_9 /* var : Bool */;
237 val* var10 /* : ToolContext */;
238 val* var12 /* : ToolContext */;
239 val* var13 /* : Location */;
240 val* var15 /* : Location */;
241 static val* varonce;
242 val* var16 /* : String */;
243 char* var17 /* : NativeString */;
244 val* var18 /* : String */;
245 val* var19 /* : Message */;
246 short int var21 /* : Bool */;
247 val* var22 /* : ToolContext */;
248 val* var24 /* : ToolContext */;
249 val* var25 /* : Location */;
250 val* var27 /* : Location */;
251 static val* varonce28;
252 val* var29 /* : String */;
253 char* var30 /* : NativeString */;
254 val* var31 /* : String */;
255 val* var32 /* : Message */;
256 var_n = p0;
257 var_found = 0;
258 {
259 { /* Inline light_ffi_base#FFILanguageAssignationPhase#languages (self) on <self:FFILanguageAssignationPhase> */
260 var2 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
261 if (unlikely(var2 == NULL)) {
262 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
263 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
264 fatal_exit(1);
265 }
266 var = var2;
267 RET_LABEL1:(void)0;
268 }
269 }
270 var_ = var;
271 {
272 var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
273 }
274 var_4 = var3;
275 for(;;) {
276 {
277 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[FFILanguage]>*/
278 }
279 if (var5){
280 } else {
281 goto BREAK_label;
282 }
283 {
284 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[FFILanguage]>*/
285 }
286 var_v = var6;
287 {
288 var7 = nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__identify_language(var_v, var_n);
289 }
290 var_identified = var7;
291 if (var_identified){
292 var_9 = var_found;
293 if (var_found){
294 var8 = var_identified;
295 } else {
296 var8 = var_9;
297 }
298 if (var8){
299 {
300 { /* Inline phase#Phase#toolcontext (self) on <self:FFILanguageAssignationPhase> */
301 var12 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
302 if (unlikely(var12 == NULL)) {
303 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
304 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
305 fatal_exit(1);
306 }
307 var10 = var12;
308 RET_LABEL11:(void)0;
309 }
310 }
311 {
312 { /* Inline parser_nodes#ANode#location (var_n) on <var_n:AExternCodeBlock> */
313 var15 = var_n->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
314 if (unlikely(var15 == NULL)) {
315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
316 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
317 fatal_exit(1);
318 }
319 var13 = var15;
320 RET_LABEL14:(void)0;
321 }
322 }
323 if (likely(varonce!=NULL)) {
324 var16 = varonce;
325 } else {
326 var17 = "FFI Error: two languages identified as possible handlers.";
327 var18 = core__flat___NativeString___to_s_full(var17, 57l, 57l);
328 var16 = var18;
329 varonce = var16;
330 }
331 {
332 var19 = nitc___nitc__ToolContext___error(var10, var13, var16);
333 }
334 } else {
335 }
336 {
337 { /* Inline light_ffi_base#AExternCodeBlock#language= (var_n,var_v) on <var_n:AExternCodeBlock> */
338 var_n->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val = var_v; /* _language on <var_n:AExternCodeBlock> */
339 RET_LABEL20:(void)0;
340 }
341 }
342 var_found = 1;
343 } else {
344 }
345 {
346 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[FFILanguage]>*/
347 }
348 }
349 BREAK_label: (void)0;
350 {
351 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[FFILanguage]>*/
352 }
353 var21 = !var_found;
354 if (var21){
355 {
356 { /* Inline phase#Phase#toolcontext (self) on <self:FFILanguageAssignationPhase> */
357 var24 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
358 if (unlikely(var24 == NULL)) {
359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
360 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
361 fatal_exit(1);
362 }
363 var22 = var24;
364 RET_LABEL23:(void)0;
365 }
366 }
367 {
368 { /* Inline parser_nodes#ANode#location (var_n) on <var_n:AExternCodeBlock> */
369 var27 = var_n->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
370 if (unlikely(var27 == NULL)) {
371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
372 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
373 fatal_exit(1);
374 }
375 var25 = var27;
376 RET_LABEL26:(void)0;
377 }
378 }
379 if (likely(varonce28!=NULL)) {
380 var29 = varonce28;
381 } else {
382 var30 = "FFI Error: unsupported language.";
383 var31 = core__flat___NativeString___to_s_full(var30, 32l, 32l);
384 var29 = var31;
385 varonce28 = var29;
386 }
387 {
388 var32 = nitc___nitc__ToolContext___error(var22, var25, var29);
389 }
390 } else {
391 }
392 RET_LABEL:;
393 }
394 /* method light_ffi_base#MModule#ffi_files for (self: MModule): Array[ExternFile] */
395 val* nitc__light_ffi_base___MModule___ffi_files(val* self) {
396 val* var /* : Array[ExternFile] */;
397 val* var1 /* : Array[ExternFile] */;
398 var1 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
399 if (unlikely(var1 == NULL)) {
400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
401 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
402 fatal_exit(1);
403 }
404 var = var1;
405 RET_LABEL:;
406 return var;
407 }
408 /* method light_ffi_base#AExternCodeBlock#language_name for (self: AExternCodeBlock): nullable String */
409 val* nitc__light_ffi_base___AExternCodeBlock___language_name(val* self) {
410 val* var /* : nullable String */;
411 val* var1 /* : nullable AInLanguage */;
412 val* var3 /* : nullable AInLanguage */;
413 short int var4 /* : Bool */;
414 short int var5 /* : Bool */;
415 val* var_other /* var other: nullable Object */;
416 short int var7 /* : Bool */;
417 short int var9 /* : Bool */;
418 val* var10 /* : nullable AInLanguage */;
419 val* var12 /* : nullable AInLanguage */;
420 val* var13 /* : TString */;
421 val* var15 /* : TString */;
422 val* var16 /* : String */;
423 {
424 { /* Inline parser_nodes#AExternCodeBlock#n_in_language (self) on <self:AExternCodeBlock> */
425 var3 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
426 var1 = var3;
427 RET_LABEL2:(void)0;
428 }
429 }
430 if (var1 == NULL) {
431 var4 = 1; /* is null */
432 } else {
433 var4 = 0; /* arg is null but recv is not */
434 }
435 if (0) {
436 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable AInLanguage> */
437 var_other = ((val*)NULL);
438 {
439 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable AInLanguage(AInLanguage)> */
440 var9 = var1 == var_other;
441 var7 = var9;
442 goto RET_LABEL8;
443 RET_LABEL8:(void)0;
444 }
445 }
446 var5 = var7;
447 goto RET_LABEL6;
448 RET_LABEL6:(void)0;
449 }
450 var4 = var5;
451 }
452 if (var4){
453 var = ((val*)NULL);
454 goto RET_LABEL;
455 } else {
456 }
457 {
458 { /* Inline parser_nodes#AExternCodeBlock#n_in_language (self) on <self:AExternCodeBlock> */
459 var12 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
460 var10 = var12;
461 RET_LABEL11:(void)0;
462 }
463 }
464 if (var10 == NULL) {
465 PRINT_ERROR("Runtime error: %s", "Receiver is null");
466 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 90);
467 fatal_exit(1);
468 } else {
469 { /* Inline parser_nodes#AInLanguage#n_string (var10) on <var10:nullable AInLanguage> */
470 if (unlikely(var10 == NULL)) {
471 PRINT_ERROR("Runtime error: %s", "Receiver is null");
472 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2849);
473 fatal_exit(1);
474 }
475 var15 = var10->attrs[COLOR_nitc__parser_nodes__AInLanguage___n_string].val; /* _n_string on <var10:nullable AInLanguage> */
476 if (unlikely(var15 == NULL)) {
477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_string");
478 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2849);
479 fatal_exit(1);
480 }
481 var13 = var15;
482 RET_LABEL14:(void)0;
483 }
484 }
485 {
486 var16 = nitc__light_ffi_base___TString___without_quotes(var13);
487 }
488 var = var16;
489 goto RET_LABEL;
490 RET_LABEL:;
491 return var;
492 }
493 /* method light_ffi_base#AExternCodeBlock#language_name_lowered for (self: AExternCodeBlock): nullable String */
494 val* nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(val* self) {
495 val* var /* : nullable String */;
496 val* var1 /* : nullable String */;
497 short int var2 /* : Bool */;
498 short int var3 /* : Bool */;
499 val* var4 /* : nullable String */;
500 val* var5 /* : String */;
501 {
502 var1 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
503 }
504 if (var1 == NULL) {
505 var2 = 1; /* is null */
506 } else {
507 var2 = 0; /* arg is null but recv is not */
508 }
509 if (0) {
510 var3 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1, ((val*)NULL)); /* == on <var1:nullable String>*/
511 var2 = var3;
512 }
513 if (var2){
514 var = ((val*)NULL);
515 goto RET_LABEL;
516 } else {
517 }
518 {
519 var4 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
520 }
521 if (var4 == NULL) {
522 PRINT_ERROR("Runtime error: %s", "Receiver is null");
523 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 96);
524 fatal_exit(1);
525 } else {
526 var5 = ((val*(*)(val* self))(var4->class->vft[COLOR_core__abstract_text__String__to_lower]))(var4); /* to_lower on <var4:nullable String>*/
527 }
528 var = var5;
529 goto RET_LABEL;
530 RET_LABEL:;
531 return var;
532 }
533 /* method light_ffi_base#AExternCodeBlock#code for (self: AExternCodeBlock): String */
534 val* nitc__light_ffi_base___AExternCodeBlock___code(val* self) {
535 val* var /* : String */;
536 val* var1 /* : TExternCodeSegment */;
537 val* var3 /* : TExternCodeSegment */;
538 val* var4 /* : String */;
539 {
540 { /* Inline parser_nodes#AExternCodeBlock#n_extern_code_segment (self) on <self:AExternCodeBlock> */
541 var3 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_extern_code_segment].val; /* _n_extern_code_segment on <self:AExternCodeBlock> */
542 if (unlikely(var3 == NULL)) {
543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_segment");
544 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2860);
545 fatal_exit(1);
546 }
547 var1 = var3;
548 RET_LABEL2:(void)0;
549 }
550 }
551 {
552 var4 = nitc__light_ffi_base___TExternCodeSegment___without_guard(var1);
553 }
554 var = var4;
555 goto RET_LABEL;
556 RET_LABEL:;
557 return var;
558 }
559 /* method light_ffi_base#AExternCodeBlock#language for (self: AExternCodeBlock): nullable FFILanguage */
560 val* nitc__light_ffi_base___AExternCodeBlock___language(val* self) {
561 val* var /* : nullable FFILanguage */;
562 val* var1 /* : nullable FFILanguage */;
563 var1 = self->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <self:AExternCodeBlock> */
564 var = var1;
565 RET_LABEL:;
566 return var;
567 }
568 /* method light_ffi_base#AExternCodeBlock#language= for (self: AExternCodeBlock, nullable FFILanguage) */
569 void nitc__light_ffi_base___AExternCodeBlock___language_61d(val* self, val* p0) {
570 self->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val = p0; /* _language on <self:AExternCodeBlock> */
571 RET_LABEL:;
572 }
573 /* method light_ffi_base#FFILanguage#ffi_language_assignation_phase for (self: FFILanguage): FFILanguageAssignationPhase */
574 val* nitc___nitc__FFILanguage___ffi_language_assignation_phase(val* self) {
575 val* var /* : FFILanguageAssignationPhase */;
576 val* var1 /* : FFILanguageAssignationPhase */;
577 var1 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
578 if (unlikely(var1 == NULL)) {
579 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
580 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 109);
581 fatal_exit(1);
582 }
583 var = var1;
584 RET_LABEL:;
585 return var;
586 }
587 /* method light_ffi_base#FFILanguage#ffi_language_assignation_phase= for (self: FFILanguage, FFILanguageAssignationPhase) */
588 void nitc___nitc__FFILanguage___ffi_language_assignation_phase_61d(val* self, val* p0) {
589 self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val = p0; /* _ffi_language_assignation_phase on <self:FFILanguage> */
590 RET_LABEL:;
591 }
592 /* method light_ffi_base#FFILanguage#init for (self: FFILanguage) */
593 void nitc___nitc__FFILanguage___core__kernel__Object__init(val* self) {
594 val* var /* : FFILanguageAssignationPhase */;
595 val* var2 /* : FFILanguageAssignationPhase */;
596 val* var3 /* : Array[FFILanguage] */;
597 val* var5 /* : Array[FFILanguage] */;
598 {
599 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__FFILanguage___core__kernel__Object__init]))(self); /* init on <self:FFILanguage>*/
600 }
601 {
602 { /* Inline light_ffi_base#FFILanguage#ffi_language_assignation_phase (self) on <self:FFILanguage> */
603 var2 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
604 if (unlikely(var2 == NULL)) {
605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
606 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 109);
607 fatal_exit(1);
608 }
609 var = var2;
610 RET_LABEL1:(void)0;
611 }
612 }
613 {
614 { /* Inline light_ffi_base#FFILanguageAssignationPhase#languages (var) on <var:FFILanguageAssignationPhase> */
615 var5 = var->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <var:FFILanguageAssignationPhase> */
616 if (unlikely(var5 == NULL)) {
617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
618 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
619 fatal_exit(1);
620 }
621 var3 = var5;
622 RET_LABEL4:(void)0;
623 }
624 }
625 {
626 core___core__Array___core__abstract_collection__SimpleCollection__add(var3, self); /* Direct call array#Array#add on <var3:Array[FFILanguage]>*/
627 }
628 RET_LABEL:;
629 }
630 /* method light_ffi_base#TString#without_quotes for (self: TString): String */
631 val* nitc__light_ffi_base___TString___without_quotes(val* self) {
632 val* var /* : String */;
633 val* var1 /* : String */;
634 long var2 /* : Int */;
635 short int var3 /* : Bool */;
636 short int var5 /* : Bool */;
637 int cltype;
638 int idtype;
639 const char* var_class_name;
640 short int var6 /* : Bool */;
641 val* var7 /* : String */;
642 val* var8 /* : String */;
643 long var9 /* : Int */;
644 long var10 /* : Int */;
645 short int var12 /* : Bool */;
646 int cltype13;
647 int idtype14;
648 const char* var_class_name15;
649 long var16 /* : Int */;
650 val* var17 /* : Text */;
651 {
652 var1 = nitc__lexer_work___Token___text(self);
653 }
654 {
655 var2 = ((long(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__Text__length]))(var1); /* length on <var1:String>*/
656 }
657 {
658 { /* Inline kernel#Int#>= (var2,2l) on <var2:Int> */
659 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
660 /* <2l:Int> isa OTHER */
661 var5 = 1; /* easy <2l:Int> isa OTHER*/
662 if (unlikely(!var5)) {
663 var_class_name = type_core__Int.name;
664 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
665 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
666 fatal_exit(1);
667 }
668 var6 = var2 >= 2l;
669 var3 = var6;
670 goto RET_LABEL4;
671 RET_LABEL4:(void)0;
672 }
673 }
674 if (unlikely(!var3)) {
675 PRINT_ERROR("Runtime error: %s", "Assert failed");
676 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 142);
677 fatal_exit(1);
678 }
679 {
680 var7 = nitc__lexer_work___Token___text(self);
681 }
682 {
683 var8 = nitc__lexer_work___Token___text(self);
684 }
685 {
686 var9 = ((long(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__Text__length]))(var8); /* length on <var8:String>*/
687 }
688 {
689 { /* Inline kernel#Int#- (var9,2l) on <var9:Int> */
690 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
691 /* <2l:Int> isa OTHER */
692 var12 = 1; /* easy <2l:Int> isa OTHER*/
693 if (unlikely(!var12)) {
694 var_class_name15 = type_core__Int.name;
695 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
696 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
697 fatal_exit(1);
698 }
699 var16 = var9 - 2l;
700 var10 = var16;
701 goto RET_LABEL11;
702 RET_LABEL11:(void)0;
703 }
704 }
705 {
706 var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_core__abstract_text__Text__substring]))(var7, 1l, var10); /* substring on <var7:String>*/
707 }
708 var = var17;
709 goto RET_LABEL;
710 RET_LABEL:;
711 return var;
712 }
713 /* method light_ffi_base#TExternCodeSegment#without_guard for (self: TExternCodeSegment): String */
714 val* nitc__light_ffi_base___TExternCodeSegment___without_guard(val* self) {
715 val* var /* : String */;
716 val* var1 /* : String */;
717 long var2 /* : Int */;
718 short int var3 /* : Bool */;
719 short int var5 /* : Bool */;
720 int cltype;
721 int idtype;
722 const char* var_class_name;
723 short int var6 /* : Bool */;
724 val* var7 /* : String */;
725 val* var8 /* : String */;
726 long var9 /* : Int */;
727 long var10 /* : Int */;
728 short int var12 /* : Bool */;
729 int cltype13;
730 int idtype14;
731 const char* var_class_name15;
732 long var16 /* : Int */;
733 val* var17 /* : Text */;
734 {
735 var1 = nitc__lexer_work___Token___text(self);
736 }
737 {
738 var2 = ((long(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__Text__length]))(var1); /* length on <var1:String>*/
739 }
740 {
741 { /* Inline kernel#Int#>= (var2,4l) on <var2:Int> */
742 /* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
743 /* <4l:Int> isa OTHER */
744 var5 = 1; /* easy <4l:Int> isa OTHER*/
745 if (unlikely(!var5)) {
746 var_class_name = type_core__Int.name;
747 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
748 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
749 fatal_exit(1);
750 }
751 var6 = var2 >= 4l;
752 var3 = var6;
753 goto RET_LABEL4;
754 RET_LABEL4:(void)0;
755 }
756 }
757 if (unlikely(!var3)) {
758 PRINT_ERROR("Runtime error: %s", "Assert failed");
759 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 151);
760 fatal_exit(1);
761 }
762 {
763 var7 = nitc__lexer_work___Token___text(self);
764 }
765 {
766 var8 = nitc__lexer_work___Token___text(self);
767 }
768 {
769 var9 = ((long(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__Text__length]))(var8); /* length on <var8:String>*/
770 }
771 {
772 { /* Inline kernel#Int#- (var9,4l) on <var9:Int> */
773 /* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
774 /* <4l:Int> isa OTHER */
775 var12 = 1; /* easy <4l:Int> isa OTHER*/
776 if (unlikely(!var12)) {
777 var_class_name15 = type_core__Int.name;
778 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
779 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
780 fatal_exit(1);
781 }
782 var16 = var9 - 4l;
783 var10 = var16;
784 goto RET_LABEL11;
785 RET_LABEL11:(void)0;
786 }
787 }
788 {
789 var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_core__abstract_text__Text__substring]))(var7, 2l, var10); /* substring on <var7:String>*/
790 }
791 var = var17;
792 goto RET_LABEL;
793 RET_LABEL:;
794 return var;
795 }
796 /* method light_ffi_base#CCompilationUnit#write_as_impl for (self: CCompilationUnit, MModule, String) */
797 void nitc__light_ffi_base___CCompilationUnit___write_as_impl(val* self, val* p0, val* p1) {
798 val* var_mmodule /* var mmodule: MModule */;
799 val* var_compdir /* var compdir: String */;
800 val* var /* : NativeArray[String] */;
801 static val* varonce;
802 static val* varonce1;
803 val* var2 /* : String */;
804 char* var3 /* : NativeString */;
805 val* var4 /* : String */;
806 val* var5 /* : String */;
807 val* var6 /* : String */;
808 val* var_base_name /* var base_name: String */;
809 val* var8 /* : NativeArray[String] */;
810 static val* varonce7;
811 static val* varonce9;
812 val* var10 /* : String */;
813 char* var11 /* : NativeString */;
814 val* var12 /* : String */;
815 val* var13 /* : String */;
816 val* var_h_file /* var h_file: String */;
817 val* var15 /* : NativeArray[String] */;
818 static val* varonce14;
819 static val* varonce16;
820 val* var17 /* : String */;
821 char* var18 /* : NativeString */;
822 val* var19 /* : String */;
823 val* var20 /* : String */;
824 val* var21 /* : String */;
825 val* var22 /* : String */;
826 val* var_guard /* var guard: String */;
827 val* var24 /* : NativeArray[String] */;
828 static val* varonce23;
829 static val* varonce25;
830 val* var26 /* : String */;
831 char* var27 /* : NativeString */;
832 val* var28 /* : String */;
833 val* var29 /* : String */;
834 val* var30 /* : Array[String] */;
835 val* var_ /* var : Array[String] */;
836 static val* varonce31;
837 val* var32 /* : String */;
838 char* var33 /* : NativeString */;
839 val* var34 /* : String */;
840 val* var36 /* : NativeArray[String] */;
841 static val* varonce35;
842 static val* varonce37;
843 val* var38 /* : String */;
844 char* var39 /* : NativeString */;
845 val* var40 /* : String */;
846 val* var41 /* : String */;
847 val* var_c_file /* var c_file: String */;
848 val* var43 /* : NativeArray[String] */;
849 static val* varonce42;
850 static val* varonce44;
851 val* var45 /* : String */;
852 char* var46 /* : NativeString */;
853 val* var47 /* : String */;
854 val* var48 /* : String */;
855 val* var49 /* : Array[String] */;
856 val* var_50 /* var : Array[String] */;
857 static val* varonce51;
858 val* var52 /* : String */;
859 char* var53 /* : NativeString */;
860 val* var54 /* : String */;
861 static val* varonce55;
862 val* var56 /* : String */;
863 char* var57 /* : NativeString */;
864 val* var58 /* : String */;
865 static val* varonce59;
866 val* var60 /* : String */;
867 char* var61 /* : NativeString */;
868 val* var62 /* : String */;
869 val* var64 /* : NativeArray[String] */;
870 static val* varonce63;
871 static val* varonce65;
872 val* var66 /* : String */;
873 char* var67 /* : NativeString */;
874 val* var68 /* : String */;
875 static val* varonce69;
876 val* var70 /* : String */;
877 char* var71 /* : NativeString */;
878 val* var72 /* : String */;
879 val* var73 /* : String */;
880 val* var74 /* : Array[String] */;
881 val* var76 /* : Array[String] */;
882 val* var78 /* : NativeArray[String] */;
883 static val* varonce77;
884 static val* varonce79;
885 val* var80 /* : String */;
886 char* var81 /* : NativeString */;
887 val* var82 /* : String */;
888 val* var83 /* : String */;
889 var_mmodule = p0;
890 var_compdir = p1;
891 if (unlikely(varonce==NULL)) {
892 var = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
893 if (likely(varonce1!=NULL)) {
894 var2 = varonce1;
895 } else {
896 var3 = "._ffi";
897 var4 = core__flat___NativeString___to_s_full(var3, 5l, 5l);
898 var2 = var4;
899 varonce1 = var2;
900 }
901 ((struct instance_core__NativeArray*)var)->values[1]=var2;
902 } else {
903 var = varonce;
904 varonce = NULL;
905 }
906 {
907 var5 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
908 }
909 ((struct instance_core__NativeArray*)var)->values[0]=var5;
910 {
911 var6 = ((val*(*)(val* self))(var->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
912 }
913 varonce = var;
914 var_base_name = var6;
915 if (unlikely(varonce7==NULL)) {
916 var8 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
917 if (likely(varonce9!=NULL)) {
918 var10 = varonce9;
919 } else {
920 var11 = ".h";
921 var12 = core__flat___NativeString___to_s_full(var11, 2l, 2l);
922 var10 = var12;
923 varonce9 = var10;
924 }
925 ((struct instance_core__NativeArray*)var8)->values[1]=var10;
926 } else {
927 var8 = varonce7;
928 varonce7 = NULL;
929 }
930 ((struct instance_core__NativeArray*)var8)->values[0]=var_base_name;
931 {
932 var13 = ((val*(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
933 }
934 varonce7 = var8;
935 var_h_file = var13;
936 if (unlikely(varonce14==NULL)) {
937 var15 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
938 if (likely(varonce16!=NULL)) {
939 var17 = varonce16;
940 } else {
941 var18 = "_NIT_H";
942 var19 = core__flat___NativeString___to_s_full(var18, 6l, 6l);
943 var17 = var19;
944 varonce16 = var17;
945 }
946 ((struct instance_core__NativeArray*)var15)->values[1]=var17;
947 } else {
948 var15 = varonce14;
949 varonce14 = NULL;
950 }
951 {
952 var20 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
953 }
954 {
955 var21 = ((val*(*)(val* self))(var20->class->vft[COLOR_core__abstract_text__String__to_upper]))(var20); /* to_upper on <var20:String>*/
956 }
957 ((struct instance_core__NativeArray*)var15)->values[0]=var21;
958 {
959 var22 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
960 }
961 varonce14 = var15;
962 var_guard = var22;
963 if (unlikely(varonce23==NULL)) {
964 var24 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
965 if (likely(varonce25!=NULL)) {
966 var26 = varonce25;
967 } else {
968 var27 = "/";
969 var28 = core__flat___NativeString___to_s_full(var27, 1l, 1l);
970 var26 = var28;
971 varonce25 = var26;
972 }
973 ((struct instance_core__NativeArray*)var24)->values[1]=var26;
974 } else {
975 var24 = varonce23;
976 varonce23 = NULL;
977 }
978 ((struct instance_core__NativeArray*)var24)->values[0]=var_compdir;
979 ((struct instance_core__NativeArray*)var24)->values[2]=var_h_file;
980 {
981 var29 = ((val*(*)(val* self))(var24->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var24); /* native_to_s on <var24:NativeArray[String]>*/
982 }
983 varonce23 = var24;
984 var30 = NEW_core__Array(&type_core__Array__core__String);
985 {
986 core___core__Array___with_capacity(var30, 1l); /* Direct call array#Array#with_capacity on <var30:Array[String]>*/
987 }
988 var_ = var30;
989 if (likely(varonce31!=NULL)) {
990 var32 = varonce31;
991 } else {
992 var33 = "<stdint.h>";
993 var34 = core__flat___NativeString___to_s_full(var33, 10l, 10l);
994 var32 = var34;
995 varonce31 = var32;
996 }
997 {
998 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var32); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
999 }
1000 {
1001 nitc__light_ffi_base___CCompilationUnit___write_header_to_file(self, var_mmodule, var29, var_, var_guard); /* Direct call light_ffi_base#CCompilationUnit#write_header_to_file on <self:CCompilationUnit>*/
1002 }
1003 if (unlikely(varonce35==NULL)) {
1004 var36 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
1005 if (likely(varonce37!=NULL)) {
1006 var38 = varonce37;
1007 } else {
1008 var39 = ".c";
1009 var40 = core__flat___NativeString___to_s_full(var39, 2l, 2l);
1010 var38 = var40;
1011 varonce37 = var38;
1012 }
1013 ((struct instance_core__NativeArray*)var36)->values[1]=var38;
1014 } else {
1015 var36 = varonce35;
1016 varonce35 = NULL;
1017 }
1018 ((struct instance_core__NativeArray*)var36)->values[0]=var_base_name;
1019 {
1020 var41 = ((val*(*)(val* self))(var36->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var36); /* native_to_s on <var36:NativeArray[String]>*/
1021 }
1022 varonce35 = var36;
1023 var_c_file = var41;
1024 if (unlikely(varonce42==NULL)) {
1025 var43 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1026 if (likely(varonce44!=NULL)) {
1027 var45 = varonce44;
1028 } else {
1029 var46 = "/";
1030 var47 = core__flat___NativeString___to_s_full(var46, 1l, 1l);
1031 var45 = var47;
1032 varonce44 = var45;
1033 }
1034 ((struct instance_core__NativeArray*)var43)->values[1]=var45;
1035 } else {
1036 var43 = varonce42;
1037 varonce42 = NULL;
1038 }
1039 ((struct instance_core__NativeArray*)var43)->values[0]=var_compdir;
1040 ((struct instance_core__NativeArray*)var43)->values[2]=var_c_file;
1041 {
1042 var48 = ((val*(*)(val* self))(var43->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var43); /* native_to_s on <var43:NativeArray[String]>*/
1043 }
1044 varonce42 = var43;
1045 var49 = NEW_core__Array(&type_core__Array__core__String);
1046 {
1047 core___core__Array___with_capacity(var49, 4l); /* Direct call array#Array#with_capacity on <var49:Array[String]>*/
1048 }
1049 var_50 = var49;
1050 if (likely(varonce51!=NULL)) {
1051 var52 = varonce51;
1052 } else {
1053 var53 = "<stdlib.h>";
1054 var54 = core__flat___NativeString___to_s_full(var53, 10l, 10l);
1055 var52 = var54;
1056 varonce51 = var52;
1057 }
1058 {
1059 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var52); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
1060 }
1061 if (likely(varonce55!=NULL)) {
1062 var56 = varonce55;
1063 } else {
1064 var57 = "<stdio.h>";
1065 var58 = core__flat___NativeString___to_s_full(var57, 9l, 9l);
1066 var56 = var58;
1067 varonce55 = var56;
1068 }
1069 {
1070 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var56); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
1071 }
1072 if (likely(varonce59!=NULL)) {
1073 var60 = varonce59;
1074 } else {
1075 var61 = "<stdint.h>";
1076 var62 = core__flat___NativeString___to_s_full(var61, 10l, 10l);
1077 var60 = var62;
1078 varonce59 = var60;
1079 }
1080 {
1081 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var60); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
1082 }
1083 if (unlikely(varonce63==NULL)) {
1084 var64 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1085 if (likely(varonce65!=NULL)) {
1086 var66 = varonce65;
1087 } else {
1088 var67 = "\"";
1089 var68 = core__flat___NativeString___to_s_full(var67, 1l, 1l);
1090 var66 = var68;
1091 varonce65 = var66;
1092 }
1093 ((struct instance_core__NativeArray*)var64)->values[0]=var66;
1094 if (likely(varonce69!=NULL)) {
1095 var70 = varonce69;
1096 } else {
1097 var71 = "\"";
1098 var72 = core__flat___NativeString___to_s_full(var71, 1l, 1l);
1099 var70 = var72;
1100 varonce69 = var70;
1101 }
1102 ((struct instance_core__NativeArray*)var64)->values[2]=var70;
1103 } else {
1104 var64 = varonce63;
1105 varonce63 = NULL;
1106 }
1107 ((struct instance_core__NativeArray*)var64)->values[1]=var_h_file;
1108 {
1109 var73 = ((val*(*)(val* self))(var64->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var64); /* native_to_s on <var64:NativeArray[String]>*/
1110 }
1111 varonce63 = var64;
1112 {
1113 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var73); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
1114 }
1115 {
1116 nitc__light_ffi_base___CCompilationUnit___write_body_to_file(self, var_mmodule, var48, var_50); /* Direct call light_ffi_base#CCompilationUnit#write_body_to_file on <self:CCompilationUnit>*/
1117 }
1118 {
1119 { /* Inline c_tools#CCompilationUnit#files (self) on <self:CCompilationUnit> */
1120 var76 = self->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
1121 if (unlikely(var76 == NULL)) {
1122 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
1123 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
1124 fatal_exit(1);
1125 }
1126 var74 = var76;
1127 RET_LABEL75:(void)0;
1128 }
1129 }
1130 if (unlikely(varonce77==NULL)) {
1131 var78 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1132 if (likely(varonce79!=NULL)) {
1133 var80 = varonce79;
1134 } else {
1135 var81 = "/";
1136 var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
1137 var80 = var82;
1138 varonce79 = var80;
1139 }
1140 ((struct instance_core__NativeArray*)var78)->values[1]=var80;
1141 } else {
1142 var78 = varonce77;
1143 varonce77 = NULL;
1144 }
1145 ((struct instance_core__NativeArray*)var78)->values[0]=var_compdir;
1146 ((struct instance_core__NativeArray*)var78)->values[2]=var_c_file;
1147 {
1148 var83 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
1149 }
1150 varonce77 = var78;
1151 {
1152 core___core__Array___core__abstract_collection__SimpleCollection__add(var74, var83); /* Direct call array#Array#add on <var74:Array[String]>*/
1153 }
1154 RET_LABEL:;
1155 }
1156 /* method light_ffi_base#CCompilationUnit#write_header_to_file for (self: CCompilationUnit, MModule, String, Array[String], String) */
1157 void nitc__light_ffi_base___CCompilationUnit___write_header_to_file(val* self, val* p0, val* p1, val* p2, val* p3) {
1158 val* var_mmodule /* var mmodule: MModule */;
1159 val* var_file /* var file: String */;
1160 val* var_includes /* var includes: Array[String] */;
1161 val* var_guard /* var guard: String */;
1162 val* var /* : FileWriter */;
1163 val* var_stream /* var stream: FileWriter */;
1164 val* var1 /* : NativeArray[String] */;
1165 static val* varonce;
1166 static val* varonce2;
1167 val* var3 /* : String */;
1168 char* var4 /* : NativeString */;
1169 val* var5 /* : String */;
1170 static val* varonce6;
1171 val* var7 /* : String */;
1172 char* var8 /* : NativeString */;
1173 val* var9 /* : String */;
1174 val* var10 /* : String */;
1175 val* var12 /* : String */;
1176 val* var13 /* : String */;
1177 val* var_module_info /* var module_info: String */;
1178 val* var15 /* : NativeArray[String] */;
1179 static val* varonce14;
1180 static val* varonce16;
1181 val* var17 /* : String */;
1182 char* var18 /* : NativeString */;
1183 val* var19 /* : String */;
1184 static val* varonce20;
1185 val* var21 /* : String */;
1186 char* var22 /* : NativeString */;
1187 val* var23 /* : String */;
1188 val* var24 /* : String */;
1189 val* var26 /* : NativeArray[String] */;
1190 static val* varonce25;
1191 static val* varonce27;
1192 val* var28 /* : String */;
1193 char* var29 /* : NativeString */;
1194 val* var30 /* : String */;
1195 static val* varonce31;
1196 val* var32 /* : String */;
1197 char* var33 /* : NativeString */;
1198 val* var34 /* : String */;
1199 val* var35 /* : String */;
1200 val* var_ /* var : Array[String] */;
1201 val* var36 /* : IndexedIterator[nullable Object] */;
1202 val* var_37 /* var : IndexedIterator[String] */;
1203 short int var38 /* : Bool */;
1204 val* var39 /* : nullable Object */;
1205 val* var_incl /* var incl: String */;
1206 val* var41 /* : NativeArray[String] */;
1207 static val* varonce40;
1208 static val* varonce42;
1209 val* var43 /* : String */;
1210 char* var44 /* : NativeString */;
1211 val* var45 /* : String */;
1212 static val* varonce46;
1213 val* var47 /* : String */;
1214 char* var48 /* : NativeString */;
1215 val* var49 /* : String */;
1216 val* var50 /* : String */;
1217 static val* varonce51;
1218 val* var52 /* : String */;
1219 char* var53 /* : NativeString */;
1220 val* var54 /* : String */;
1221 var_mmodule = p0;
1222 var_file = p1;
1223 var_includes = p2;
1224 var_guard = p3;
1225 var = NEW_core__FileWriter(&type_core__FileWriter);
1226 {
1227 core___core__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
1228 }
1229 var_stream = var;
1230 if (unlikely(varonce==NULL)) {
1231 var1 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1232 if (likely(varonce2!=NULL)) {
1233 var3 = varonce2;
1234 } else {
1235 var4 = "/*\n\tExtern implementation of Nit module ";
1236 var5 = core__flat___NativeString___to_s_full(var4, 40l, 40l);
1237 var3 = var5;
1238 varonce2 = var3;
1239 }
1240 ((struct instance_core__NativeArray*)var1)->values[0]=var3;
1241 if (likely(varonce6!=NULL)) {
1242 var7 = varonce6;
1243 } else {
1244 var8 = "\n*/\n";
1245 var9 = core__flat___NativeString___to_s_full(var8, 4l, 4l);
1246 var7 = var9;
1247 varonce6 = var7;
1248 }
1249 ((struct instance_core__NativeArray*)var1)->values[2]=var7;
1250 } else {
1251 var1 = varonce;
1252 varonce = NULL;
1253 }
1254 {
1255 { /* Inline mmodule#MModule#name (var_mmodule) on <var_mmodule:MModule> */
1256 var12 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
1257 if (unlikely(var12 == NULL)) {
1258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1259 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 95);
1260 fatal_exit(1);
1261 }
1262 var10 = var12;
1263 RET_LABEL11:(void)0;
1264 }
1265 }
1266 ((struct instance_core__NativeArray*)var1)->values[1]=var10;
1267 {
1268 var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
1269 }
1270 varonce = var1;
1271 var_module_info = var13;
1272 {
1273 core___core__FileWriter___core__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1274 }
1275 if (unlikely(varonce14==NULL)) {
1276 var15 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1277 if (likely(varonce16!=NULL)) {
1278 var17 = varonce16;
1279 } else {
1280 var18 = "#ifndef ";
1281 var19 = core__flat___NativeString___to_s_full(var18, 8l, 8l);
1282 var17 = var19;
1283 varonce16 = var17;
1284 }
1285 ((struct instance_core__NativeArray*)var15)->values[0]=var17;
1286 if (likely(varonce20!=NULL)) {
1287 var21 = varonce20;
1288 } else {
1289 var22 = "\n";
1290 var23 = core__flat___NativeString___to_s_full(var22, 1l, 1l);
1291 var21 = var23;
1292 varonce20 = var21;
1293 }
1294 ((struct instance_core__NativeArray*)var15)->values[2]=var21;
1295 } else {
1296 var15 = varonce14;
1297 varonce14 = NULL;
1298 }
1299 ((struct instance_core__NativeArray*)var15)->values[1]=var_guard;
1300 {
1301 var24 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
1302 }
1303 varonce14 = var15;
1304 {
1305 core___core__FileWriter___core__stream__Writer__write(var_stream, var24); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1306 }
1307 if (unlikely(varonce25==NULL)) {
1308 var26 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1309 if (likely(varonce27!=NULL)) {
1310 var28 = varonce27;
1311 } else {
1312 var29 = "#define ";
1313 var30 = core__flat___NativeString___to_s_full(var29, 8l, 8l);
1314 var28 = var30;
1315 varonce27 = var28;
1316 }
1317 ((struct instance_core__NativeArray*)var26)->values[0]=var28;
1318 if (likely(varonce31!=NULL)) {
1319 var32 = varonce31;
1320 } else {
1321 var33 = "\n\n";
1322 var34 = core__flat___NativeString___to_s_full(var33, 2l, 2l);
1323 var32 = var34;
1324 varonce31 = var32;
1325 }
1326 ((struct instance_core__NativeArray*)var26)->values[2]=var32;
1327 } else {
1328 var26 = varonce25;
1329 varonce25 = NULL;
1330 }
1331 ((struct instance_core__NativeArray*)var26)->values[1]=var_guard;
1332 {
1333 var35 = ((val*(*)(val* self))(var26->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
1334 }
1335 varonce25 = var26;
1336 {
1337 core___core__FileWriter___core__stream__Writer__write(var_stream, var35); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1338 }
1339 var_ = var_includes;
1340 {
1341 var36 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1342 }
1343 var_37 = var36;
1344 for(;;) {
1345 {
1346 var38 = ((short int(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_37); /* is_ok on <var_37:IndexedIterator[String]>*/
1347 }
1348 if (var38){
1349 } else {
1350 goto BREAK_label;
1351 }
1352 {
1353 var39 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_37); /* item on <var_37:IndexedIterator[String]>*/
1354 }
1355 var_incl = var39;
1356 if (unlikely(varonce40==NULL)) {
1357 var41 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1358 if (likely(varonce42!=NULL)) {
1359 var43 = varonce42;
1360 } else {
1361 var44 = "#include ";
1362 var45 = core__flat___NativeString___to_s_full(var44, 9l, 9l);
1363 var43 = var45;
1364 varonce42 = var43;
1365 }
1366 ((struct instance_core__NativeArray*)var41)->values[0]=var43;
1367 if (likely(varonce46!=NULL)) {
1368 var47 = varonce46;
1369 } else {
1370 var48 = "\n";
1371 var49 = core__flat___NativeString___to_s_full(var48, 1l, 1l);
1372 var47 = var49;
1373 varonce46 = var47;
1374 }
1375 ((struct instance_core__NativeArray*)var41)->values[2]=var47;
1376 } else {
1377 var41 = varonce40;
1378 varonce40 = NULL;
1379 }
1380 ((struct instance_core__NativeArray*)var41)->values[1]=var_incl;
1381 {
1382 var50 = ((val*(*)(val* self))(var41->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
1383 }
1384 varonce40 = var41;
1385 {
1386 core___core__FileWriter___core__stream__Writer__write(var_stream, var50); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1387 }
1388 {
1389 ((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_37); /* next on <var_37:IndexedIterator[String]>*/
1390 }
1391 }
1392 BREAK_label: (void)0;
1393 {
1394 ((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_37); /* finish on <var_37:IndexedIterator[String]>*/
1395 }
1396 {
1397 nitc___nitc__CCompilationUnit___compile_header_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_header_core on <self:CCompilationUnit>*/
1398 }
1399 if (likely(varonce51!=NULL)) {
1400 var52 = varonce51;
1401 } else {
1402 var53 = "#endif\n";
1403 var54 = core__flat___NativeString___to_s_full(var53, 7l, 7l);
1404 var52 = var54;
1405 varonce51 = var52;
1406 }
1407 {
1408 core___core__FileWriter___core__stream__Writer__write(var_stream, var52); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1409 }
1410 {
1411 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
1412 }
1413 RET_LABEL:;
1414 }
1415 /* method light_ffi_base#CCompilationUnit#write_body_to_file for (self: CCompilationUnit, MModule, String, Array[String]) */
1416 void nitc__light_ffi_base___CCompilationUnit___write_body_to_file(val* self, val* p0, val* p1, val* p2) {
1417 val* var_mmodule /* var mmodule: MModule */;
1418 val* var_file /* var file: String */;
1419 val* var_includes /* var includes: Array[String] */;
1420 val* var /* : FileWriter */;
1421 val* var_stream /* var stream: FileWriter */;
1422 val* var1 /* : NativeArray[String] */;
1423 static val* varonce;
1424 static val* varonce2;
1425 val* var3 /* : String */;
1426 char* var4 /* : NativeString */;
1427 val* var5 /* : String */;
1428 static val* varonce6;
1429 val* var7 /* : String */;
1430 char* var8 /* : NativeString */;
1431 val* var9 /* : String */;
1432 val* var10 /* : String */;
1433 val* var12 /* : String */;
1434 val* var13 /* : String */;
1435 val* var_module_info /* var module_info: String */;
1436 val* var_ /* var : Array[String] */;
1437 val* var14 /* : IndexedIterator[nullable Object] */;
1438 val* var_15 /* var : IndexedIterator[String] */;
1439 short int var16 /* : Bool */;
1440 val* var17 /* : nullable Object */;
1441 val* var_incl /* var incl: String */;
1442 val* var19 /* : NativeArray[String] */;
1443 static val* varonce18;
1444 static val* varonce20;
1445 val* var21 /* : String */;
1446 char* var22 /* : NativeString */;
1447 val* var23 /* : String */;
1448 static val* varonce24;
1449 val* var25 /* : String */;
1450 char* var26 /* : NativeString */;
1451 val* var27 /* : String */;
1452 val* var28 /* : String */;
1453 var_mmodule = p0;
1454 var_file = p1;
1455 var_includes = p2;
1456 var = NEW_core__FileWriter(&type_core__FileWriter);
1457 {
1458 core___core__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
1459 }
1460 var_stream = var;
1461 if (unlikely(varonce==NULL)) {
1462 var1 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1463 if (likely(varonce2!=NULL)) {
1464 var3 = varonce2;
1465 } else {
1466 var4 = "/*\n\tExtern implementation of Nit module ";
1467 var5 = core__flat___NativeString___to_s_full(var4, 40l, 40l);
1468 var3 = var5;
1469 varonce2 = var3;
1470 }
1471 ((struct instance_core__NativeArray*)var1)->values[0]=var3;
1472 if (likely(varonce6!=NULL)) {
1473 var7 = varonce6;
1474 } else {
1475 var8 = "\n*/\n";
1476 var9 = core__flat___NativeString___to_s_full(var8, 4l, 4l);
1477 var7 = var9;
1478 varonce6 = var7;
1479 }
1480 ((struct instance_core__NativeArray*)var1)->values[2]=var7;
1481 } else {
1482 var1 = varonce;
1483 varonce = NULL;
1484 }
1485 {
1486 { /* Inline mmodule#MModule#name (var_mmodule) on <var_mmodule:MModule> */
1487 var12 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
1488 if (unlikely(var12 == NULL)) {
1489 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1490 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 95);
1491 fatal_exit(1);
1492 }
1493 var10 = var12;
1494 RET_LABEL11:(void)0;
1495 }
1496 }
1497 ((struct instance_core__NativeArray*)var1)->values[1]=var10;
1498 {
1499 var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
1500 }
1501 varonce = var1;
1502 var_module_info = var13;
1503 {
1504 core___core__FileWriter___core__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1505 }
1506 var_ = var_includes;
1507 {
1508 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1509 }
1510 var_15 = var14;
1511 for(;;) {
1512 {
1513 var16 = ((short int(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_15); /* is_ok on <var_15:IndexedIterator[String]>*/
1514 }
1515 if (var16){
1516 } else {
1517 goto BREAK_label;
1518 }
1519 {
1520 var17 = ((val*(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_15); /* item on <var_15:IndexedIterator[String]>*/
1521 }
1522 var_incl = var17;
1523 if (unlikely(varonce18==NULL)) {
1524 var19 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1525 if (likely(varonce20!=NULL)) {
1526 var21 = varonce20;
1527 } else {
1528 var22 = "#include ";
1529 var23 = core__flat___NativeString___to_s_full(var22, 9l, 9l);
1530 var21 = var23;
1531 varonce20 = var21;
1532 }
1533 ((struct instance_core__NativeArray*)var19)->values[0]=var21;
1534 if (likely(varonce24!=NULL)) {
1535 var25 = varonce24;
1536 } else {
1537 var26 = "\n";
1538 var27 = core__flat___NativeString___to_s_full(var26, 1l, 1l);
1539 var25 = var27;
1540 varonce24 = var25;
1541 }
1542 ((struct instance_core__NativeArray*)var19)->values[2]=var25;
1543 } else {
1544 var19 = varonce18;
1545 varonce18 = NULL;
1546 }
1547 ((struct instance_core__NativeArray*)var19)->values[1]=var_incl;
1548 {
1549 var28 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
1550 }
1551 varonce18 = var19;
1552 {
1553 core___core__FileWriter___core__stream__Writer__write(var_stream, var28); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
1554 }
1555 {
1556 ((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_15); /* next on <var_15:IndexedIterator[String]>*/
1557 }
1558 }
1559 BREAK_label: (void)0;
1560 {
1561 ((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_15); /* finish on <var_15:IndexedIterator[String]>*/
1562 }
1563 {
1564 nitc___nitc__CCompilationUnit___compile_body_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_body_core on <self:CCompilationUnit>*/
1565 }
1566 {
1567 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
1568 }
1569 RET_LABEL:;
1570 }
1571 /* method light_ffi_base#ForeignType#ctype for (self: ForeignType): String */
1572 val* nitc___nitc__ForeignType___ctype(val* self) {
1573 val* var /* : String */;
1574 static val* varonce;
1575 val* var1 /* : String */;
1576 char* var2 /* : NativeString */;
1577 val* var3 /* : String */;
1578 if (likely(varonce!=NULL)) {
1579 var1 = varonce;
1580 } else {
1581 var2 = "void*";
1582 var3 = core__flat___NativeString___to_s_full(var2, 5l, 5l);
1583 var1 = var3;
1584 varonce = var1;
1585 }
1586 var = var1;
1587 goto RET_LABEL;
1588 RET_LABEL:;
1589 return var;
1590 }