Added index and favicon.
[nit.git] / c_src / common_ffi.sep.1.c
1 #include "common_ffi.sep.0.h"
2 /* method common_ffi#MModule#uses_ffi for (self: MModule): Bool */
3 short int common_ffi__MModule__uses_ffi(val* self) {
4 short int var /* : Bool */;
5 short int var1 /* : Bool */;
6 var1 = self->attrs[COLOR_common_ffi__MModule___64duses_ffi].s; /* @uses_ffi on <self:MModule> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method common_ffi#MModule#uses_ffi for (self: Object): Bool */
12 short int VIRTUAL_common_ffi__MModule__uses_ffi(val* self) {
13 short int var /* : Bool */;
14 short int var1 /* : Bool */;
15 var1 = common_ffi__MModule__uses_ffi(self);
16 var = var1;
17 RET_LABEL:;
18 return var;
19 }
20 /* method common_ffi#MModule#uses_ffi= for (self: MModule, Bool) */
21 void common_ffi__MModule__uses_ffi_61d(val* self, short int p0) {
22 self->attrs[COLOR_common_ffi__MModule___64duses_ffi].s = p0; /* @uses_ffi on <self:MModule> */
23 RET_LABEL:;
24 }
25 /* method common_ffi#MModule#uses_ffi= for (self: Object, Bool) */
26 void VIRTUAL_common_ffi__MModule__uses_ffi_61d(val* self, short int p0) {
27 common_ffi__MModule__uses_ffi_61d(self, p0);
28 RET_LABEL:;
29 }
30 /* method common_ffi#AModule#ffi_ccu for (self: AModule): nullable CCompilationUnit */
31 val* common_ffi__AModule__ffi_ccu(val* self) {
32 val* var /* : nullable CCompilationUnit */;
33 val* var1 /* : nullable CCompilationUnit */;
34 var1 = self->attrs[COLOR_common_ffi__AModule___64dffi_ccu].val; /* @ffi_ccu on <self:AModule> */
35 var = var1;
36 RET_LABEL:;
37 return var;
38 }
39 /* method common_ffi#AModule#ffi_ccu for (self: Object): nullable CCompilationUnit */
40 val* VIRTUAL_common_ffi__AModule__ffi_ccu(val* self) {
41 val* var /* : nullable CCompilationUnit */;
42 val* var1 /* : nullable CCompilationUnit */;
43 var1 = common_ffi__AModule__ffi_ccu(self);
44 var = var1;
45 RET_LABEL:;
46 return var;
47 }
48 /* method common_ffi#AModule#ffi_ccu= for (self: AModule, nullable CCompilationUnit) */
49 void common_ffi__AModule__ffi_ccu_61d(val* self, val* p0) {
50 self->attrs[COLOR_common_ffi__AModule___64dffi_ccu].val = p0; /* @ffi_ccu on <self:AModule> */
51 RET_LABEL:;
52 }
53 /* method common_ffi#AModule#ffi_ccu= for (self: Object, nullable CCompilationUnit) */
54 void VIRTUAL_common_ffi__AModule__ffi_ccu_61d(val* self, val* p0) {
55 common_ffi__AModule__ffi_ccu_61d(self, p0);
56 RET_LABEL:;
57 }
58 /* method common_ffi#AModule#present_languages for (self: AModule): HashSet[FFILanguage] */
59 val* common_ffi__AModule__present_languages(val* self) {
60 val* var /* : HashSet[FFILanguage] */;
61 val* var1 /* : HashSet[FFILanguage] */;
62 var1 = self->attrs[COLOR_common_ffi__AModule___64dpresent_languages].val; /* @present_languages on <self:AModule> */
63 if (var1 == NULL) {
64 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @present_languages");
65 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 44);
66 show_backtrace(1);
67 }
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method common_ffi#AModule#present_languages for (self: Object): HashSet[FFILanguage] */
73 val* VIRTUAL_common_ffi__AModule__present_languages(val* self) {
74 val* var /* : HashSet[FFILanguage] */;
75 val* var1 /* : HashSet[FFILanguage] */;
76 var1 = common_ffi__AModule__present_languages(self);
77 var = var1;
78 RET_LABEL:;
79 return var;
80 }
81 /* method common_ffi#AModule#present_languages= for (self: AModule, HashSet[FFILanguage]) */
82 void common_ffi__AModule__present_languages_61d(val* self, val* p0) {
83 self->attrs[COLOR_common_ffi__AModule___64dpresent_languages].val = p0; /* @present_languages on <self:AModule> */
84 RET_LABEL:;
85 }
86 /* method common_ffi#AModule#present_languages= for (self: Object, HashSet[FFILanguage]) */
87 void VIRTUAL_common_ffi__AModule__present_languages_61d(val* self, val* p0) {
88 common_ffi__AModule__present_languages_61d(self, p0);
89 RET_LABEL:;
90 }
91 /* method common_ffi#AModule#ffi_callbacks for (self: AModule): HashMap[FFILanguage, Set[NitniCallback]] */
92 val* common_ffi__AModule__ffi_callbacks(val* self) {
93 val* var /* : HashMap[FFILanguage, Set[NitniCallback]] */;
94 val* var1 /* : HashMap[FFILanguage, Set[NitniCallback]] */;
95 var1 = self->attrs[COLOR_common_ffi__AModule___64dffi_callbacks].val; /* @ffi_callbacks on <self:AModule> */
96 if (var1 == NULL) {
97 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @ffi_callbacks");
98 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 47);
99 show_backtrace(1);
100 }
101 var = var1;
102 RET_LABEL:;
103 return var;
104 }
105 /* method common_ffi#AModule#ffi_callbacks for (self: Object): HashMap[FFILanguage, Set[NitniCallback]] */
106 val* VIRTUAL_common_ffi__AModule__ffi_callbacks(val* self) {
107 val* var /* : HashMap[FFILanguage, Set[NitniCallback]] */;
108 val* var1 /* : HashMap[FFILanguage, Set[NitniCallback]] */;
109 var1 = common_ffi__AModule__ffi_callbacks(self);
110 var = var1;
111 RET_LABEL:;
112 return var;
113 }
114 /* method common_ffi#AModule#ffi_callbacks= for (self: AModule, HashMap[FFILanguage, Set[NitniCallback]]) */
115 void common_ffi__AModule__ffi_callbacks_61d(val* self, val* p0) {
116 self->attrs[COLOR_common_ffi__AModule___64dffi_callbacks].val = p0; /* @ffi_callbacks on <self:AModule> */
117 RET_LABEL:;
118 }
119 /* method common_ffi#AModule#ffi_callbacks= for (self: Object, HashMap[FFILanguage, Set[NitniCallback]]) */
120 void VIRTUAL_common_ffi__AModule__ffi_callbacks_61d(val* self, val* p0) {
121 common_ffi__AModule__ffi_callbacks_61d(self, p0);
122 RET_LABEL:;
123 }
124 /* method common_ffi#AModule#ensure_compile_ffi_wrapper for (self: AModule) */
125 void common_ffi__AModule__ensure_compile_ffi_wrapper(val* self) {
126 val* var /* : nullable CCompilationUnit */;
127 val* var1 /* : null */;
128 short int var2 /* : Bool */;
129 val* var3 /* : CCompilationUnit */;
130 val* var_ffi_ccu /* var ffi_ccu: CCompilationUnit */;
131 val* var4 /* : ANodes[AExternCodeBlock] */;
132 val* var5 /* : Iterator[nullable Object] */;
133 short int var6 /* : Bool */;
134 val* var7 /* : nullable Object */;
135 val* var_block /* var block: AExternCodeBlock */;
136 val* var8 /* : nullable FFILanguage */;
137 val* var_language /* var language: nullable FFILanguage */;
138 val* var9 /* : null */;
139 short int var10 /* : Bool */;
140 val* var11 /* : HashSet[FFILanguage] */;
141 val* var12 /* : Template */;
142 static val* varonce;
143 val* var13 /* : String */;
144 char* var14 /* : NativeString */;
145 long var15 /* : Int */;
146 val* var16 /* : String */;
147 val* var17 /* : nullable MModule */;
148 val* var18 /* : String */;
149 static val* varonce19;
150 val* var20 /* : String */;
151 char* var21 /* : NativeString */;
152 long var22 /* : Int */;
153 val* var23 /* : String */;
154 val* var24 /* : Array[Object] */;
155 long var25 /* : Int */;
156 val* var26 /* : NativeArray[Object] */;
157 val* var27 /* : String */;
158 val* var28 /* : ANodes[AClassdef] */;
159 val* var29 /* : Iterator[nullable Object] */;
160 short int var30 /* : Bool */;
161 val* var31 /* : nullable Object */;
162 val* var_nclassdef /* var nclassdef: AClassdef */;
163 short int var32 /* : Bool */;
164 short int var33 /* : Bool */;
165 int cltype;
166 int idtype;
167 short int var_ /* var : Bool */;
168 val* var34 /* : nullable AExternCodeBlock */;
169 val* var35 /* : null */;
170 short int var36 /* : Bool */;
171 val* var37 /* : nullable MModule */;
172 short int var38 /* : Bool */;
173 val* var39 /* : nullable AExternCodeBlock */;
174 val* var40 /* : nullable FFILanguage */;
175 val* var_language41 /* var language: nullable FFILanguage */;
176 val* var42 /* : null */;
177 short int var43 /* : Bool */;
178 val* var44 /* : HashSet[FFILanguage] */;
179 val* var45 /* : nullable AExternCodeBlock */;
180 val* var46 /* : nullable FFILanguage */;
181 val* var47 /* : nullable AExternCodeBlock */;
182 var = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(self) /* ffi_ccu on <self:AModule>*/;
183 var1 = NULL;
184 if (var == NULL) {
185 var2 = 0; /* is null */
186 } else {
187 var2 = 1; /* arg is null and recv is not */
188 }
189 if (var2){
190 goto RET_LABEL;
191 } else {
192 }
193 var3 = NEW_c_tools__CCompilationUnit(&type_c_tools__CCompilationUnit);
194 ((void (*)(val*))(var3->class->vft[COLOR_c_tools__CCompilationUnit__init]))(var3) /* init on <var3:CCompilationUnit>*/;
195 var_ffi_ccu = var3;
196 ((void (*)(val*, val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu_61d]))(self, var_ffi_ccu) /* ffi_ccu= on <self:AModule>*/;
197 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AModule__n_extern_code_blocks]))(self) /* n_extern_code_blocks on <self:AModule>*/;
198 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:ANodes[AExternCodeBlock]>*/;
199 for(;;) {
200 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
201 if(!var6) break;
202 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
203 var_block = var7;
204 var8 = ((val* (*)(val*))(var_block->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var_block) /* language on <var_block:AExternCodeBlock>*/;
205 var_language = var8;
206 var9 = NULL;
207 if (var_language == NULL) {
208 var10 = 0; /* is null */
209 } else {
210 var10 = 1; /* arg is null and recv is not */
211 }
212 if (!var10) {
213 fprintf(stderr, "Runtime error: %s", "Assert failed");
214 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 63);
215 show_backtrace(1);
216 }
217 var11 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__present_languages]))(self) /* present_languages on <self:AModule>*/;
218 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var11, var_language) /* add on <var11:HashSet[FFILanguage]>*/;
219 ((void (*)(val*, val*, val*, val*))(var_language->class->vft[COLOR_ffi_base__FFILanguage__compile_module_block]))(var_language, var_block, var_ffi_ccu, self) /* compile_module_block on <var_language:nullable FFILanguage(FFILanguage)>*/;
220 CONTINUE_label: (void)0;
221 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
222 }
223 BREAK_label: (void)0;
224 var12 = ((val* (*)(val*))(var_ffi_ccu->class->vft[COLOR_c_tools__CCompilationUnit__header_c_base]))(var_ffi_ccu) /* header_c_base on <var_ffi_ccu:CCompilationUnit>*/;
225 if (varonce) {
226 var13 = varonce;
227 } else {
228 var14 = "#include \"";
229 var15 = 10;
230 var16 = string__NativeString__to_s_with_length(var14, var15);
231 var13 = var16;
232 varonce = var13;
233 }
234 var17 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__AModule__mmodule]))(self) /* mmodule on <self:AModule>*/;
235 if (var17 == NULL) {
236 fprintf(stderr, "Runtime error: %s", "Receiver is null");
237 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 68);
238 show_backtrace(1);
239 } else {
240 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_mmodule__MModule__name]))(var17) /* name on <var17:nullable MModule>*/;
241 }
242 if (varonce19) {
243 var20 = varonce19;
244 } else {
245 var21 = "._nitni.h\"\n";
246 var22 = 11;
247 var23 = string__NativeString__to_s_with_length(var21, var22);
248 var20 = var23;
249 varonce19 = var20;
250 }
251 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
252 { /* var24 = array_instance Array[Object] */
253 var25 = 3;
254 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
255 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var13;
256 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var18;
257 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var20;
258 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
259 }
260 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
261 ((void (*)(val*, val*))(var12->class->vft[COLOR_template__Template__add]))(var12, var27) /* add on <var12:Template>*/;
262 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(self) /* n_classdefs on <self:AModule>*/;
263 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on <var28:ANodes[AClassdef]>*/;
264 for(;;) {
265 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
266 if(!var30) break;
267 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
268 var_nclassdef = var31;
269 /* <var_nclassdef:AClassdef> isa AStdClassdef */
270 cltype = type_parser_nodes__AStdClassdef.color;
271 idtype = type_parser_nodes__AStdClassdef.id;
272 if(cltype >= var_nclassdef->type->table_size) {
273 var33 = 0;
274 } else {
275 var33 = var_nclassdef->type->type_table[cltype] == idtype;
276 }
277 var_ = var33;
278 if (var33){
279 var34 = ((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)>*/;
280 var35 = NULL;
281 if (var34 == NULL) {
282 var36 = 0; /* is null */
283 } else {
284 var36 = 1; /* arg is null and recv is not */
285 }
286 var32 = var36;
287 } else {
288 var32 = var_;
289 }
290 if (var32){
291 var37 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__AModule__mmodule]))(self) /* mmodule on <self:AModule>*/;
292 var38 = 1;
293 if (var37 == NULL) {
294 fprintf(stderr, "Runtime error: %s", "Receiver is null");
295 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 73);
296 show_backtrace(1);
297 } else {
298 ((void (*)(val*, short int))(var37->class->vft[COLOR_common_ffi__MModule__uses_ffi_61d]))(var37, var38) /* uses_ffi= on <var37:nullable MModule>*/;
299 }
300 var39 = ((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)>*/;
301 if (var39 == NULL) {
302 fprintf(stderr, "Runtime error: %s", "Receiver is null");
303 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 74);
304 show_backtrace(1);
305 } else {
306 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var39) /* language on <var39:nullable AExternCodeBlock>*/;
307 }
308 var_language41 = var40;
309 var42 = NULL;
310 if (var_language41 == NULL) {
311 var43 = 0; /* is null */
312 } else {
313 var43 = 1; /* arg is null and recv is not */
314 }
315 if (!var43) {
316 fprintf(stderr, "Runtime error: %s", "Assert failed");
317 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 75);
318 show_backtrace(1);
319 }
320 var44 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__present_languages]))(self) /* present_languages on <self:AModule>*/;
321 ((void (*)(val*, val*))(var44->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var44, var_language41) /* add on <var44:HashSet[FFILanguage]>*/;
322 var45 = ((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)>*/;
323 if (var45 == NULL) {
324 fprintf(stderr, "Runtime error: %s", "Receiver is null");
325 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 77);
326 show_backtrace(1);
327 } else {
328 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var45) /* language on <var45:nullable AExternCodeBlock>*/;
329 }
330 var47 = ((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)>*/;
331 if (var47 == NULL) {
332 fprintf(stderr, "Runtime error: %s", "Cast failed");
333 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 78);
334 show_backtrace(1);
335 }
336 if (var46 == NULL) {
337 fprintf(stderr, "Runtime error: %s", "Receiver is null");
338 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 77);
339 show_backtrace(1);
340 } else {
341 ((void (*)(val*, val*, val*, val*, val*))(var46->class->vft[COLOR_ffi_base__FFILanguage__compile_extern_class]))(var46, var47, var_nclassdef, var_ffi_ccu, self) /* compile_extern_class on <var46:nullable FFILanguage>*/;
342 }
343 } else {
344 }
345 CONTINUE_label48: (void)0;
346 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
347 }
348 BREAK_label48: (void)0;
349 RET_LABEL:;
350 }
351 /* method common_ffi#AModule#ensure_compile_ffi_wrapper for (self: Object) */
352 void VIRTUAL_common_ffi__AModule__ensure_compile_ffi_wrapper(val* self) {
353 common_ffi__AModule__ensure_compile_ffi_wrapper(self);
354 RET_LABEL:;
355 }
356 /* method common_ffi#AModule#finalize_ffi_wrapper for (self: AModule, String, MModule) */
357 void common_ffi__AModule__finalize_ffi_wrapper(val* self, val* p0, val* p1) {
358 val* var_compdir /* var compdir: String */;
359 val* var_mainmodule /* var mainmodule: MModule */;
360 val* var /* : HashSet[FFILanguage] */;
361 val* var1 /* : Iterator[nullable Object] */;
362 short int var2 /* : Bool */;
363 val* var3 /* : nullable Object */;
364 val* var_language /* var language: FFILanguage */;
365 val* var4 /* : HashMap[FFILanguage, Set[NitniCallback]] */;
366 val* var5 /* : Collection[Object] */;
367 short int var6 /* : Bool */;
368 val* var7 /* : HashMap[FFILanguage, Set[NitniCallback]] */;
369 val* var8 /* : nullable Object */;
370 val* var9 /* : Iterator[nullable Object] */;
371 short int var10 /* : Bool */;
372 val* var11 /* : nullable Object */;
373 val* var_callback /* var callback: NitniCallback */;
374 val* var12 /* : nullable CCompilationUnit */;
375 val* var14 /* : nullable MModule */;
376 val* var15 /* : Array[MModule] */;
377 val* var16 /* : Iterator[nullable Object] */;
378 short int var17 /* : Bool */;
379 val* var18 /* : nullable Object */;
380 val* var_mod /* var mod: MModule */;
381 short int var19 /* : Bool */;
382 val* var20 /* : nullable CCompilationUnit */;
383 val* var21 /* : Template */;
384 static val* varonce;
385 val* var22 /* : String */;
386 char* var23 /* : NativeString */;
387 long var24 /* : Int */;
388 val* var25 /* : String */;
389 val* var26 /* : String */;
390 static val* varonce27;
391 val* var28 /* : String */;
392 char* var29 /* : NativeString */;
393 long var30 /* : Int */;
394 val* var31 /* : String */;
395 val* var32 /* : Array[Object] */;
396 long var33 /* : Int */;
397 val* var34 /* : NativeArray[Object] */;
398 val* var35 /* : String */;
399 val* var37 /* : nullable CCompilationUnit */;
400 val* var38 /* : nullable CCompilationUnit */;
401 val* var39 /* : Array[String] */;
402 val* var40 /* : Iterator[nullable Object] */;
403 short int var41 /* : Bool */;
404 val* var42 /* : nullable Object */;
405 val* var_filename /* var filename: String */;
406 val* var43 /* : Array[ExternFile] */;
407 val* var44 /* : ExternCFile */;
408 val* var45 /* : String */;
409 var_compdir = p0;
410 var_mainmodule = p1;
411 ((void (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ensure_compile_ffi_wrapper]))(self) /* ensure_compile_ffi_wrapper on <self:AModule>*/;
412 var = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__present_languages]))(self) /* present_languages on <self:AModule>*/;
413 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:HashSet[FFILanguage]>*/;
414 for(;;) {
415 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
416 if(!var2) break;
417 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
418 var_language = var3;
419 var4 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_callbacks]))(self) /* ffi_callbacks on <self:AModule>*/;
420 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapRead__keys]))(var4) /* keys on <var4:HashMap[FFILanguage, Set[NitniCallback]]>*/;
421 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_language) /* has on <var5:Collection[Object](HashMapKeys[FFILanguage, Set[NitniCallback]])>*/;
422 if (var6){
423 var7 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_callbacks]))(self) /* ffi_callbacks on <self:AModule>*/;
424 var8 = ((val* (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var7, var_language) /* [] on <var7:HashMap[FFILanguage, Set[NitniCallback]]>*/;
425 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:nullable Object(Set[NitniCallback])>*/;
426 for(;;) {
427 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
428 if(!var10) break;
429 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
430 var_callback = var11;
431 var12 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(self) /* ffi_ccu on <self:AModule>*/;
432 if (var12 == NULL) {
433 fprintf(stderr, "Runtime error: %s", "Cast failed");
434 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 90);
435 show_backtrace(1);
436 }
437 ((void (*)(val*, val*, val*, val*, val*))(var_language->class->vft[COLOR_ffi_base__FFILanguage__compile_callback]))(var_language, var_callback, self, var_mainmodule, var12) /* compile_callback on <var_language:FFILanguage>*/;
438 CONTINUE_label: (void)0;
439 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
440 }
441 BREAK_label: (void)0;
442 ((void (*)(val*, val*, val*))(var_language->class->vft[COLOR_ffi_base__FFILanguage__compile_to_files]))(var_language, self, var_compdir) /* compile_to_files on <var_language:FFILanguage>*/;
443 } else {
444 }
445 CONTINUE_label13: (void)0;
446 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
447 }
448 BREAK_label13: (void)0;
449 var14 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__AModule__mmodule]))(self) /* mmodule on <self:AModule>*/;
450 if (var14 == NULL) {
451 fprintf(stderr, "Runtime error: %s", "Receiver is null");
452 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 97);
453 show_backtrace(1);
454 } else {
455 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_header_dependency__MModule__header_dependencies]))(var14) /* header_dependencies on <var14:nullable MModule>*/;
456 }
457 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Collection__iterator]))(var15) /* iterator on <var15:Array[MModule]>*/;
458 for(;;) {
459 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
460 if(!var17) break;
461 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
462 var_mod = var18;
463 var19 = ((short int (*)(val*))(var_mod->class->vft[COLOR_common_ffi__MModule__uses_ffi]))(var_mod) /* uses_ffi on <var_mod:MModule>*/;
464 if (var19){
465 var20 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(self) /* ffi_ccu on <self:AModule>*/;
466 if (var20 == NULL) {
467 fprintf(stderr, "Runtime error: %s", "Receiver is null");
468 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 98);
469 show_backtrace(1);
470 } else {
471 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_c_tools__CCompilationUnit__header_custom]))(var20) /* header_custom on <var20:nullable CCompilationUnit>*/;
472 }
473 if (varonce) {
474 var22 = varonce;
475 } else {
476 var23 = "#include \"";
477 var24 = 10;
478 var25 = string__NativeString__to_s_with_length(var23, var24);
479 var22 = var25;
480 varonce = var22;
481 }
482 var26 = ((val* (*)(val*))(var_mod->class->vft[COLOR_mmodule__MModule__name]))(var_mod) /* name on <var_mod:MModule>*/;
483 if (varonce27) {
484 var28 = varonce27;
485 } else {
486 var29 = "._ffi.h\"\n";
487 var30 = 9;
488 var31 = string__NativeString__to_s_with_length(var29, var30);
489 var28 = var31;
490 varonce27 = var28;
491 }
492 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
493 { /* var32 = array_instance Array[Object] */
494 var33 = 3;
495 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
496 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var22;
497 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var26;
498 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
499 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
500 }
501 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
502 ((void (*)(val*, val*))(var21->class->vft[COLOR_template__Template__add]))(var21, var35) /* add on <var21:Template>*/;
503 } else {
504 }
505 CONTINUE_label36: (void)0;
506 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
507 }
508 BREAK_label36: (void)0;
509 var37 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(self) /* ffi_ccu on <self:AModule>*/;
510 if (var37 == NULL) {
511 fprintf(stderr, "Runtime error: %s", "Receiver is null");
512 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 101);
513 show_backtrace(1);
514 } else {
515 ((void (*)(val*, val*, val*))(var37->class->vft[COLOR_ffi_base__CCompilationUnit__write_as_impl]))(var37, self, var_compdir) /* write_as_impl on <var37:nullable CCompilationUnit>*/;
516 }
517 var38 = ((val* (*)(val*))(self->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(self) /* ffi_ccu on <self:AModule>*/;
518 if (var38 == NULL) {
519 fprintf(stderr, "Runtime error: %s", "Receiver is null");
520 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 102);
521 show_backtrace(1);
522 } else {
523 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_c_tools__CCompilationUnit__files]))(var38) /* files on <var38:nullable CCompilationUnit>*/;
524 }
525 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Array[String]>*/;
526 for(;;) {
527 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
528 if(!var41) break;
529 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
530 var_filename = var42;
531 var43 = ((val* (*)(val*))(self->class->vft[COLOR_ffi_base__AModule__ffi_files]))(self) /* ffi_files on <self:AModule>*/;
532 var44 = NEW_c__ExternCFile(&type_c__ExternCFile);
533 var45 = ((val* (*)(val*))(self->class->vft[COLOR_c__AModule__c_compiler_options]))(self) /* c_compiler_options on <self:AModule>*/;
534 ((void (*)(val*, val*, val*))(var44->class->vft[COLOR_c__ExternCFile__init]))(var44, var_filename, var45) /* init on <var44:ExternCFile>*/;
535 ((void (*)(val*, val*))(var43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var43, var44) /* add on <var43:Array[ExternFile]>*/;
536 CONTINUE_label46: (void)0;
537 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
538 }
539 BREAK_label46: (void)0;
540 RET_LABEL:;
541 }
542 /* method common_ffi#AModule#finalize_ffi_wrapper for (self: Object, String, MModule) */
543 void VIRTUAL_common_ffi__AModule__finalize_ffi_wrapper(val* self, val* p0, val* p1) {
544 common_ffi__AModule__finalize_ffi_wrapper(self, p0, p1);
545 RET_LABEL:;
546 }
547 /* method common_ffi#AExternPropdef#ffi_has_been_compiled for (self: AExternPropdef): Bool */
548 short int common_ffi__AExternPropdef__ffi_has_been_compiled(val* self) {
549 short int var /* : Bool */;
550 short int var1 /* : Bool */;
551 var1 = self->attrs[COLOR_common_ffi__AExternPropdef___64dffi_has_been_compiled].s; /* @ffi_has_been_compiled on <self:AExternPropdef> */
552 var = var1;
553 RET_LABEL:;
554 return var;
555 }
556 /* method common_ffi#AExternPropdef#ffi_has_been_compiled for (self: Object): Bool */
557 short int VIRTUAL_common_ffi__AExternPropdef__ffi_has_been_compiled(val* self) {
558 short int var /* : Bool */;
559 short int var1 /* : Bool */;
560 var1 = common_ffi__AExternPropdef__ffi_has_been_compiled(self);
561 var = var1;
562 RET_LABEL:;
563 return var;
564 }
565 /* method common_ffi#AExternPropdef#ffi_has_been_compiled= for (self: AExternPropdef, Bool) */
566 void common_ffi__AExternPropdef__ffi_has_been_compiled_61d(val* self, short int p0) {
567 self->attrs[COLOR_common_ffi__AExternPropdef___64dffi_has_been_compiled].s = p0; /* @ffi_has_been_compiled on <self:AExternPropdef> */
568 RET_LABEL:;
569 }
570 /* method common_ffi#AExternPropdef#ffi_has_been_compiled= for (self: Object, Bool) */
571 void VIRTUAL_common_ffi__AExternPropdef__ffi_has_been_compiled_61d(val* self, short int p0) {
572 common_ffi__AExternPropdef__ffi_has_been_compiled_61d(self, p0);
573 RET_LABEL:;
574 }
575 /* method common_ffi#AExternPropdef#compile_ffi_method for (self: AExternPropdef, AModule) */
576 void common_ffi__AExternPropdef__compile_ffi_method(val* self, val* p0) {
577 val* var_amodule /* var amodule: AModule */;
578 val* var /* : nullable AExternCodeBlock */;
579 val* var1 /* : null */;
580 short int var2 /* : Bool */;
581 short int var3 /* : Bool */;
582 short int var4 /* : Bool */;
583 val* var5 /* : nullable AExternCodeBlock */;
584 val* var6 /* : nullable FFILanguage */;
585 val* var_language /* var language: nullable FFILanguage */;
586 val* var7 /* : null */;
587 short int var8 /* : Bool */;
588 val* var9 /* : HashSet[FFILanguage] */;
589 val* var10 /* : nullable AExternCodeBlock */;
590 val* var11 /* : nullable FFILanguage */;
591 val* var12 /* : nullable AExternCodeBlock */;
592 val* var13 /* : nullable CCompilationUnit */;
593 var_amodule = p0;
594 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternPropdef__n_extern_code_block]))(self) /* n_extern_code_block on <self:AExternPropdef>*/;
595 var1 = NULL;
596 if (var == NULL) {
597 var2 = 0; /* is null */
598 } else {
599 var2 = 1; /* arg is null and recv is not */
600 }
601 if (!var2) {
602 fprintf(stderr, "Runtime error: %s", "Assert failed");
603 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 112);
604 show_backtrace(1);
605 }
606 var3 = ((short int (*)(val*))(self->class->vft[COLOR_common_ffi__AExternPropdef__ffi_has_been_compiled]))(self) /* ffi_has_been_compiled on <self:AExternPropdef>*/;
607 if (var3){
608 goto RET_LABEL;
609 } else {
610 }
611 var4 = 1;
612 ((void (*)(val*, short int))(self->class->vft[COLOR_common_ffi__AExternPropdef__ffi_has_been_compiled_61d]))(self, var4) /* ffi_has_been_compiled= on <self:AExternPropdef>*/;
613 ((void (*)(val*))(var_amodule->class->vft[COLOR_common_ffi__AModule__ensure_compile_ffi_wrapper]))(var_amodule) /* ensure_compile_ffi_wrapper on <var_amodule:AModule>*/;
614 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternPropdef__n_extern_code_block]))(self) /* n_extern_code_block on <self:AExternPropdef>*/;
615 if (var5 == NULL) {
616 fprintf(stderr, "Runtime error: %s", "Receiver is null");
617 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 119);
618 show_backtrace(1);
619 } else {
620 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var5) /* language on <var5:nullable AExternCodeBlock>*/;
621 }
622 var_language = var6;
623 var7 = NULL;
624 if (var_language == NULL) {
625 var8 = 0; /* is null */
626 } else {
627 var8 = 1; /* arg is null and recv is not */
628 }
629 if (!var8) {
630 fprintf(stderr, "Runtime error: %s", "Assert failed");
631 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 120);
632 show_backtrace(1);
633 }
634 var9 = ((val* (*)(val*))(var_amodule->class->vft[COLOR_common_ffi__AModule__present_languages]))(var_amodule) /* present_languages on <var_amodule:AModule>*/;
635 ((void (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var9, var_language) /* add on <var9:HashSet[FFILanguage]>*/;
636 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternPropdef__n_extern_code_block]))(self) /* n_extern_code_block on <self:AExternPropdef>*/;
637 if (var10 == NULL) {
638 fprintf(stderr, "Runtime error: %s", "Receiver is null");
639 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 122);
640 show_backtrace(1);
641 } else {
642 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var10) /* language on <var10:nullable AExternCodeBlock>*/;
643 }
644 var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternPropdef__n_extern_code_block]))(self) /* n_extern_code_block on <self:AExternPropdef>*/;
645 if (var12 == NULL) {
646 fprintf(stderr, "Runtime error: %s", "Cast failed");
647 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 123);
648 show_backtrace(1);
649 }
650 var13 = ((val* (*)(val*))(var_amodule->class->vft[COLOR_common_ffi__AModule__ffi_ccu]))(var_amodule) /* ffi_ccu on <var_amodule:AModule>*/;
651 if (var13 == NULL) {
652 fprintf(stderr, "Runtime error: %s", "Cast failed");
653 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 123);
654 show_backtrace(1);
655 }
656 if (var11 == NULL) {
657 fprintf(stderr, "Runtime error: %s", "Receiver is null");
658 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 122);
659 show_backtrace(1);
660 } else {
661 ((void (*)(val*, val*, val*, val*, val*))(var11->class->vft[COLOR_ffi_base__FFILanguage__compile_extern_method]))(var11, var12, self, var13, var_amodule) /* compile_extern_method on <var11:nullable FFILanguage>*/;
662 }
663 RET_LABEL:;
664 }
665 /* method common_ffi#AExternPropdef#compile_ffi_method for (self: Object, AModule) */
666 void VIRTUAL_common_ffi__AExternPropdef__compile_ffi_method(val* self, val* p0) {
667 common_ffi__AExternPropdef__compile_ffi_method(self, p0);
668 RET_LABEL:;
669 }
670 /* method common_ffi#VerifyNitniCallbacksPhase#process_npropdef for (self: VerifyNitniCallbacksPhase, APropdef) */
671 void common_ffi__VerifyNitniCallbacksPhase__process_npropdef(val* self, val* p0) {
672 val* var_npropdef /* var npropdef: APropdef */;
673 short int var /* : Bool */;
674 int cltype;
675 int idtype;
676 short int var1 /* : Bool */;
677 val* var2 /* : nullable AExternCodeBlock */;
678 val* var_code_block /* var code_block: nullable AExternCodeBlock */;
679 val* var3 /* : null */;
680 short int var4 /* : Bool */;
681 val* var5 /* : nullable FFILanguage */;
682 val* var_lang /* var lang: nullable FFILanguage */;
683 val* var6 /* : null */;
684 short int var7 /* : Bool */;
685 val* var8 /* : ForeignCallbackSet */;
686 val* var9 /* : Set[NitniCallback] */;
687 val* var10 /* : Iterator[nullable Object] */;
688 short int var11 /* : Bool */;
689 val* var12 /* : nullable Object */;
690 val* var_callback /* var callback: NitniCallback */;
691 val* var13 /* : nullable ANode */;
692 val* var14 /* : nullable ANode */;
693 short int var15 /* : Bool */;
694 int cltype16;
695 int idtype17;
696 const char* var_class_name;
697 val* var18 /* : HashMap[FFILanguage, Set[NitniCallback]] */;
698 val* var_map /* var map: HashMap[FFILanguage, Set[NitniCallback]] */;
699 val* var19 /* : Collection[Object] */;
700 short int var20 /* : Bool */;
701 short int var21 /* : Bool */;
702 val* var22 /* : HashSet[NitniCallback] */;
703 val* var23 /* : nullable Object */;
704 var_npropdef = p0;
705 ((void (*)(val*, val*))(self->class->vft[COLOR_common_ffi__VerifyNitniCallbacksPhase__process_npropdef]))(self, p0) /* process_npropdef on <self:VerifyNitniCallbacksPhase>*/;
706 /* <var_npropdef:APropdef> isa AExternPropdef */
707 cltype = type_parser_nodes__AExternPropdef.color;
708 idtype = type_parser_nodes__AExternPropdef.id;
709 if(cltype >= var_npropdef->type->table_size) {
710 var = 0;
711 } else {
712 var = var_npropdef->type->type_table[cltype] == idtype;
713 }
714 var1 = !var;
715 if (var1){
716 goto RET_LABEL;
717 } else {
718 }
719 var2 = ((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)>*/;
720 var_code_block = var2;
721 var3 = NULL;
722 if (var_code_block == NULL) {
723 var4 = 1; /* is null */
724 } else {
725 var4 = 0; /* arg is null but recv is not */
726 }
727 if (var4){
728 goto RET_LABEL;
729 } else {
730 }
731 var5 = ((val* (*)(val*))(var_code_block->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var_code_block) /* language on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/;
732 var_lang = var5;
733 var6 = NULL;
734 if (var_lang == NULL) {
735 var7 = 0; /* is null */
736 } else {
737 var7 = 1; /* arg is null and recv is not */
738 }
739 if (!var7) {
740 fprintf(stderr, "Runtime error: %s", "Assert failed");
741 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 138);
742 show_backtrace(1);
743 }
744 var8 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_nitni_callbacks__AExternPropdef__foreign_callbacks]))(var_npropdef) /* foreign_callbacks on <var_npropdef:APropdef(AExternPropdef)>*/;
745 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_nitni_callbacks__ForeignCallbackSet__all]))(var8) /* all on <var8:ForeignCallbackSet>*/;
746 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Set[NitniCallback]>*/;
747 for(;;) {
748 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
749 if(!var11) break;
750 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
751 var_callback = var12;
752 var13 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_parser_nodes__ANode__parent]))(var_npropdef) /* parent on <var_npropdef:APropdef(AExternPropdef)>*/;
753 if (var13 == NULL) {
754 fprintf(stderr, "Runtime error: %s", "Receiver is null");
755 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 142);
756 show_backtrace(1);
757 } else {
758 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__ANode__parent]))(var13) /* parent on <var13:nullable ANode>*/;
759 }
760 /* <var14:nullable ANode> isa AModule */
761 cltype16 = type_parser_nodes__AModule.color;
762 idtype17 = type_parser_nodes__AModule.id;
763 if(var14 == NULL) {
764 var15 = 0;
765 } else {
766 if(cltype16 >= var14->type->table_size) {
767 var15 = 0;
768 } else {
769 var15 = var14->type->type_table[cltype16] == idtype17;
770 }
771 }
772 if (!var15) {
773 var_class_name = var14 == NULL ? "null" : var14->type->name;
774 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
775 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/common_ffi.nit", 142);
776 show_backtrace(1);
777 }
778 var18 = ((val* (*)(val*))(var14->class->vft[COLOR_common_ffi__AModule__ffi_callbacks]))(var14) /* ffi_callbacks on <var14:nullable ANode(AModule)>*/;
779 var_map = var18;
780 var19 = ((val* (*)(val*))(var_map->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_map) /* keys on <var_map:HashMap[FFILanguage, Set[NitniCallback]]>*/;
781 var20 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__Collection__has]))(var19, var_lang) /* has on <var19:Collection[Object](HashMapKeys[FFILanguage, Set[NitniCallback]])>*/;
782 var21 = !var20;
783 if (var21){
784 var22 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetnitni_callbacks__NitniCallback);
785 ((void (*)(val*))(var22->class->vft[COLOR_hash_collection__HashSet__init]))(var22) /* init on <var22:HashSet[NitniCallback]>*/;
786 ((void (*)(val*, val*, val*))(var_map->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_map, var_lang, var22) /* []= on <var_map:HashMap[FFILanguage, Set[NitniCallback]]>*/;
787 } else {
788 }
789 var23 = ((val* (*)(val*, val*))(var_map->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_map, var_lang) /* [] on <var_map:HashMap[FFILanguage, Set[NitniCallback]]>*/;
790 ((void (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var23, var_callback) /* add on <var23:nullable Object(Set[NitniCallback])>*/;
791 CONTINUE_label: (void)0;
792 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
793 }
794 BREAK_label: (void)0;
795 RET_LABEL:;
796 }
797 /* method common_ffi#VerifyNitniCallbacksPhase#process_npropdef for (self: Object, APropdef) */
798 void VIRTUAL_common_ffi__VerifyNitniCallbacksPhase__process_npropdef(val* self, val* p0) {
799 common_ffi__VerifyNitniCallbacksPhase__process_npropdef(self, p0);
800 RET_LABEL:;
801 }