c_src: update with new intern methods
[nit.git] / c_src / c.sep.1.c
1 #include "c.sep.0.h"
2 /* method c#FFILanguageAssignationPhase#c_language for (self: FFILanguageAssignationPhase): FFILanguage */
3 val* c__FFILanguageAssignationPhase__c_language(val* self) {
4 val* var /* : FFILanguage */;
5 val* var1 /* : FFILanguage */;
6 var1 = self->attrs[COLOR_c__FFILanguageAssignationPhase___64dc_language].val; /* @c_language on <self:FFILanguageAssignationPhase> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @c_language");
9 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 23);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method c#FFILanguageAssignationPhase#c_language for (self: Object): FFILanguage */
17 val* VIRTUAL_c__FFILanguageAssignationPhase__c_language(val* self) {
18 val* var /* : FFILanguage */;
19 val* var1 /* : FFILanguage */;
20 var1 = c__FFILanguageAssignationPhase__c_language(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method c#FFILanguageAssignationPhase#c_language= for (self: FFILanguageAssignationPhase, FFILanguage) */
26 void c__FFILanguageAssignationPhase__c_language_61d(val* self, val* p0) {
27 self->attrs[COLOR_c__FFILanguageAssignationPhase___64dc_language].val = p0; /* @c_language on <self:FFILanguageAssignationPhase> */
28 RET_LABEL:;
29 }
30 /* method c#FFILanguageAssignationPhase#c_language= for (self: Object, FFILanguage) */
31 void VIRTUAL_c__FFILanguageAssignationPhase__c_language_61d(val* self, val* p0) {
32 c__FFILanguageAssignationPhase__c_language_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method c#CLanguage#identify_language for (self: CLanguage, AExternCodeBlock): Bool */
36 short int c__CLanguage__identify_language(val* self, val* p0) {
37 short int var /* : Bool */;
38 val* var_n /* var n: AExternCodeBlock */;
39 short int var1 /* : Bool */;
40 var_n = p0;
41 var1 = ((short int (*)(val*))(var_n->class->vft[COLOR_c__AExternCodeBlock__is_c]))(var_n) /* is_c on <var_n:AExternCodeBlock>*/;
42 var = var1;
43 goto RET_LABEL;
44 RET_LABEL:;
45 return var;
46 }
47 /* method c#CLanguage#identify_language for (self: Object, AExternCodeBlock): Bool */
48 short int VIRTUAL_c__CLanguage__identify_language(val* self, val* p0) {
49 short int var /* : Bool */;
50 short int var1 /* : Bool */;
51 var1 = c__CLanguage__identify_language(self, p0);
52 var = var1;
53 RET_LABEL:;
54 return var;
55 }
56 /* method c#CLanguage#compile_module_block for (self: CLanguage, AExternCodeBlock, CCompilationUnit, AModule) */
57 void c__CLanguage__compile_module_block(val* self, val* p0, val* p1, val* p2) {
58 val* var_block /* var block: AExternCodeBlock */;
59 val* var_ecc /* var ecc: CCompilationUnit */;
60 val* var_nmodule /* var nmodule: AModule */;
61 short int var /* : Bool */;
62 val* var1 /* : Template */;
63 val* var2 /* : Location */;
64 val* var3 /* : String */;
65 val* var4 /* : Template */;
66 val* var5 /* : String */;
67 short int var6 /* : Bool */;
68 val* var7 /* : Template */;
69 val* var8 /* : Location */;
70 val* var9 /* : String */;
71 val* var10 /* : Template */;
72 val* var11 /* : String */;
73 var_block = p0;
74 var_ecc = p1;
75 var_nmodule = p2;
76 var = ((short int (*)(val*))(var_block->class->vft[COLOR_c__AExternCodeBlock__is_c_header]))(var_block) /* is_c_header on <var_block:AExternCodeBlock>*/;
77 if (var){
78 var1 = ((val* (*)(val*))(var_ecc->class->vft[COLOR_c_tools__CCompilationUnit__header_custom]))(var_ecc) /* header_custom on <var_ecc:CCompilationUnit>*/;
79 var2 = ((val* (*)(val*))(var_block->class->vft[COLOR_parser_nodes__ANode__location]))(var_block) /* location on <var_block:AExternCodeBlock>*/;
80 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_c__Location__as_line_pragma]))(var2) /* as_line_pragma on <var2:Location>*/;
81 ((void (*)(val*, val*))(var1->class->vft[COLOR_template__Template__add]))(var1, var3) /* add on <var1:Template>*/;
82 var4 = ((val* (*)(val*))(var_ecc->class->vft[COLOR_c_tools__CCompilationUnit__header_custom]))(var_ecc) /* header_custom on <var_ecc:CCompilationUnit>*/;
83 var5 = ((val* (*)(val*))(var_block->class->vft[COLOR_ffi_base__AExternCodeBlock__code]))(var_block) /* code on <var_block:AExternCodeBlock>*/;
84 ((void (*)(val*, val*))(var4->class->vft[COLOR_template__Template__add]))(var4, var5) /* add on <var4:Template>*/;
85 } else {
86 var6 = ((short int (*)(val*))(var_block->class->vft[COLOR_c__AExternCodeBlock__is_c_body]))(var_block) /* is_c_body on <var_block:AExternCodeBlock>*/;
87 if (var6){
88 var7 = ((val* (*)(val*))(var_ecc->class->vft[COLOR_c_tools__CCompilationUnit__body_custom]))(var_ecc) /* body_custom on <var_ecc:CCompilationUnit>*/;
89 var8 = ((val* (*)(val*))(var_block->class->vft[COLOR_parser_nodes__ANode__location]))(var_block) /* location on <var_block:AExternCodeBlock>*/;
90 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_c__Location__as_line_pragma]))(var8) /* as_line_pragma on <var8:Location>*/;
91 ((void (*)(val*, val*))(var7->class->vft[COLOR_template__Template__add]))(var7, var9) /* add on <var7:Template>*/;
92 var10 = ((val* (*)(val*))(var_ecc->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(var_ecc) /* body_impl on <var_ecc:CCompilationUnit>*/;
93 var11 = ((val* (*)(val*))(var_block->class->vft[COLOR_ffi_base__AExternCodeBlock__code]))(var_block) /* code on <var_block:AExternCodeBlock>*/;
94 ((void (*)(val*, val*))(var10->class->vft[COLOR_template__Template__add]))(var10, var11) /* add on <var10:Template>*/;
95 } else {
96 }
97 }
98 RET_LABEL:;
99 }
100 /* method c#CLanguage#compile_module_block for (self: Object, AExternCodeBlock, CCompilationUnit, AModule) */
101 void VIRTUAL_c__CLanguage__compile_module_block(val* self, val* p0, val* p1, val* p2) {
102 c__CLanguage__compile_module_block(self, p0, p1, p2);
103 RET_LABEL:;
104 }
105 /* method c#CLanguage#compile_extern_method for (self: CLanguage, AExternCodeBlock, AExternPropdef, CCompilationUnit, AModule) */
106 void c__CLanguage__compile_extern_method(val* self, val* p0, val* p1, val* p2, val* p3) {
107 val* var_block /* var block: AExternCodeBlock */;
108 val* var_m /* var m: AExternPropdef */;
109 val* var_ecc /* var ecc: CCompilationUnit */;
110 val* var_nmodule /* var nmodule: AModule */;
111 val* var /* : ExternCFunction */;
112 val* var1 /* : nullable MModule */;
113 val* var_fc /* var fc: ExternCFunction */;
114 val* var2 /* : Template */;
115 val* var3 /* : Location */;
116 val* var4 /* : String */;
117 val* var5 /* : Template */;
118 val* var6 /* : String */;
119 var_block = p0;
120 var_m = p1;
121 var_ecc = p2;
122 var_nmodule = p3;
123 var = NEW_c__ExternCFunction(&type_c__ExternCFunction);
124 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
125 if (var1 == NULL) {
126 fprintf(stderr, "Runtime error: %s", "Cast failed");
127 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 44);
128 show_backtrace(1);
129 }
130 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_c__ExternCFunction__init]))(var, var_m, var1) /* init on <var:ExternCFunction>*/;
131 var_fc = var;
132 var2 = ((val* (*)(val*))(var_fc->class->vft[COLOR_c_tools__CFunction__decls]))(var_fc) /* decls on <var_fc:ExternCFunction>*/;
133 var3 = ((val* (*)(val*))(var_block->class->vft[COLOR_parser_nodes__ANode__location]))(var_block) /* location on <var_block:AExternCodeBlock>*/;
134 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_c__Location__as_line_pragma]))(var3) /* as_line_pragma on <var3:Location>*/;
135 ((void (*)(val*, val*))(var2->class->vft[COLOR_template__Template__add]))(var2, var4) /* add on <var2:Template>*/;
136 var5 = ((val* (*)(val*))(var_fc->class->vft[COLOR_c_tools__CFunction__exprs]))(var_fc) /* exprs on <var_fc:ExternCFunction>*/;
137 var6 = ((val* (*)(val*))(var_block->class->vft[COLOR_ffi_base__AExternCodeBlock__code]))(var_block) /* code on <var_block:AExternCodeBlock>*/;
138 ((void (*)(val*, val*))(var5->class->vft[COLOR_template__Template__add]))(var5, var6) /* add on <var5:Template>*/;
139 ((void (*)(val*, val*))(var_ecc->class->vft[COLOR_c_tools__CCompilationUnit__add_exported_function]))(var_ecc, var_fc) /* add_exported_function on <var_ecc:CCompilationUnit>*/;
140 RET_LABEL:;
141 }
142 /* method c#CLanguage#compile_extern_method for (self: Object, AExternCodeBlock, AExternPropdef, CCompilationUnit, AModule) */
143 void VIRTUAL_c__CLanguage__compile_extern_method(val* self, val* p0, val* p1, val* p2, val* p3) {
144 c__CLanguage__compile_extern_method(self, p0, p1, p2, p3);
145 RET_LABEL:;
146 }
147 /* method c#CLanguage#compile_extern_class for (self: CLanguage, AExternCodeBlock, AClassdef, CCompilationUnit, AModule) */
148 void c__CLanguage__compile_extern_class(val* self, val* p0, val* p1, val* p2, val* p3) {
149 val* var_block /* var block: AExternCodeBlock */;
150 val* var_m /* var m: AClassdef */;
151 val* var_ecc /* var ecc: CCompilationUnit */;
152 val* var_nmodule /* var nmodule: AModule */;
153 var_block = p0;
154 var_m = p1;
155 var_ecc = p2;
156 var_nmodule = p3;
157 RET_LABEL:;
158 }
159 /* method c#CLanguage#compile_extern_class for (self: Object, AExternCodeBlock, AClassdef, CCompilationUnit, AModule) */
160 void VIRTUAL_c__CLanguage__compile_extern_class(val* self, val* p0, val* p1, val* p2, val* p3) {
161 c__CLanguage__compile_extern_class(self, p0, p1, p2, p3);
162 RET_LABEL:;
163 }
164 /* method c#CLanguage#get_ftype for (self: CLanguage, AExternCodeBlock, AClassdef): ForeignType */
165 val* c__CLanguage__get_ftype(val* self, val* p0, val* p1) {
166 val* var /* : ForeignType */;
167 val* var_block /* var block: AExternCodeBlock */;
168 val* var_m /* var m: AClassdef */;
169 val* var1 /* : ForeignCType */;
170 val* var2 /* : String */;
171 var_block = p0;
172 var_m = p1;
173 var1 = NEW_c__ForeignCType(&type_c__ForeignCType);
174 var2 = ((val* (*)(val*))(var_block->class->vft[COLOR_ffi_base__AExternCodeBlock__code]))(var_block) /* code on <var_block:AExternCodeBlock>*/;
175 ((void (*)(val*, val*))(var1->class->vft[COLOR_c__ForeignCType__init]))(var1, var2) /* init on <var1:ForeignCType>*/;
176 var = var1;
177 goto RET_LABEL;
178 RET_LABEL:;
179 return var;
180 }
181 /* method c#CLanguage#get_ftype for (self: Object, AExternCodeBlock, AClassdef): ForeignType */
182 val* VIRTUAL_c__CLanguage__get_ftype(val* self, val* p0, val* p1) {
183 val* var /* : ForeignType */;
184 val* var1 /* : ForeignType */;
185 var1 = c__CLanguage__get_ftype(self, p0, p1);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method c#CLanguage#compile_callback for (self: CLanguage, NitniCallback, AModule, MModule, CCompilationUnit) */
191 void c__CLanguage__compile_callback(val* self, val* p0, val* p1, val* p2, val* p3) {
192 val* var_callback /* var callback: NitniCallback */;
193 val* var_nmodule /* var nmodule: AModule */;
194 val* var_mmodule /* var mmodule: MModule */;
195 val* var_ecc /* var ecc: CCompilationUnit */;
196 var_callback = p0;
197 var_nmodule = p1;
198 var_mmodule = p2;
199 var_ecc = p3;
200 ((void (*)(val*, val*, val*))(var_callback->class->vft[COLOR_c__NitniCallback__compile_callback_to_c]))(var_callback, var_mmodule, var_ecc) /* compile_callback_to_c on <var_callback:NitniCallback>*/;
201 RET_LABEL:;
202 }
203 /* method c#CLanguage#compile_callback for (self: Object, NitniCallback, AModule, MModule, CCompilationUnit) */
204 void VIRTUAL_c__CLanguage__compile_callback(val* self, val* p0, val* p1, val* p2, val* p3) {
205 c__CLanguage__compile_callback(self, p0, p1, p2, p3);
206 RET_LABEL:;
207 }
208 /* method c#AExternCodeBlock#is_c for (self: AExternCodeBlock): Bool */
209 short int c__AExternCodeBlock__is_c(val* self) {
210 short int var /* : Bool */;
211 short int var1 /* : Bool */;
212 short int var2 /* : Bool */;
213 val* var3 /* : nullable String */;
214 val* var4 /* : null */;
215 short int var5 /* : Bool */;
216 short int var_ /* var : Bool */;
217 val* var6 /* : nullable String */;
218 static val* varonce;
219 val* var7 /* : String */;
220 char* var8 /* : NativeString */;
221 long var9 /* : Int */;
222 val* var10 /* : String */;
223 short int var11 /* : Bool */;
224 short int var_12 /* var : Bool */;
225 val* var13 /* : nullable String */;
226 static val* varonce14;
227 val* var15 /* : String */;
228 char* var16 /* : NativeString */;
229 long var17 /* : Int */;
230 val* var18 /* : String */;
231 short int var19 /* : Bool */;
232 var3 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name]))(self) /* language_name on <self:AExternCodeBlock>*/;
233 var4 = NULL;
234 if (var3 == NULL) {
235 var5 = 1; /* is null */
236 } else {
237 var5 = 0; /* arg is null but recv is not */
238 }
239 var_ = var5;
240 if (var5){
241 var2 = var_;
242 } else {
243 var6 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name_lowered]))(self) /* language_name_lowered on <self:AExternCodeBlock>*/;
244 if (varonce) {
245 var7 = varonce;
246 } else {
247 var8 = "c";
248 var9 = 1;
249 var10 = string__NativeString__to_s_with_length(var8, var9);
250 var7 = var10;
251 varonce = var7;
252 }
253 if (var6 == NULL) {
254 var11 = 0; /* <var7:String> cannot be null */
255 } else {
256 var11 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var7) /* == on <var6:nullable String>*/;
257 }
258 var2 = var11;
259 }
260 var_12 = var2;
261 if (var2){
262 var1 = var_12;
263 } else {
264 var13 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name_lowered]))(self) /* language_name_lowered on <self:AExternCodeBlock>*/;
265 if (varonce14) {
266 var15 = varonce14;
267 } else {
268 var16 = "c ";
269 var17 = 2;
270 var18 = string__NativeString__to_s_with_length(var16, var17);
271 var15 = var18;
272 varonce14 = var15;
273 }
274 if (var13 == NULL) {
275 fprintf(stderr, "Runtime error: %s", "Receiver is null");
276 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 62);
277 show_backtrace(1);
278 } else {
279 var19 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_string__AbstractString__has_prefix]))(var13, var15) /* has_prefix on <var13:nullable String>*/;
280 }
281 var1 = var19;
282 }
283 var = var1;
284 goto RET_LABEL;
285 RET_LABEL:;
286 return var;
287 }
288 /* method c#AExternCodeBlock#is_c for (self: Object): Bool */
289 short int VIRTUAL_c__AExternCodeBlock__is_c(val* self) {
290 short int var /* : Bool */;
291 short int var1 /* : Bool */;
292 var1 = c__AExternCodeBlock__is_c(self);
293 var = var1;
294 RET_LABEL:;
295 return var;
296 }
297 /* method c#AExternCodeBlock#is_c_body for (self: AExternCodeBlock): Bool */
298 short int c__AExternCodeBlock__is_c_body(val* self) {
299 short int var /* : Bool */;
300 short int var1 /* : Bool */;
301 short int var2 /* : Bool */;
302 val* var3 /* : nullable String */;
303 val* var4 /* : null */;
304 short int var5 /* : Bool */;
305 short int var_ /* var : Bool */;
306 val* var6 /* : nullable String */;
307 static val* varonce;
308 val* var7 /* : String */;
309 char* var8 /* : NativeString */;
310 long var9 /* : Int */;
311 val* var10 /* : String */;
312 short int var11 /* : Bool */;
313 short int var_12 /* var : Bool */;
314 val* var13 /* : nullable String */;
315 static val* varonce14;
316 val* var15 /* : String */;
317 char* var16 /* : NativeString */;
318 long var17 /* : Int */;
319 val* var18 /* : String */;
320 short int var19 /* : Bool */;
321 var3 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name]))(self) /* language_name on <self:AExternCodeBlock>*/;
322 var4 = NULL;
323 if (var3 == NULL) {
324 var5 = 1; /* is null */
325 } else {
326 var5 = 0; /* arg is null but recv is not */
327 }
328 var_ = var5;
329 if (var5){
330 var2 = var_;
331 } else {
332 var6 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name_lowered]))(self) /* language_name_lowered on <self:AExternCodeBlock>*/;
333 if (varonce) {
334 var7 = varonce;
335 } else {
336 var8 = "c";
337 var9 = 1;
338 var10 = string__NativeString__to_s_with_length(var8, var9);
339 var7 = var10;
340 varonce = var7;
341 }
342 if (var6 == NULL) {
343 var11 = 0; /* <var7:String> cannot be null */
344 } else {
345 var11 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var7) /* == on <var6:nullable String>*/;
346 }
347 var2 = var11;
348 }
349 var_12 = var2;
350 if (var2){
351 var1 = var_12;
352 } else {
353 var13 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name_lowered]))(self) /* language_name_lowered on <self:AExternCodeBlock>*/;
354 if (varonce14) {
355 var15 = varonce14;
356 } else {
357 var16 = "c body";
358 var17 = 6;
359 var18 = string__NativeString__to_s_with_length(var16, var17);
360 var15 = var18;
361 varonce14 = var15;
362 }
363 if (var13 == NULL) {
364 var19 = 0; /* <var15:String> cannot be null */
365 } else {
366 var19 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var15) /* == on <var13:nullable String>*/;
367 }
368 var1 = var19;
369 }
370 var = var1;
371 goto RET_LABEL;
372 RET_LABEL:;
373 return var;
374 }
375 /* method c#AExternCodeBlock#is_c_body for (self: Object): Bool */
376 short int VIRTUAL_c__AExternCodeBlock__is_c_body(val* self) {
377 short int var /* : Bool */;
378 short int var1 /* : Bool */;
379 var1 = c__AExternCodeBlock__is_c_body(self);
380 var = var1;
381 RET_LABEL:;
382 return var;
383 }
384 /* method c#AExternCodeBlock#is_c_header for (self: AExternCodeBlock): Bool */
385 short int c__AExternCodeBlock__is_c_header(val* self) {
386 short int var /* : Bool */;
387 val* var1 /* : nullable String */;
388 static val* varonce;
389 val* var2 /* : String */;
390 char* var3 /* : NativeString */;
391 long var4 /* : Int */;
392 val* var5 /* : String */;
393 short int var6 /* : Bool */;
394 var1 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AExternCodeBlock__language_name_lowered]))(self) /* language_name_lowered on <self:AExternCodeBlock>*/;
395 if (varonce) {
396 var2 = varonce;
397 } else {
398 var3 = "c header";
399 var4 = 8;
400 var5 = string__NativeString__to_s_with_length(var3, var4);
401 var2 = var5;
402 varonce = var2;
403 }
404 if (var1 == NULL) {
405 var6 = 0; /* <var2:String> cannot be null */
406 } else {
407 var6 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var2) /* == on <var1:nullable String>*/;
408 }
409 var = var6;
410 goto RET_LABEL;
411 RET_LABEL:;
412 return var;
413 }
414 /* method c#AExternCodeBlock#is_c_header for (self: Object): Bool */
415 short int VIRTUAL_c__AExternCodeBlock__is_c_header(val* self) {
416 short int var /* : Bool */;
417 short int var1 /* : Bool */;
418 var1 = c__AExternCodeBlock__is_c_header(self);
419 var = var1;
420 RET_LABEL:;
421 return var;
422 }
423 /* method c#Location#as_line_pragma for (self: Location): String */
424 val* c__Location__as_line_pragma(val* self) {
425 val* var /* : String */;
426 val* var1 /* : Array[Object] */;
427 long var2 /* : Int */;
428 val* var_ /* var : Array[Object] */;
429 static val* varonce;
430 val* var3 /* : String */;
431 char* var4 /* : NativeString */;
432 long var5 /* : Int */;
433 val* var6 /* : String */;
434 long var7 /* : Int */;
435 val* var8 /* : nullable Object */;
436 static val* varonce9;
437 val* var10 /* : String */;
438 char* var11 /* : NativeString */;
439 long var12 /* : Int */;
440 val* var13 /* : String */;
441 val* var14 /* : nullable SourceFile */;
442 val* var15 /* : String */;
443 static val* varonce16;
444 val* var17 /* : String */;
445 char* var18 /* : NativeString */;
446 long var19 /* : Int */;
447 val* var20 /* : String */;
448 val* var21 /* : String */;
449 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
450 var2 = 5;
451 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
452 var_ = var1;
453 if (varonce) {
454 var3 = varonce;
455 } else {
456 var4 = "#line ";
457 var5 = 6;
458 var6 = string__NativeString__to_s_with_length(var4, var5);
459 var3 = var6;
460 varonce = var3;
461 }
462 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
463 var7 = ((long (*)(val*))(self->class->vft[COLOR_location__Location__line_start]))(self) /* line_start on <self:Location>*/;
464 var8 = BOX_kernel__Int(var7); /* autobox from Int to nullable Object */
465 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
466 if (varonce9) {
467 var10 = varonce9;
468 } else {
469 var11 = " \"";
470 var12 = 2;
471 var13 = string__NativeString__to_s_with_length(var11, var12);
472 var10 = var13;
473 varonce9 = var10;
474 }
475 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
476 var14 = ((val* (*)(val*))(self->class->vft[COLOR_location__Location__file]))(self) /* file on <self:Location>*/;
477 if (var14 == NULL) {
478 fprintf(stderr, "Runtime error: %s", "Receiver is null");
479 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 71);
480 show_backtrace(1);
481 } else {
482 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_location__SourceFile__filename]))(var14) /* filename on <var14:nullable SourceFile>*/;
483 }
484 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
485 if (varonce16) {
486 var17 = varonce16;
487 } else {
488 var18 = "\"\n";
489 var19 = 2;
490 var20 = string__NativeString__to_s_with_length(var18, var19);
491 var17 = var20;
492 varonce16 = var17;
493 }
494 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
495 var21 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
496 var = var21;
497 goto RET_LABEL;
498 RET_LABEL:;
499 return var;
500 }
501 /* method c#Location#as_line_pragma for (self: Object): String */
502 val* VIRTUAL_c__Location__as_line_pragma(val* self) {
503 val* var /* : String */;
504 val* var1 /* : String */;
505 var1 = c__Location__as_line_pragma(self);
506 var = var1;
507 RET_LABEL:;
508 return var;
509 }
510 /* method c#AModule#c_compiler_options for (self: AModule): String */
511 val* c__AModule__c_compiler_options(val* self) {
512 val* var /* : String */;
513 val* var1 /* : String */;
514 var1 = self->attrs[COLOR_c__AModule___64dc_compiler_options].val; /* @c_compiler_options on <self:AModule> */
515 if (var1 == NULL) {
516 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @c_compiler_options");
517 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 75);
518 show_backtrace(1);
519 }
520 var = var1;
521 RET_LABEL:;
522 return var;
523 }
524 /* method c#AModule#c_compiler_options for (self: Object): String */
525 val* VIRTUAL_c__AModule__c_compiler_options(val* self) {
526 val* var /* : String */;
527 val* var1 /* : String */;
528 var1 = c__AModule__c_compiler_options(self);
529 var = var1;
530 RET_LABEL:;
531 return var;
532 }
533 /* method c#AModule#c_compiler_options= for (self: AModule, String) */
534 void c__AModule__c_compiler_options_61d(val* self, val* p0) {
535 self->attrs[COLOR_c__AModule___64dc_compiler_options].val = p0; /* @c_compiler_options on <self:AModule> */
536 RET_LABEL:;
537 }
538 /* method c#AModule#c_compiler_options= for (self: Object, String) */
539 void VIRTUAL_c__AModule__c_compiler_options_61d(val* self, val* p0) {
540 c__AModule__c_compiler_options_61d(self, p0);
541 RET_LABEL:;
542 }
543 /* method c#AModule#c_linker_options for (self: AModule): String */
544 val* c__AModule__c_linker_options(val* self) {
545 val* var /* : String */;
546 val* var1 /* : String */;
547 var1 = self->attrs[COLOR_c__AModule___64dc_linker_options].val; /* @c_linker_options on <self:AModule> */
548 if (var1 == NULL) {
549 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @c_linker_options");
550 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 76);
551 show_backtrace(1);
552 }
553 var = var1;
554 RET_LABEL:;
555 return var;
556 }
557 /* method c#AModule#c_linker_options for (self: Object): String */
558 val* VIRTUAL_c__AModule__c_linker_options(val* self) {
559 val* var /* : String */;
560 val* var1 /* : String */;
561 var1 = c__AModule__c_linker_options(self);
562 var = var1;
563 RET_LABEL:;
564 return var;
565 }
566 /* method c#AModule#c_linker_options= for (self: AModule, String) */
567 void c__AModule__c_linker_options_61d(val* self, val* p0) {
568 self->attrs[COLOR_c__AModule___64dc_linker_options].val = p0; /* @c_linker_options on <self:AModule> */
569 RET_LABEL:;
570 }
571 /* method c#AModule#c_linker_options= for (self: Object, String) */
572 void VIRTUAL_c__AModule__c_linker_options_61d(val* self, val* p0) {
573 c__AModule__c_linker_options_61d(self, p0);
574 RET_LABEL:;
575 }
576 /* method c#ExternCFile#init for (self: ExternCFile, String, String) */
577 void c__ExternCFile__init(val* self, val* p0, val* p1) {
578 val* var_filename /* var filename: String */;
579 val* var_cflags /* var cflags: String */;
580 var_filename = p0;
581 var_cflags = p1;
582 ((void (*)(val*, val*))(self->class->vft[COLOR_ffi_base__ExternFile__init]))(self, var_filename) /* init on <self:ExternCFile>*/;
583 ((void (*)(val*, val*))(self->class->vft[COLOR_c__ExternCFile__cflags_61d]))(self, var_cflags) /* cflags= on <self:ExternCFile>*/;
584 RET_LABEL:;
585 }
586 /* method c#ExternCFile#init for (self: Object, String, String) */
587 void VIRTUAL_c__ExternCFile__init(val* self, val* p0, val* p1) {
588 c__ExternCFile__init(self, p0, p1);
589 RET_LABEL:;
590 }
591 /* method c#ExternCFile#cflags for (self: ExternCFile): String */
592 val* c__ExternCFile__cflags(val* self) {
593 val* var /* : String */;
594 val* var1 /* : String */;
595 var1 = self->attrs[COLOR_c__ExternCFile___64dcflags].val; /* @cflags on <self:ExternCFile> */
596 if (var1 == NULL) {
597 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cflags");
598 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 90);
599 show_backtrace(1);
600 }
601 var = var1;
602 RET_LABEL:;
603 return var;
604 }
605 /* method c#ExternCFile#cflags for (self: Object): String */
606 val* VIRTUAL_c__ExternCFile__cflags(val* self) {
607 val* var /* : String */;
608 val* var1 /* : String */;
609 var1 = c__ExternCFile__cflags(self);
610 var = var1;
611 RET_LABEL:;
612 return var;
613 }
614 /* method c#ExternCFile#cflags= for (self: ExternCFile, String) */
615 void c__ExternCFile__cflags_61d(val* self, val* p0) {
616 self->attrs[COLOR_c__ExternCFile___64dcflags].val = p0; /* @cflags on <self:ExternCFile> */
617 RET_LABEL:;
618 }
619 /* method c#ExternCFile#cflags= for (self: Object, String) */
620 void VIRTUAL_c__ExternCFile__cflags_61d(val* self, val* p0) {
621 c__ExternCFile__cflags_61d(self, p0);
622 RET_LABEL:;
623 }
624 /* method c#ExternCFile#hash for (self: ExternCFile): Int */
625 long c__ExternCFile__hash(val* self) {
626 long var /* : Int */;
627 val* var1 /* : String */;
628 long var2 /* : Int */;
629 var1 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__ExternFile__filename]))(self) /* filename on <self:ExternCFile>*/;
630 var2 = ((long (*)(val*))(var1->class->vft[COLOR_kernel__Object__hash]))(var1) /* hash on <var1:String>*/;
631 var = var2;
632 goto RET_LABEL;
633 RET_LABEL:;
634 return var;
635 }
636 /* method c#ExternCFile#hash for (self: Object): Int */
637 long VIRTUAL_c__ExternCFile__hash(val* self) {
638 long var /* : Int */;
639 long var1 /* : Int */;
640 var1 = c__ExternCFile__hash(self);
641 var = var1;
642 RET_LABEL:;
643 return var;
644 }
645 /* method c#ExternCFile#== for (self: ExternCFile, nullable Object): Bool */
646 short int c__ExternCFile___61d_61d(val* self, val* p0) {
647 short int var /* : Bool */;
648 val* var_o /* var o: nullable Object */;
649 short int var1 /* : Bool */;
650 short int var2 /* : Bool */;
651 int cltype;
652 int idtype;
653 short int var_ /* var : Bool */;
654 val* var3 /* : String */;
655 val* var4 /* : String */;
656 short int var5 /* : Bool */;
657 var_o = p0;
658 /* <var_o:nullable Object> isa ExternCFile */
659 cltype = type_c__ExternCFile.color;
660 idtype = type_c__ExternCFile.id;
661 if(var_o == NULL) {
662 var2 = 0;
663 } else {
664 if(cltype >= var_o->type->table_size) {
665 var2 = 0;
666 } else {
667 var2 = var_o->type->type_table[cltype] == idtype;
668 }
669 }
670 var_ = var2;
671 if (var2){
672 var3 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__ExternFile__filename]))(self) /* filename on <self:ExternCFile>*/;
673 var4 = ((val* (*)(val*))(var_o->class->vft[COLOR_ffi_base__ExternFile__filename]))(var_o) /* filename on <var_o:nullable Object(ExternCFile)>*/;
674 var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var4) /* == on <var3:String>*/;
675 var1 = var5;
676 } else {
677 var1 = var_;
678 }
679 var = var1;
680 goto RET_LABEL;
681 RET_LABEL:;
682 return var;
683 }
684 /* method c#ExternCFile#== for (self: Object, nullable Object): Bool */
685 short int VIRTUAL_c__ExternCFile___61d_61d(val* self, val* p0) {
686 short int var /* : Bool */;
687 short int var1 /* : Bool */;
688 var1 = c__ExternCFile___61d_61d(self, p0);
689 var = var1;
690 RET_LABEL:;
691 return var;
692 }
693 /* method c#ForeignCType#ctype for (self: ForeignCType): String */
694 val* c__ForeignCType__ctype(val* self) {
695 val* var /* : String */;
696 val* var1 /* : String */;
697 var1 = self->attrs[COLOR_c__ForeignCType___64dctype].val; /* @ctype on <self:ForeignCType> */
698 if (var1 == NULL) {
699 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @ctype");
700 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 100);
701 show_backtrace(1);
702 }
703 var = var1;
704 RET_LABEL:;
705 return var;
706 }
707 /* method c#ForeignCType#ctype for (self: Object): String */
708 val* VIRTUAL_c__ForeignCType__ctype(val* self) {
709 val* var /* : String */;
710 val* var1 /* : String */;
711 var1 = c__ForeignCType__ctype(self);
712 var = var1;
713 RET_LABEL:;
714 return var;
715 }
716 /* method c#ForeignCType#ctype= for (self: ForeignCType, String) */
717 void c__ForeignCType__ctype_61d(val* self, val* p0) {
718 self->attrs[COLOR_c__ForeignCType___64dctype].val = p0; /* @ctype on <self:ForeignCType> */
719 RET_LABEL:;
720 }
721 /* method c#ForeignCType#ctype= for (self: Object, String) */
722 void VIRTUAL_c__ForeignCType__ctype_61d(val* self, val* p0) {
723 c__ForeignCType__ctype_61d(self, p0);
724 RET_LABEL:;
725 }
726 /* method c#ForeignCType#init for (self: ForeignCType, String) */
727 void c__ForeignCType__init(val* self, val* p0) {
728 val* var_ctype /* var ctype: String */;
729 var_ctype = p0;
730 ((void (*)(val*))(self->class->vft[COLOR_ffi_base__ForeignType__init]))(self) /* init on <self:ForeignCType>*/;
731 ((void (*)(val*, val*))(self->class->vft[COLOR_c__ForeignCType__ctype_61d]))(self, var_ctype) /* ctype= on <self:ForeignCType>*/;
732 RET_LABEL:;
733 }
734 /* method c#ForeignCType#init for (self: Object, String) */
735 void VIRTUAL_c__ForeignCType__init(val* self, val* p0) {
736 c__ForeignCType__init(self, p0);
737 RET_LABEL:;
738 }
739 /* method c#NitniCallback#compile_callback_to_c for (self: NitniCallback, MModule, CCompilationUnit) */
740 void c__NitniCallback__compile_callback_to_c(val* self, val* p0, val* p1) {
741 val* var_nmodule /* var nmodule: MModule */;
742 val* var_ffi_ccu /* var ffi_ccu: CCompilationUnit */;
743 var_nmodule = p0;
744 var_ffi_ccu = p1;
745 RET_LABEL:;
746 }
747 /* method c#NitniCallback#compile_callback_to_c for (self: Object, MModule, CCompilationUnit) */
748 void VIRTUAL_c__NitniCallback__compile_callback_to_c(val* self, val* p0, val* p1) {
749 c__NitniCallback__compile_callback_to_c(self, p0, p1);
750 RET_LABEL:;
751 }
752 /* method c#Object#to_c_call_context for (self: Object): ToCCallContext */
753 val* c__Object__to_c_call_context(val* self) {
754 val* var /* : ToCCallContext */;
755 static val* varonce;
756 static int varonce_guard;
757 val* var1 /* : ToCCallContext */;
758 val* var2 /* : ToCCallContext */;
759 if (varonce_guard) {
760 var1 = varonce;
761 } else {
762 var2 = NEW_c__ToCCallContext(&type_c__ToCCallContext);
763 ((void (*)(val*))(var2->class->vft[COLOR_c__ToCCallContext__init]))(var2) /* init on <var2:ToCCallContext>*/;
764 var1 = var2;
765 varonce = var1;
766 varonce_guard = 1;
767 }
768 var = var1;
769 goto RET_LABEL;
770 RET_LABEL:;
771 return var;
772 }
773 /* method c#Object#to_c_call_context for (self: Object): ToCCallContext */
774 val* VIRTUAL_c__Object__to_c_call_context(val* self) {
775 val* var /* : ToCCallContext */;
776 val* var1 /* : ToCCallContext */;
777 var1 = c__Object__to_c_call_context(self);
778 var = var1;
779 RET_LABEL:;
780 return var;
781 }
782 /* method c#Object#from_c_call_context for (self: Object): FromCCallContext */
783 val* c__Object__from_c_call_context(val* self) {
784 val* var /* : FromCCallContext */;
785 static val* varonce;
786 static int varonce_guard;
787 val* var1 /* : FromCCallContext */;
788 val* var2 /* : FromCCallContext */;
789 if (varonce_guard) {
790 var1 = varonce;
791 } else {
792 var2 = NEW_c__FromCCallContext(&type_c__FromCCallContext);
793 ((void (*)(val*))(var2->class->vft[COLOR_c__FromCCallContext__init]))(var2) /* init on <var2:FromCCallContext>*/;
794 var1 = var2;
795 varonce = var1;
796 varonce_guard = 1;
797 }
798 var = var1;
799 goto RET_LABEL;
800 RET_LABEL:;
801 return var;
802 }
803 /* method c#Object#from_c_call_context for (self: Object): FromCCallContext */
804 val* VIRTUAL_c__Object__from_c_call_context(val* self) {
805 val* var /* : FromCCallContext */;
806 val* var1 /* : FromCCallContext */;
807 var1 = c__Object__from_c_call_context(self);
808 var = var1;
809 RET_LABEL:;
810 return var;
811 }
812 /* method c#MExplicitCall#compile_callback_to_c for (self: MExplicitCall, MModule, CCompilationUnit) */
813 void c__MExplicitCall__compile_callback_to_c(val* self, val* p0, val* p1) {
814 val* var_mmodule /* var mmodule: MModule */;
815 val* var_ffi_ccu /* var ffi_ccu: CCompilationUnit */;
816 val* var /* : MProperty */;
817 short int var1 /* : Bool */;
818 int cltype;
819 int idtype;
820 const char* var_class_name;
821 val* var_mproperty /* var mproperty: MMethod */;
822 val* var2 /* : MClassType */;
823 val* var3 /* : null */;
824 val* var4 /* : SignatureLength */;
825 val* var5 /* : String */;
826 val* var_full_cname /* var full_cname: String */;
827 val* var6 /* : MClassType */;
828 val* var7 /* : null */;
829 val* var8 /* : SignatureLength */;
830 val* var9 /* : String */;
831 val* var_friendly_cname /* var friendly_cname: String */;
832 val* var10 /* : Template */;
833 static val* varonce;
834 val* var11 /* : String */;
835 char* var12 /* : NativeString */;
836 long var13 /* : Int */;
837 val* var14 /* : String */;
838 static val* varonce15;
839 val* var16 /* : String */;
840 char* var17 /* : NativeString */;
841 long var18 /* : Int */;
842 val* var19 /* : String */;
843 static val* varonce20;
844 val* var21 /* : String */;
845 char* var22 /* : NativeString */;
846 long var23 /* : Int */;
847 val* var24 /* : String */;
848 val* var25 /* : Array[Object] */;
849 long var26 /* : Int */;
850 val* var27 /* : NativeArray[Object] */;
851 val* var28 /* : String */;
852 var_mmodule = p0;
853 var_ffi_ccu = p1;
854 var = ((val* (*)(val*))(self->class->vft[COLOR_nitni_callbacks__MExplicitCall__mproperty]))(self) /* mproperty on <self:MExplicitCall>*/;
855 /* <var:MProperty> isa MMethod */
856 cltype = type_model__MMethod.color;
857 idtype = type_model__MMethod.id;
858 if(cltype >= var->type->table_size) {
859 var1 = 0;
860 } else {
861 var1 = var->type->type_table[cltype] == idtype;
862 }
863 if (!var1) {
864 var_class_name = var == NULL ? "null" : var->type->name;
865 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethod", var_class_name);
866 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 123);
867 show_backtrace(1);
868 }
869 var_mproperty = var;
870 var2 = ((val* (*)(val*))(self->class->vft[COLOR_nitni_callbacks__MExplicitCall__recv_mtype]))(self) /* recv_mtype on <self:MExplicitCall>*/;
871 var3 = NULL;
872 var4 = ((val* (*)(val*))(self->class->vft[COLOR_nitni_utilities__Object__long_signature]))(self) /* long_signature on <self:MExplicitCall>*/;
873 var5 = ((val* (*)(val*, val*, val*, val*, val*))(var_mproperty->class->vft[COLOR_nitni_utilities__MMethod__build_cname]))(var_mproperty, var2, var_mmodule, var3, var4) /* build_cname on <var_mproperty:MMethod>*/;
874 var_full_cname = var5;
875 var6 = ((val* (*)(val*))(self->class->vft[COLOR_nitni_callbacks__MExplicitCall__recv_mtype]))(self) /* recv_mtype on <self:MExplicitCall>*/;
876 var7 = NULL;
877 var8 = ((val* (*)(val*))(self->class->vft[COLOR_nitni_utilities__Object__short_signature]))(self) /* short_signature on <self:MExplicitCall>*/;
878 var9 = ((val* (*)(val*, val*, val*, val*, val*))(var_mproperty->class->vft[COLOR_nitni_utilities__MMethod__build_cname]))(var_mproperty, var6, var_mmodule, var7, var8) /* build_cname on <var_mproperty:MMethod>*/;
879 var_friendly_cname = var9;
880 var10 = ((val* (*)(val*))(var_ffi_ccu->class->vft[COLOR_c_tools__CCompilationUnit__body_decl]))(var_ffi_ccu) /* body_decl on <var_ffi_ccu:CCompilationUnit>*/;
881 if (varonce) {
882 var11 = varonce;
883 } else {
884 var12 = "#define ";
885 var13 = 8;
886 var14 = string__NativeString__to_s_with_length(var12, var13);
887 var11 = var14;
888 varonce = var11;
889 }
890 if (varonce15) {
891 var16 = varonce15;
892 } else {
893 var17 = " ";
894 var18 = 1;
895 var19 = string__NativeString__to_s_with_length(var17, var18);
896 var16 = var19;
897 varonce15 = var16;
898 }
899 if (varonce20) {
900 var21 = varonce20;
901 } else {
902 var22 = "\n";
903 var23 = 1;
904 var24 = string__NativeString__to_s_with_length(var22, var23);
905 var21 = var24;
906 varonce20 = var21;
907 }
908 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
909 { /* var25 = array_instance Array[Object] */
910 var26 = 5;
911 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
912 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var11;
913 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var_friendly_cname;
914 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var16;
915 ((struct instance_array__NativeArray*)var27)->values[3] = (val*) var_full_cname;
916 ((struct instance_array__NativeArray*)var27)->values[4] = (val*) var21;
917 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
918 }
919 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
920 ((void (*)(val*, val*))(var10->class->vft[COLOR_template__Template__add]))(var10, var28) /* add on <var10:Template>*/;
921 RET_LABEL:;
922 }
923 /* method c#MExplicitCall#compile_callback_to_c for (self: Object, MModule, CCompilationUnit) */
924 void VIRTUAL_c__MExplicitCall__compile_callback_to_c(val* self, val* p0, val* p1) {
925 c__MExplicitCall__compile_callback_to_c(self, p0, p1);
926 RET_LABEL:;
927 }
928 /* method c#ToCCallContext#init for (self: ToCCallContext) */
929 void c__ToCCallContext__init(val* self) {
930 ((void (*)(val*))(self->class->vft[COLOR_nitni_utilities__CallContext__init]))(self) /* init on <self:ToCCallContext>*/;
931 RET_LABEL:;
932 }
933 /* method c#ToCCallContext#init for (self: Object) */
934 void VIRTUAL_c__ToCCallContext__init(val* self) {
935 c__ToCCallContext__init(self);
936 RET_LABEL:;
937 }
938 /* method c#ToCCallContext#name_mtype for (self: ToCCallContext, MType): String */
939 val* c__ToCCallContext__name_mtype(val* self, val* p0) {
940 val* var /* : String */;
941 val* var_mtype /* var mtype: MType */;
942 short int var1 /* : Bool */;
943 short int var2 /* : Bool */;
944 int cltype;
945 int idtype;
946 short int var_ /* var : Bool */;
947 val* var3 /* : MClass */;
948 val* var4 /* : MClassKind */;
949 val* var5 /* : MClassKind */;
950 short int var6 /* : Bool */;
951 static val* varonce;
952 val* var7 /* : String */;
953 char* var8 /* : NativeString */;
954 long var9 /* : Int */;
955 val* var10 /* : String */;
956 val* var11 /* : String */;
957 var_mtype = p0;
958 /* <var_mtype:MType> isa MClassType */
959 cltype = type_model__MClassType.color;
960 idtype = type_model__MClassType.id;
961 if(cltype >= var_mtype->type->table_size) {
962 var2 = 0;
963 } else {
964 var2 = var_mtype->type->type_table[cltype] == idtype;
965 }
966 var_ = var2;
967 if (var2){
968 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MType(MClassType)>*/;
969 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClass__kind]))(var3) /* kind on <var3:MClass>*/;
970 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:ToCCallContext>*/;
971 var6 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___61d_61d]))(var4, var5) /* == on <var4:MClassKind>*/;
972 var1 = var6;
973 } else {
974 var1 = var_;
975 }
976 if (var1){
977 if (varonce) {
978 var7 = varonce;
979 } else {
980 var8 = "void *";
981 var9 = 6;
982 var10 = string__NativeString__to_s_with_length(var8, var9);
983 var7 = var10;
984 varonce = var7;
985 }
986 var = var7;
987 goto RET_LABEL;
988 } else {
989 }
990 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_nitni_base__MType__cname]))(var_mtype) /* cname on <var_mtype:MType>*/;
991 var = var11;
992 goto RET_LABEL;
993 RET_LABEL:;
994 return var;
995 }
996 /* method c#ToCCallContext#name_mtype for (self: Object, MType): String */
997 val* VIRTUAL_c__ToCCallContext__name_mtype(val* self, val* p0) {
998 val* var /* : String */;
999 val* var1 /* : String */;
1000 var1 = c__ToCCallContext__name_mtype(self, p0);
1001 var = var1;
1002 RET_LABEL:;
1003 return var;
1004 }
1005 /* method c#FromCCallContext#init for (self: FromCCallContext) */
1006 void c__FromCCallContext__init(val* self) {
1007 ((void (*)(val*))(self->class->vft[COLOR_nitni_utilities__CallContext__init]))(self) /* init on <self:FromCCallContext>*/;
1008 RET_LABEL:;
1009 }
1010 /* method c#FromCCallContext#init for (self: Object) */
1011 void VIRTUAL_c__FromCCallContext__init(val* self) {
1012 c__FromCCallContext__init(self);
1013 RET_LABEL:;
1014 }
1015 /* method c#FromCCallContext#name_mtype for (self: FromCCallContext, MType): String */
1016 val* c__FromCCallContext__name_mtype(val* self, val* p0) {
1017 val* var /* : String */;
1018 val* var_mtype /* var mtype: MType */;
1019 val* var1 /* : String */;
1020 var_mtype = p0;
1021 var1 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_nitni_base__MType__cname]))(var_mtype) /* cname on <var_mtype:MType>*/;
1022 var = var1;
1023 goto RET_LABEL;
1024 RET_LABEL:;
1025 return var;
1026 }
1027 /* method c#FromCCallContext#name_mtype for (self: Object, MType): String */
1028 val* VIRTUAL_c__FromCCallContext__name_mtype(val* self, val* p0) {
1029 val* var /* : String */;
1030 val* var1 /* : String */;
1031 var1 = c__FromCCallContext__name_mtype(self, p0);
1032 var = var1;
1033 RET_LABEL:;
1034 return var;
1035 }
1036 /* method c#ExternCFunction#method for (self: ExternCFunction): AExternPropdef */
1037 val* c__ExternCFunction__method(val* self) {
1038 val* var /* : AExternPropdef */;
1039 val* var1 /* : AExternPropdef */;
1040 var1 = self->attrs[COLOR_c__ExternCFunction___64dmethod].val; /* @method on <self:ExternCFunction> */
1041 if (var1 == NULL) {
1042 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @method");
1043 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 156);
1044 show_backtrace(1);
1045 }
1046 var = var1;
1047 RET_LABEL:;
1048 return var;
1049 }
1050 /* method c#ExternCFunction#method for (self: Object): AExternPropdef */
1051 val* VIRTUAL_c__ExternCFunction__method(val* self) {
1052 val* var /* : AExternPropdef */;
1053 val* var1 /* : AExternPropdef */;
1054 var1 = c__ExternCFunction__method(self);
1055 var = var1;
1056 RET_LABEL:;
1057 return var;
1058 }
1059 /* method c#ExternCFunction#method= for (self: ExternCFunction, AExternPropdef) */
1060 void c__ExternCFunction__method_61d(val* self, val* p0) {
1061 self->attrs[COLOR_c__ExternCFunction___64dmethod].val = p0; /* @method on <self:ExternCFunction> */
1062 RET_LABEL:;
1063 }
1064 /* method c#ExternCFunction#method= for (self: Object, AExternPropdef) */
1065 void VIRTUAL_c__ExternCFunction__method_61d(val* self, val* p0) {
1066 c__ExternCFunction__method_61d(self, p0);
1067 RET_LABEL:;
1068 }
1069 /* method c#ExternCFunction#init for (self: ExternCFunction, AExternPropdef, MModule) */
1070 void c__ExternCFunction__init(val* self, val* p0, val* p1) {
1071 val* var_method /* var method: AExternPropdef */;
1072 val* var_mmodule /* var mmodule: MModule */;
1073 val* var /* : nullable MPropDef */;
1074 val* var1 /* : MClassDef */;
1075 val* var2 /* : MClassType */;
1076 val* var_recv_mtype /* var recv_mtype: MClassType */;
1077 val* var3 /* : nullable MPropDef */;
1078 val* var4 /* : MProperty */;
1079 static val* varonce;
1080 val* var5 /* : String */;
1081 char* var6 /* : NativeString */;
1082 long var7 /* : Int */;
1083 val* var8 /* : String */;
1084 val* var9 /* : SignatureLength */;
1085 val* var10 /* : FromCCallContext */;
1086 val* var11 /* : String */;
1087 val* var_csignature /* var csignature: String */;
1088 var_method = p0;
1089 var_mmodule = p1;
1090 ((void (*)(val*, val*))(self->class->vft[COLOR_c__ExternCFunction__method_61d]))(self, var_method) /* method= on <self:ExternCFunction>*/;
1091 var = ((val* (*)(val*))(var_method->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_method) /* mpropdef on <var_method:AExternPropdef>*/;
1092 if (var == NULL) {
1093 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1094 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 162);
1095 show_backtrace(1);
1096 } else {
1097 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MPropDef__mclassdef]))(var) /* mclassdef on <var:nullable MPropDef(nullable MMethodDef)>*/;
1098 }
1099 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:MClassDef>*/;
1100 var_recv_mtype = var2;
1101 var3 = ((val* (*)(val*))(var_method->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_method) /* mpropdef on <var_method:AExternPropdef>*/;
1102 if (var3 == NULL) {
1103 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1104 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c.nit", 163);
1105 show_backtrace(1);
1106 } else {
1107 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:nullable MPropDef(nullable MMethodDef)>*/;
1108 }
1109 if (varonce) {
1110 var5 = varonce;
1111 } else {
1112 var6 = "___impl";
1113 var7 = 7;
1114 var8 = string__NativeString__to_s_with_length(var6, var7);
1115 var5 = var8;
1116 varonce = var5;
1117 }
1118 var9 = ((val* (*)(val*))(self->class->vft[COLOR_nitni_utilities__Object__long_signature]))(self) /* long_signature on <self:ExternCFunction>*/;
1119 var10 = ((val* (*)(val*))(self->class->vft[COLOR_c__Object__from_c_call_context]))(self) /* from_c_call_context on <self:ExternCFunction>*/;
1120 var11 = ((val* (*)(val*, val*, val*, val*, val*, val*))(var4->class->vft[COLOR_nitni_utilities__MMethod__build_csignature]))(var4, var_recv_mtype, var_mmodule, var5, var9, var10) /* build_csignature on <var4:MProperty(MMethod)>*/;
1121 var_csignature = var11;
1122 ((void (*)(val*, val*))(self->class->vft[COLOR_c_tools__CFunction__init]))(self, var_csignature) /* init on <self:ExternCFunction>*/;
1123 RET_LABEL:;
1124 }
1125 /* method c#ExternCFunction#init for (self: Object, AExternPropdef, MModule) */
1126 void VIRTUAL_c__ExternCFunction__init(val* self, val* p0, val* p1) {
1127 c__ExternCFunction__init(self, p0, p1);
1128 RET_LABEL:;
1129 }