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