Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__light_ffi.sep.1.c
1 #include "nitc__light_ffi.sep.0.h"
2 /* method light_ffi$MModule$uses_ffi for (self: MModule): Bool */
3 short int nitc__light_ffi___MModule___uses_ffi(val* self) {
4 short int var /* : Bool */;
5 short int var1 /* : Bool */;
6 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s; /* _uses_ffi on <self:MModule> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method light_ffi$MModule$uses_ffi= for (self: MModule, Bool) */
12 void nitc__light_ffi___MModule___uses_ffi_61d(val* self, short int p0) {
13 self->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = p0; /* _uses_ffi on <self:MModule> */
14 RET_LABEL:;
15 }
16 /* method light_ffi$MModule$ffi_ccu for (self: MModule): nullable CCompilationUnit */
17 val* nitc__light_ffi___MModule___ffi_ccu(val* self) {
18 val* var /* : nullable CCompilationUnit */;
19 val* var1 /* : nullable CCompilationUnit */;
20 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method light_ffi$MModule$ffi_ccu= for (self: MModule, nullable CCompilationUnit) */
26 void nitc__light_ffi___MModule___ffi_ccu_61d(val* self, val* p0) {
27 self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val = p0; /* _ffi_ccu on <self:MModule> */
28 RET_LABEL:;
29 }
30 /* method light_ffi$MModule$present_languages for (self: MModule): HashSet[FFILanguage] */
31 val* nitc__light_ffi___MModule___present_languages(val* self) {
32 val* var /* : HashSet[FFILanguage] */;
33 val* var1 /* : HashSet[FFILanguage] */;
34 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <self:MModule> */
35 if (unlikely(var1 == NULL)) {
36 if(catchStack.cursor >= 0){
37 longjmp(catchStack.envs[catchStack.cursor], 1);
38 }
39 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
40 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
41 fatal_exit(1);
42 }
43 var = var1;
44 RET_LABEL:;
45 return var;
46 }
47 /* method light_ffi$MModule$finalize_ffi_wrapper for (self: MModule, String, MModule) */
48 void nitc__light_ffi___MModule___finalize_ffi_wrapper(val* self, val* p0, val* p1) {
49 val* var_compdir /* var compdir: String */;
50 val* var_mainmodule /* var mainmodule: MModule */;
51 val* var /* : MultiHashMap[String, String] */;
52 val* var2 /* : MultiHashMap[String, String] */;
53 static val* varonce;
54 val* var3 /* : String */;
55 char* var4 /* : CString */;
56 val* var5 /* : String */;
57 val* var6 /* : nullable Int */;
58 val* var7 /* : nullable Int */;
59 val* var8 /* : nullable Bool */;
60 val* var9 /* : nullable Bool */;
61 val* var10 /* : nullable Object */;
62 static val* varonce11;
63 val* var12 /* : String */;
64 char* var13 /* : CString */;
65 val* var14 /* : String */;
66 val* var15 /* : nullable Int */;
67 val* var16 /* : nullable Int */;
68 val* var17 /* : nullable Bool */;
69 val* var18 /* : nullable Bool */;
70 val* var19 /* : String */;
71 val* var_cflags /* var cflags: String */;
72 val* var20 /* : nullable CCompilationUnit */;
73 val* var22 /* : nullable CCompilationUnit */;
74 val* var23 /* : nullable CCompilationUnit */;
75 val* var25 /* : nullable CCompilationUnit */;
76 val* var26 /* : Array[String] */;
77 val* var28 /* : Array[String] */;
78 val* var_ /* var : Array[String] */;
79 val* var29 /* : IndexedIterator[nullable Object] */;
80 val* var_30 /* var : IndexedIterator[String] */;
81 short int var31 /* : Bool */;
82 val* var32 /* : nullable Object */;
83 val* var_filename /* var filename: String */;
84 val* var33 /* : ExternCFile */;
85 val* var_f /* var f: ExternCFile */;
86 val* var34 /* : Array[String] */;
87 val* var36 /* : Array[String] */;
88 val* var37 /* : Array[String] */;
89 val* var39 /* : Array[String] */;
90 val* var40 /* : Array[ExternFile] */;
91 val* var42 /* : Array[ExternFile] */;
92 var_compdir = p0;
93 var_mainmodule = p1;
94 {
95 { /* Inline light_c$MModule$cflags (self) on <self:MModule> */
96 var2 = self->attrs[COLOR_nitc__light_c__MModule___cflags].val; /* _cflags on <self:MModule> */
97 if (unlikely(var2 == NULL)) {
98 if(catchStack.cursor >= 0){
99 longjmp(catchStack.envs[catchStack.cursor], 1);
100 }
101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
102 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 77);
103 fatal_exit(1);
104 }
105 var = var2;
106 RET_LABEL1:(void)0;
107 }
108 }
109 if (likely(varonce!=NULL)) {
110 var3 = varonce;
111 } else {
112 var4 = "";
113 var6 = (val*)(0l<<2|1);
114 var7 = (val*)(0l<<2|1);
115 var8 = (val*)((long)(0)<<2|3);
116 var9 = (val*)((long)(0)<<2|3);
117 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
118 var3 = var5;
119 varonce = var3;
120 }
121 {
122 var10 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var, var3);
123 }
124 if (likely(varonce11!=NULL)) {
125 var12 = varonce11;
126 } else {
127 var13 = " ";
128 var15 = (val*)(1l<<2|1);
129 var16 = (val*)(1l<<2|1);
130 var17 = (val*)((long)(0)<<2|3);
131 var18 = (val*)((long)(0)<<2|3);
132 var14 = core__flat___CString___to_s_unsafe(var13, var15, var16, var17, var18);
133 var12 = var14;
134 varonce11 = var12;
135 }
136 {
137 var19 = core__abstract_text___Collection___join(var10, var12, ((val*)NULL));
138 }
139 var_cflags = var19;
140 {
141 { /* Inline light_ffi$MModule$ffi_ccu (self) on <self:MModule> */
142 var22 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
143 var20 = var22;
144 RET_LABEL21:(void)0;
145 }
146 }
147 if (var20 == NULL) {
148 if(catchStack.cursor >= 0){
149 longjmp(catchStack.envs[catchStack.cursor], 1);
150 }
151 PRINT_ERROR("Runtime error: %s", "Receiver is null");
152 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 58);
153 fatal_exit(1);
154 } else {
155 nitc__light_ffi_base___CCompilationUnit___write_as_impl(var20, self, var_compdir); /* Direct call light_ffi_base$CCompilationUnit$write_as_impl on <var20:nullable CCompilationUnit>*/
156 }
157 {
158 { /* Inline light_ffi$MModule$ffi_ccu (self) on <self:MModule> */
159 var25 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
160 var23 = var25;
161 RET_LABEL24:(void)0;
162 }
163 }
164 if (var23 == NULL) {
165 if(catchStack.cursor >= 0){
166 longjmp(catchStack.envs[catchStack.cursor], 1);
167 }
168 PRINT_ERROR("Runtime error: %s", "Receiver is null");
169 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 59);
170 fatal_exit(1);
171 } else {
172 { /* Inline c_tools$CCompilationUnit$files (var23) on <var23:nullable CCompilationUnit> */
173 if (unlikely(var23 == NULL)) {
174 if(catchStack.cursor >= 0){
175 longjmp(catchStack.envs[catchStack.cursor], 1);
176 }
177 PRINT_ERROR("Runtime error: %s", "Receiver is null");
178 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
179 fatal_exit(1);
180 }
181 var28 = var23->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <var23:nullable CCompilationUnit> */
182 if (unlikely(var28 == NULL)) {
183 if(catchStack.cursor >= 0){
184 longjmp(catchStack.envs[catchStack.cursor], 1);
185 }
186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
187 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
188 fatal_exit(1);
189 }
190 var26 = var28;
191 RET_LABEL27:(void)0;
192 }
193 }
194 var_ = var26;
195 {
196 var29 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
197 }
198 var_30 = var29;
199 for(;;) {
200 {
201 var31 = ((short int(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_30); /* is_ok on <var_30:IndexedIterator[String]>*/
202 }
203 if (var31){
204 } else {
205 goto BREAK_label;
206 }
207 {
208 var32 = ((val*(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_30); /* item on <var_30:IndexedIterator[String]>*/
209 }
210 var_filename = var32;
211 var33 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
212 {
213 ((void(*)(val* self, val* p0))(var33->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var33, var_filename); /* filename= on <var33:ExternCFile>*/
214 }
215 {
216 ((void(*)(val* self, val* p0))(var33->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var33, var_cflags); /* cflags= on <var33:ExternCFile>*/
217 }
218 {
219 ((void(*)(val* self))(var33->class->vft[COLOR_core__kernel__Object__init]))(var33); /* init on <var33:ExternCFile>*/
220 }
221 var_f = var33;
222 {
223 { /* Inline c_tools$ExternFile$pkgconfigs (var_f) on <var_f:ExternCFile> */
224 var36 = var_f->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f:ExternCFile> */
225 if (unlikely(var36 == NULL)) {
226 if(catchStack.cursor >= 0){
227 longjmp(catchStack.envs[catchStack.cursor], 1);
228 }
229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
230 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
231 fatal_exit(1);
232 }
233 var34 = var36;
234 RET_LABEL35:(void)0;
235 }
236 }
237 {
238 { /* Inline light_c$MModule$pkgconfigs (self) on <self:MModule> */
239 var39 = self->attrs[COLOR_nitc__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
240 if (unlikely(var39 == NULL)) {
241 if(catchStack.cursor >= 0){
242 longjmp(catchStack.envs[catchStack.cursor], 1);
243 }
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
245 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 83);
246 fatal_exit(1);
247 }
248 var37 = var39;
249 RET_LABEL38:(void)0;
250 }
251 }
252 {
253 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var34, var37); /* Direct call array$Array$add_all on <var34:Array[String]>*/
254 }
255 {
256 { /* Inline light_ffi_base$MModule$ffi_files (self) on <self:MModule> */
257 var42 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
258 if (unlikely(var42 == NULL)) {
259 if(catchStack.cursor >= 0){
260 longjmp(catchStack.envs[catchStack.cursor], 1);
261 }
262 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
263 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
264 fatal_exit(1);
265 }
266 var40 = var42;
267 RET_LABEL41:(void)0;
268 }
269 }
270 {
271 core___core__Array___core__abstract_collection__SimpleCollection__add(var40, var_f); /* Direct call array$Array$add on <var40:Array[ExternFile]>*/
272 }
273 {
274 ((void(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_30); /* next on <var_30:IndexedIterator[String]>*/
275 }
276 }
277 BREAK_label: (void)0;
278 {
279 ((void(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_30); /* finish on <var_30:IndexedIterator[String]>*/
280 }
281 RET_LABEL:;
282 }
283 /* method light_ffi$MModule$compiled_ffi_methods for (self: MModule): HashSet[AMethPropdef] */
284 val* nitc__light_ffi___MModule___compiled_ffi_methods(val* self) {
285 val* var /* : HashSet[AMethPropdef] */;
286 val* var1 /* : HashSet[AMethPropdef] */;
287 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <self:MModule> */
288 if (unlikely(var1 == NULL)) {
289 if(catchStack.cursor >= 0){
290 longjmp(catchStack.envs[catchStack.cursor], 1);
291 }
292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
293 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
294 fatal_exit(1);
295 }
296 var = var1;
297 RET_LABEL:;
298 return var;
299 }
300 /* method light_ffi$AModule$ensure_compile_ffi_wrapper for (self: AModule) */
301 void nitc__light_ffi___AModule___ensure_compile_ffi_wrapper(val* self) {
302 val* var /* : nullable MModule */;
303 val* var2 /* : nullable MModule */;
304 val* var_mmodule /* var mmodule: nullable MModule */;
305 short int var3 /* : Bool */;
306 short int var4 /* : Bool */;
307 short int var5 /* : Bool */;
308 val* var_other /* var other: nullable Object */;
309 short int var7 /* : Bool */;
310 short int var9 /* : Bool */;
311 short int var_ /* var : Bool */;
312 val* var10 /* : nullable CCompilationUnit */;
313 val* var12 /* : nullable CCompilationUnit */;
314 short int var13 /* : Bool */;
315 short int var14 /* : Bool */;
316 val* var_other16 /* var other: nullable Object */;
317 short int var17 /* : Bool */;
318 short int var18 /* : Bool */;
319 val* var19 /* : CCompilationUnit */;
320 val* var_ffi_ccu /* var ffi_ccu: CCompilationUnit */;
321 val* var22 /* : ANodes[AExternCodeBlock] */;
322 val* var24 /* : ANodes[AExternCodeBlock] */;
323 val* var_25 /* var : ANodes[AExternCodeBlock] */;
324 val* var26 /* : Iterator[ANode] */;
325 val* var_27 /* var : Iterator[AExternCodeBlock] */;
326 short int var28 /* : Bool */;
327 val* var29 /* : nullable Object */;
328 val* var_block /* var block: AExternCodeBlock */;
329 val* var30 /* : nullable FFILanguage */;
330 val* var32 /* : nullable FFILanguage */;
331 val* var_language /* var language: nullable FFILanguage */;
332 short int var33 /* : Bool */;
333 short int var34 /* : Bool */;
334 short int var36 /* : Bool */;
335 short int var37 /* : Bool */;
336 val* var38 /* : HashSet[FFILanguage] */;
337 val* var40 /* : HashSet[FFILanguage] */;
338 val* var41 /* : Template */;
339 val* var43 /* : Template */;
340 val* var44 /* : NativeArray[String] */;
341 static val* varonce;
342 static val* varonce45;
343 val* var46 /* : String */;
344 char* var47 /* : CString */;
345 val* var48 /* : String */;
346 val* var49 /* : nullable Int */;
347 val* var50 /* : nullable Int */;
348 val* var51 /* : nullable Bool */;
349 val* var52 /* : nullable Bool */;
350 static val* varonce53;
351 val* var54 /* : String */;
352 char* var55 /* : CString */;
353 val* var56 /* : String */;
354 val* var57 /* : nullable Int */;
355 val* var58 /* : nullable Int */;
356 val* var59 /* : nullable Bool */;
357 val* var60 /* : nullable Bool */;
358 val* var61 /* : String */;
359 val* var62 /* : String */;
360 val* var63 /* : Template */;
361 val* var65 /* : Template */;
362 static val* varonce66;
363 val* var67 /* : String */;
364 char* var68 /* : CString */;
365 val* var69 /* : String */;
366 val* var70 /* : nullable Int */;
367 val* var71 /* : nullable Int */;
368 val* var72 /* : nullable Bool */;
369 val* var73 /* : nullable Bool */;
370 val* var74 /* : Template */;
371 val* var76 /* : Template */;
372 static val* varonce77;
373 val* var78 /* : String */;
374 char* var79 /* : CString */;
375 val* var80 /* : String */;
376 val* var81 /* : nullable Int */;
377 val* var82 /* : nullable Int */;
378 val* var83 /* : nullable Bool */;
379 val* var84 /* : nullable Bool */;
380 val* var85 /* : Template */;
381 val* var87 /* : Template */;
382 static val* varonce88;
383 val* var89 /* : String */;
384 char* var90 /* : CString */;
385 val* var91 /* : String */;
386 val* var92 /* : nullable Int */;
387 val* var93 /* : nullable Int */;
388 val* var94 /* : nullable Bool */;
389 val* var95 /* : nullable Bool */;
390 val* var96 /* : Template */;
391 val* var98 /* : Template */;
392 static val* varonce99;
393 val* var100 /* : String */;
394 char* var101 /* : CString */;
395 val* var102 /* : String */;
396 val* var103 /* : nullable Int */;
397 val* var104 /* : nullable Int */;
398 val* var105 /* : nullable Bool */;
399 val* var106 /* : nullable Bool */;
400 val* var107 /* : Template */;
401 val* var109 /* : Template */;
402 static val* varonce110;
403 val* var111 /* : String */;
404 char* var112 /* : CString */;
405 val* var113 /* : String */;
406 val* var114 /* : nullable Int */;
407 val* var115 /* : nullable Int */;
408 val* var116 /* : nullable Bool */;
409 val* var117 /* : nullable Bool */;
410 val* var118 /* : Template */;
411 val* var120 /* : Template */;
412 static val* varonce121;
413 val* var122 /* : String */;
414 char* var123 /* : CString */;
415 val* var124 /* : String */;
416 val* var125 /* : nullable Int */;
417 val* var126 /* : nullable Int */;
418 val* var127 /* : nullable Bool */;
419 val* var128 /* : nullable Bool */;
420 val* var129 /* : ANodes[AClassdef] */;
421 val* var131 /* : ANodes[AClassdef] */;
422 val* var_132 /* var : ANodes[AClassdef] */;
423 val* var133 /* : Iterator[ANode] */;
424 val* var_134 /* var : Iterator[AClassdef] */;
425 short int var135 /* : Bool */;
426 val* var137 /* : nullable Object */;
427 val* var_nclassdef /* var nclassdef: AClassdef */;
428 short int var138 /* : Bool */;
429 short int var139 /* : Bool */;
430 int cltype;
431 int idtype;
432 short int var_140 /* var : Bool */;
433 val* var141 /* : nullable AExternCodeBlock */;
434 val* var143 /* : nullable AExternCodeBlock */;
435 short int var144 /* : Bool */;
436 short int var145 /* : Bool */;
437 short int var147 /* : Bool */;
438 short int var148 /* : Bool */;
439 val* var150 /* : nullable AExternCodeBlock */;
440 val* var152 /* : nullable AExternCodeBlock */;
441 val* var153 /* : nullable FFILanguage */;
442 val* var155 /* : nullable FFILanguage */;
443 val* var_language156 /* var language: nullable FFILanguage */;
444 short int var157 /* : Bool */;
445 short int var158 /* : Bool */;
446 short int var160 /* : Bool */;
447 short int var161 /* : Bool */;
448 val* var162 /* : HashSet[FFILanguage] */;
449 val* var164 /* : HashSet[FFILanguage] */;
450 val* var165 /* : nullable AExternCodeBlock */;
451 val* var167 /* : nullable AExternCodeBlock */;
452 val* var168 /* : nullable FFILanguage */;
453 val* var170 /* : nullable FFILanguage */;
454 val* var171 /* : nullable AExternCodeBlock */;
455 val* var173 /* : nullable AExternCodeBlock */;
456 val* var_block175 /* var block: AExternCodeBlock */;
457 val* var_m /* var m: AClassdef */;
458 val* var_ecc /* var ecc: CCompilationUnit */;
459 val* var_mmodule176 /* var mmodule: MModule */;
460 {
461 { /* Inline loader$AModule$mmodule (self) on <self:AModule> */
462 var2 = self->attrs[COLOR_nitc__loader__AModule___mmodule].val; /* _mmodule on <self:AModule> */
463 var = var2;
464 RET_LABEL1:(void)0;
465 }
466 }
467 var_mmodule = var;
468 if (var_mmodule == NULL) {
469 var4 = 1; /* is null */
470 } else {
471 var4 = 0; /* arg is null but recv is not */
472 }
473 if (0) {
474 { /* Inline kernel$Object$== (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
475 var_other = ((val*)NULL);
476 {
477 { /* Inline kernel$Object$is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
478 var9 = var_mmodule == var_other;
479 var7 = var9;
480 goto RET_LABEL8;
481 RET_LABEL8:(void)0;
482 }
483 }
484 var5 = var7;
485 goto RET_LABEL6;
486 RET_LABEL6:(void)0;
487 }
488 var4 = var5;
489 }
490 var_ = var4;
491 if (var4){
492 var3 = var_;
493 } else {
494 {
495 { /* Inline light_ffi$MModule$ffi_ccu (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
496 var12 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <var_mmodule:nullable MModule(MModule)> */
497 var10 = var12;
498 RET_LABEL11:(void)0;
499 }
500 }
501 if (var10 == NULL) {
502 var13 = 0; /* is null */
503 } else {
504 var13 = 1; /* arg is null and recv is not */
505 }
506 if (0) {
507 { /* Inline kernel$Object$!= (var10,((val*)NULL)) on <var10:nullable CCompilationUnit> */
508 var_other16 = ((val*)NULL);
509 {
510 var17 = ((short int(*)(val* self, val* p0))(var10->class->vft[COLOR_core__kernel__Object___61d_61d]))(var10, var_other16); /* == on <var10:nullable CCompilationUnit(CCompilationUnit)>*/
511 }
512 var18 = !var17;
513 var14 = var18;
514 goto RET_LABEL15;
515 RET_LABEL15:(void)0;
516 }
517 var13 = var14;
518 }
519 var3 = var13;
520 }
521 if (var3){
522 goto RET_LABEL;
523 } else {
524 }
525 var19 = NEW_nitc__CCompilationUnit(&type_nitc__CCompilationUnit);
526 {
527 { /* Inline kernel$Object$init (var19) on <var19:CCompilationUnit> */
528 RET_LABEL20:(void)0;
529 }
530 }
531 var_ffi_ccu = var19;
532 {
533 { /* Inline light_ffi$MModule$ffi_ccu= (var_mmodule,var_ffi_ccu) on <var_mmodule:nullable MModule(MModule)> */
534 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val = var_ffi_ccu; /* _ffi_ccu on <var_mmodule:nullable MModule(MModule)> */
535 RET_LABEL21:(void)0;
536 }
537 }
538 {
539 { /* Inline parser_nodes$AModule$n_extern_code_blocks (self) on <self:AModule> */
540 var24 = self->attrs[COLOR_nitc__parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
541 if (unlikely(var24 == NULL)) {
542 if(catchStack.cursor >= 0){
543 longjmp(catchStack.envs[catchStack.cursor], 1);
544 }
545 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
546 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1122);
547 fatal_exit(1);
548 }
549 var22 = var24;
550 RET_LABEL23:(void)0;
551 }
552 }
553 var_25 = var22;
554 {
555 var26 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_25);
556 }
557 var_27 = var26;
558 for(;;) {
559 {
560 var28 = ((short int(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_27); /* is_ok on <var_27:Iterator[AExternCodeBlock]>*/
561 }
562 if (var28){
563 } else {
564 goto BREAK_label;
565 }
566 {
567 var29 = ((val*(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_27); /* item on <var_27:Iterator[AExternCodeBlock]>*/
568 }
569 var_block = var29;
570 {
571 { /* Inline light_ffi_base$AExternCodeBlock$language (var_block) on <var_block:AExternCodeBlock> */
572 var32 = var_block->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var_block:AExternCodeBlock> */
573 var30 = var32;
574 RET_LABEL31:(void)0;
575 }
576 }
577 var_language = var30;
578 if (var_language == NULL) {
579 var33 = 0; /* is null */
580 } else {
581 var33 = 1; /* arg is null and recv is not */
582 }
583 if (0) {
584 { /* Inline kernel$Object$!= (var_language,((val*)NULL)) on <var_language:nullable FFILanguage> */
585 var_other16 = ((val*)NULL);
586 {
587 var36 = ((short int(*)(val* self, val* p0))(var_language->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language, var_other16); /* == on <var_language:nullable FFILanguage(FFILanguage)>*/
588 }
589 var37 = !var36;
590 var34 = var37;
591 goto RET_LABEL35;
592 RET_LABEL35:(void)0;
593 }
594 var33 = var34;
595 }
596 if (unlikely(!var33)) {
597 if(catchStack.cursor >= 0){
598 longjmp(catchStack.envs[catchStack.cursor], 1);
599 }
600 PRINT_ERROR("Runtime error: %s", "Assert failed");
601 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 88);
602 fatal_exit(1);
603 }
604 {
605 { /* Inline light_ffi$MModule$present_languages (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
606 var40 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:nullable MModule(MModule)> */
607 if (unlikely(var40 == NULL)) {
608 if(catchStack.cursor >= 0){
609 longjmp(catchStack.envs[catchStack.cursor], 1);
610 }
611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
612 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
613 fatal_exit(1);
614 }
615 var38 = var40;
616 RET_LABEL39:(void)0;
617 }
618 }
619 {
620 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var38, var_language); /* Direct call hash_collection$HashSet$add on <var38:HashSet[FFILanguage]>*/
621 }
622 {
623 nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_module_block(var_language, var_block, var_ffi_ccu, var_mmodule); /* Direct call light_c$CLanguage$compile_module_block on <var_language:nullable FFILanguage(FFILanguage)>*/
624 }
625 {
626 ((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_27); /* next on <var_27:Iterator[AExternCodeBlock]>*/
627 }
628 }
629 BREAK_label: (void)0;
630 {
631 ((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_27); /* finish on <var_27:Iterator[AExternCodeBlock]>*/
632 }
633 {
634 { /* Inline c_tools$CCompilationUnit$header_c_base (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
635 var43 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_c_base].val; /* _header_c_base on <var_ffi_ccu:CCompilationUnit> */
636 if (unlikely(var43 == NULL)) {
637 if(catchStack.cursor >= 0){
638 longjmp(catchStack.envs[catchStack.cursor], 1);
639 }
640 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_base");
641 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 24);
642 fatal_exit(1);
643 }
644 var41 = var43;
645 RET_LABEL42:(void)0;
646 }
647 }
648 if (unlikely(varonce==NULL)) {
649 var44 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
650 if (likely(varonce45!=NULL)) {
651 var46 = varonce45;
652 } else {
653 var47 = "#include \"";
654 var49 = (val*)(10l<<2|1);
655 var50 = (val*)(10l<<2|1);
656 var51 = (val*)((long)(0)<<2|3);
657 var52 = (val*)((long)(0)<<2|3);
658 var48 = core__flat___CString___to_s_unsafe(var47, var49, var50, var51, var52);
659 var46 = var48;
660 varonce45 = var46;
661 }
662 ((struct instance_core__NativeArray*)var44)->values[0]=var46;
663 if (likely(varonce53!=NULL)) {
664 var54 = varonce53;
665 } else {
666 var55 = "._nitni.h\"\n";
667 var57 = (val*)(11l<<2|1);
668 var58 = (val*)(11l<<2|1);
669 var59 = (val*)((long)(0)<<2|3);
670 var60 = (val*)((long)(0)<<2|3);
671 var56 = core__flat___CString___to_s_unsafe(var55, var57, var58, var59, var60);
672 var54 = var56;
673 varonce53 = var54;
674 }
675 ((struct instance_core__NativeArray*)var44)->values[2]=var54;
676 } else {
677 var44 = varonce;
678 varonce = NULL;
679 }
680 {
681 var61 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
682 }
683 ((struct instance_core__NativeArray*)var44)->values[1]=var61;
684 {
685 var62 = ((val*(*)(val* self))(var44->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var44); /* native_to_s on <var44:NativeArray[String]>*/
686 }
687 varonce = var44;
688 {
689 template___template__Template___add(var41, var62); /* Direct call template$Template$add on <var41:Template>*/
690 }
691 {
692 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
693 var65 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
694 if (unlikely(var65 == NULL)) {
695 if(catchStack.cursor >= 0){
696 longjmp(catchStack.envs[catchStack.cursor], 1);
697 }
698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
699 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
700 fatal_exit(1);
701 }
702 var63 = var65;
703 RET_LABEL64:(void)0;
704 }
705 }
706 if (likely(varonce66!=NULL)) {
707 var67 = varonce66;
708 } else {
709 var68 = "#ifdef ANDROID\n";
710 var70 = (val*)(15l<<2|1);
711 var71 = (val*)(15l<<2|1);
712 var72 = (val*)((long)(0)<<2|3);
713 var73 = (val*)((long)(0)<<2|3);
714 var69 = core__flat___CString___to_s_unsafe(var68, var70, var71, var72, var73);
715 var67 = var69;
716 varonce66 = var67;
717 }
718 {
719 template___template__Template___add(var63, var67); /* Direct call template$Template$add on <var63:Template>*/
720 }
721 {
722 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
723 var76 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
724 if (unlikely(var76 == NULL)) {
725 if(catchStack.cursor >= 0){
726 longjmp(catchStack.envs[catchStack.cursor], 1);
727 }
728 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
729 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
730 fatal_exit(1);
731 }
732 var74 = var76;
733 RET_LABEL75:(void)0;
734 }
735 }
736 if (likely(varonce77!=NULL)) {
737 var78 = varonce77;
738 } else {
739 var79 = "\t#include <android/log.h>\n";
740 var81 = (val*)(26l<<2|1);
741 var82 = (val*)(26l<<2|1);
742 var83 = (val*)((long)(0)<<2|3);
743 var84 = (val*)((long)(0)<<2|3);
744 var80 = core__flat___CString___to_s_unsafe(var79, var81, var82, var83, var84);
745 var78 = var80;
746 varonce77 = var78;
747 }
748 {
749 template___template__Template___add(var74, var78); /* Direct call template$Template$add on <var74:Template>*/
750 }
751 {
752 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
753 var87 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
754 if (unlikely(var87 == NULL)) {
755 if(catchStack.cursor >= 0){
756 longjmp(catchStack.envs[catchStack.cursor], 1);
757 }
758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
759 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
760 fatal_exit(1);
761 }
762 var85 = var87;
763 RET_LABEL86:(void)0;
764 }
765 }
766 if (likely(varonce88!=NULL)) {
767 var89 = varonce88;
768 } else {
769 var90 = "\t#define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n";
770 var92 = (val*)(90l<<2|1);
771 var93 = (val*)(90l<<2|1);
772 var94 = (val*)((long)(0)<<2|3);
773 var95 = (val*)((long)(0)<<2|3);
774 var91 = core__flat___CString___to_s_unsafe(var90, var92, var93, var94, var95);
775 var89 = var91;
776 varonce88 = var89;
777 }
778 {
779 template___template__Template___add(var85, var89); /* Direct call template$Template$add on <var85:Template>*/
780 }
781 {
782 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
783 var98 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
784 if (unlikely(var98 == NULL)) {
785 if(catchStack.cursor >= 0){
786 longjmp(catchStack.envs[catchStack.cursor], 1);
787 }
788 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
789 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
790 fatal_exit(1);
791 }
792 var96 = var98;
793 RET_LABEL97:(void)0;
794 }
795 }
796 if (likely(varonce99!=NULL)) {
797 var100 = varonce99;
798 } else {
799 var101 = "#else\n";
800 var103 = (val*)(6l<<2|1);
801 var104 = (val*)(6l<<2|1);
802 var105 = (val*)((long)(0)<<2|3);
803 var106 = (val*)((long)(0)<<2|3);
804 var102 = core__flat___CString___to_s_unsafe(var101, var103, var104, var105, var106);
805 var100 = var102;
806 varonce99 = var100;
807 }
808 {
809 template___template__Template___add(var96, var100); /* Direct call template$Template$add on <var96:Template>*/
810 }
811 {
812 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
813 var109 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
814 if (unlikely(var109 == NULL)) {
815 if(catchStack.cursor >= 0){
816 longjmp(catchStack.envs[catchStack.cursor], 1);
817 }
818 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
819 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
820 fatal_exit(1);
821 }
822 var107 = var109;
823 RET_LABEL108:(void)0;
824 }
825 }
826 if (likely(varonce110!=NULL)) {
827 var111 = varonce110;
828 } else {
829 var112 = "\t#define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n";
830 var114 = (val*)(55l<<2|1);
831 var115 = (val*)(55l<<2|1);
832 var116 = (val*)((long)(0)<<2|3);
833 var117 = (val*)((long)(0)<<2|3);
834 var113 = core__flat___CString___to_s_unsafe(var112, var114, var115, var116, var117);
835 var111 = var113;
836 varonce110 = var111;
837 }
838 {
839 template___template__Template___add(var107, var111); /* Direct call template$Template$add on <var107:Template>*/
840 }
841 {
842 { /* Inline c_tools$CCompilationUnit$body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
843 var120 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
844 if (unlikely(var120 == NULL)) {
845 if(catchStack.cursor >= 0){
846 longjmp(catchStack.envs[catchStack.cursor], 1);
847 }
848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
849 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
850 fatal_exit(1);
851 }
852 var118 = var120;
853 RET_LABEL119:(void)0;
854 }
855 }
856 if (likely(varonce121!=NULL)) {
857 var122 = varonce121;
858 } else {
859 var123 = "#endif\n";
860 var125 = (val*)(7l<<2|1);
861 var126 = (val*)(7l<<2|1);
862 var127 = (val*)((long)(0)<<2|3);
863 var128 = (val*)((long)(0)<<2|3);
864 var124 = core__flat___CString___to_s_unsafe(var123, var125, var126, var127, var128);
865 var122 = var124;
866 varonce121 = var122;
867 }
868 {
869 template___template__Template___add(var118, var122); /* Direct call template$Template$add on <var118:Template>*/
870 }
871 {
872 { /* Inline parser_nodes$AModule$n_classdefs (self) on <self:AModule> */
873 var131 = self->attrs[COLOR_nitc__parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
874 if (unlikely(var131 == NULL)) {
875 if(catchStack.cursor >= 0){
876 longjmp(catchStack.envs[catchStack.cursor], 1);
877 }
878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
879 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1125);
880 fatal_exit(1);
881 }
882 var129 = var131;
883 RET_LABEL130:(void)0;
884 }
885 }
886 var_132 = var129;
887 {
888 var133 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_132);
889 }
890 var_134 = var133;
891 for(;;) {
892 {
893 var135 = ((short int(*)(val* self))((((long)var_134&3)?class_info[((long)var_134&3)]:var_134->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_134); /* is_ok on <var_134:Iterator[AClassdef]>*/
894 }
895 if (var135){
896 } else {
897 goto BREAK_label136;
898 }
899 {
900 var137 = ((val*(*)(val* self))((((long)var_134&3)?class_info[((long)var_134&3)]:var_134->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_134); /* item on <var_134:Iterator[AClassdef]>*/
901 }
902 var_nclassdef = var137;
903 /* <var_nclassdef:AClassdef> isa AStdClassdef */
904 cltype = type_nitc__AStdClassdef.color;
905 idtype = type_nitc__AStdClassdef.id;
906 if(cltype >= var_nclassdef->type->table_size) {
907 var139 = 0;
908 } else {
909 var139 = var_nclassdef->type->type_table[cltype] == idtype;
910 }
911 var_140 = var139;
912 if (var139){
913 {
914 { /* Inline parser_nodes$AStdClassdef$n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
915 var143 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
916 var141 = var143;
917 RET_LABEL142:(void)0;
918 }
919 }
920 if (var141 == NULL) {
921 var144 = 0; /* is null */
922 } else {
923 var144 = 1; /* arg is null and recv is not */
924 }
925 if (0) {
926 { /* Inline kernel$Object$!= (var141,((val*)NULL)) on <var141:nullable AExternCodeBlock> */
927 var_other16 = ((val*)NULL);
928 {
929 var147 = ((short int(*)(val* self, val* p0))(var141->class->vft[COLOR_core__kernel__Object___61d_61d]))(var141, var_other16); /* == on <var141:nullable AExternCodeBlock(AExternCodeBlock)>*/
930 }
931 var148 = !var147;
932 var145 = var148;
933 goto RET_LABEL146;
934 RET_LABEL146:(void)0;
935 }
936 var144 = var145;
937 }
938 var138 = var144;
939 } else {
940 var138 = var_140;
941 }
942 if (var138){
943 {
944 { /* Inline light_ffi$MModule$uses_ffi= (var_mmodule,1) on <var_mmodule:nullable MModule(MModule)> */
945 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:nullable MModule(MModule)> */
946 RET_LABEL149:(void)0;
947 }
948 }
949 {
950 { /* Inline parser_nodes$AStdClassdef$n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
951 var152 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
952 var150 = var152;
953 RET_LABEL151:(void)0;
954 }
955 }
956 if (var150 == NULL) {
957 if(catchStack.cursor >= 0){
958 longjmp(catchStack.envs[catchStack.cursor], 1);
959 }
960 PRINT_ERROR("Runtime error: %s", "Receiver is null");
961 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 106);
962 fatal_exit(1);
963 } else {
964 { /* Inline light_ffi_base$AExternCodeBlock$language (var150) on <var150:nullable AExternCodeBlock> */
965 if (unlikely(var150 == NULL)) {
966 if(catchStack.cursor >= 0){
967 longjmp(catchStack.envs[catchStack.cursor], 1);
968 }
969 PRINT_ERROR("Runtime error: %s", "Receiver is null");
970 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
971 fatal_exit(1);
972 }
973 var155 = var150->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var150:nullable AExternCodeBlock> */
974 var153 = var155;
975 RET_LABEL154:(void)0;
976 }
977 }
978 var_language156 = var153;
979 if (var_language156 == NULL) {
980 var157 = 0; /* is null */
981 } else {
982 var157 = 1; /* arg is null and recv is not */
983 }
984 if (0) {
985 { /* Inline kernel$Object$!= (var_language156,((val*)NULL)) on <var_language156:nullable FFILanguage> */
986 var_other16 = ((val*)NULL);
987 {
988 var160 = ((short int(*)(val* self, val* p0))(var_language156->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language156, var_other16); /* == on <var_language156:nullable FFILanguage(FFILanguage)>*/
989 }
990 var161 = !var160;
991 var158 = var161;
992 goto RET_LABEL159;
993 RET_LABEL159:(void)0;
994 }
995 var157 = var158;
996 }
997 if (unlikely(!var157)) {
998 if(catchStack.cursor >= 0){
999 longjmp(catchStack.envs[catchStack.cursor], 1);
1000 }
1001 PRINT_ERROR("Runtime error: %s", "Assert failed");
1002 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 107);
1003 fatal_exit(1);
1004 }
1005 {
1006 { /* Inline light_ffi$MModule$present_languages (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
1007 var164 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:nullable MModule(MModule)> */
1008 if (unlikely(var164 == NULL)) {
1009 if(catchStack.cursor >= 0){
1010 longjmp(catchStack.envs[catchStack.cursor], 1);
1011 }
1012 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
1013 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
1014 fatal_exit(1);
1015 }
1016 var162 = var164;
1017 RET_LABEL163:(void)0;
1018 }
1019 }
1020 {
1021 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var162, var_language156); /* Direct call hash_collection$HashSet$add on <var162:HashSet[FFILanguage]>*/
1022 }
1023 {
1024 { /* Inline parser_nodes$AStdClassdef$n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
1025 var167 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
1026 var165 = var167;
1027 RET_LABEL166:(void)0;
1028 }
1029 }
1030 if (var165 == NULL) {
1031 if(catchStack.cursor >= 0){
1032 longjmp(catchStack.envs[catchStack.cursor], 1);
1033 }
1034 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1035 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 109);
1036 fatal_exit(1);
1037 } else {
1038 { /* Inline light_ffi_base$AExternCodeBlock$language (var165) on <var165:nullable AExternCodeBlock> */
1039 if (unlikely(var165 == NULL)) {
1040 if(catchStack.cursor >= 0){
1041 longjmp(catchStack.envs[catchStack.cursor], 1);
1042 }
1043 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1044 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
1045 fatal_exit(1);
1046 }
1047 var170 = var165->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var165:nullable AExternCodeBlock> */
1048 var168 = var170;
1049 RET_LABEL169:(void)0;
1050 }
1051 }
1052 {
1053 { /* Inline parser_nodes$AStdClassdef$n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
1054 var173 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
1055 var171 = var173;
1056 RET_LABEL172:(void)0;
1057 }
1058 }
1059 if (unlikely(var171 == NULL)) {
1060 if(catchStack.cursor >= 0){
1061 longjmp(catchStack.envs[catchStack.cursor], 1);
1062 }
1063 PRINT_ERROR("Runtime error: %s", "Cast failed");
1064 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 110);
1065 fatal_exit(1);
1066 }
1067 if (var168 == NULL) {
1068 if(catchStack.cursor >= 0){
1069 longjmp(catchStack.envs[catchStack.cursor], 1);
1070 }
1071 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1072 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 109);
1073 fatal_exit(1);
1074 } else {
1075 { /* Inline light_c$CLanguage$compile_extern_class (var168,var171,var_nclassdef,var_ffi_ccu,var_mmodule) on <var168:nullable FFILanguage> */
1076 var_block175 = var171;
1077 var_m = var_nclassdef;
1078 var_ecc = var_ffi_ccu;
1079 var_mmodule176 = var_mmodule;
1080 RET_LABEL174:(void)0;
1081 }
1082 }
1083 } else {
1084 }
1085 {
1086 ((void(*)(val* self))((((long)var_134&3)?class_info[((long)var_134&3)]:var_134->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_134); /* next on <var_134:Iterator[AClassdef]>*/
1087 }
1088 }
1089 BREAK_label136: (void)0;
1090 {
1091 ((void(*)(val* self))((((long)var_134&3)?class_info[((long)var_134&3)]:var_134->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_134); /* finish on <var_134:Iterator[AClassdef]>*/
1092 }
1093 RET_LABEL:;
1094 }
1095 /* method light_ffi$AMethPropdef$compile_ffi_method for (self: AMethPropdef, MModule) */
1096 void nitc__light_ffi___AMethPropdef___compile_ffi_method(val* self, val* p0) {
1097 val* var_mmodule /* var mmodule: MModule */;
1098 val* var /* : nullable AExternCodeBlock */;
1099 val* var2 /* : nullable AExternCodeBlock */;
1100 short int var3 /* : Bool */;
1101 short int var4 /* : Bool */;
1102 val* var_other /* var other: nullable Object */;
1103 short int var6 /* : Bool */;
1104 short int var7 /* : Bool */;
1105 val* var8 /* : HashSet[AMethPropdef] */;
1106 val* var10 /* : HashSet[AMethPropdef] */;
1107 short int var11 /* : Bool */;
1108 val* var12 /* : HashSet[AMethPropdef] */;
1109 val* var14 /* : HashSet[AMethPropdef] */;
1110 val* var15 /* : nullable AExternCodeBlock */;
1111 val* var17 /* : nullable AExternCodeBlock */;
1112 val* var18 /* : nullable FFILanguage */;
1113 val* var20 /* : nullable FFILanguage */;
1114 val* var_language /* var language: nullable FFILanguage */;
1115 short int var21 /* : Bool */;
1116 short int var22 /* : Bool */;
1117 short int var24 /* : Bool */;
1118 short int var25 /* : Bool */;
1119 val* var26 /* : HashSet[FFILanguage] */;
1120 val* var28 /* : HashSet[FFILanguage] */;
1121 val* var29 /* : nullable AExternCodeBlock */;
1122 val* var31 /* : nullable AExternCodeBlock */;
1123 val* var32 /* : nullable FFILanguage */;
1124 val* var34 /* : nullable FFILanguage */;
1125 val* var35 /* : nullable AExternCodeBlock */;
1126 val* var37 /* : nullable AExternCodeBlock */;
1127 val* var38 /* : nullable CCompilationUnit */;
1128 val* var40 /* : nullable CCompilationUnit */;
1129 var_mmodule = p0;
1130 {
1131 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
1132 var2 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1133 var = var2;
1134 RET_LABEL1:(void)0;
1135 }
1136 }
1137 if (var == NULL) {
1138 var3 = 0; /* is null */
1139 } else {
1140 var3 = 1; /* arg is null and recv is not */
1141 }
1142 if (0) {
1143 { /* Inline kernel$Object$!= (var,((val*)NULL)) on <var:nullable AExternCodeBlock> */
1144 var_other = ((val*)NULL);
1145 {
1146 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable AExternCodeBlock(AExternCodeBlock)>*/
1147 }
1148 var7 = !var6;
1149 var4 = var7;
1150 goto RET_LABEL5;
1151 RET_LABEL5:(void)0;
1152 }
1153 var3 = var4;
1154 }
1155 if (unlikely(!var3)) {
1156 if(catchStack.cursor >= 0){
1157 longjmp(catchStack.envs[catchStack.cursor], 1);
1158 }
1159 PRINT_ERROR("Runtime error: %s", "Assert failed");
1160 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 120);
1161 fatal_exit(1);
1162 }
1163 {
1164 { /* Inline light_ffi$MModule$compiled_ffi_methods (var_mmodule) on <var_mmodule:MModule> */
1165 var10 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <var_mmodule:MModule> */
1166 if (unlikely(var10 == NULL)) {
1167 if(catchStack.cursor >= 0){
1168 longjmp(catchStack.envs[catchStack.cursor], 1);
1169 }
1170 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
1171 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
1172 fatal_exit(1);
1173 }
1174 var8 = var10;
1175 RET_LABEL9:(void)0;
1176 }
1177 }
1178 {
1179 var11 = core___core__HashSet___core__abstract_collection__Collection__has(var8, self);
1180 }
1181 if (var11){
1182 goto RET_LABEL;
1183 } else {
1184 }
1185 {
1186 { /* Inline light_ffi$MModule$compiled_ffi_methods (var_mmodule) on <var_mmodule:MModule> */
1187 var14 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <var_mmodule:MModule> */
1188 if (unlikely(var14 == NULL)) {
1189 if(catchStack.cursor >= 0){
1190 longjmp(catchStack.envs[catchStack.cursor], 1);
1191 }
1192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
1193 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
1194 fatal_exit(1);
1195 }
1196 var12 = var14;
1197 RET_LABEL13:(void)0;
1198 }
1199 }
1200 {
1201 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var12, self); /* Direct call hash_collection$HashSet$add on <var12:HashSet[AMethPropdef]>*/
1202 }
1203 {
1204 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
1205 var17 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1206 var15 = var17;
1207 RET_LABEL16:(void)0;
1208 }
1209 }
1210 if (var15 == NULL) {
1211 if(catchStack.cursor >= 0){
1212 longjmp(catchStack.envs[catchStack.cursor], 1);
1213 }
1214 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1215 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 125);
1216 fatal_exit(1);
1217 } else {
1218 { /* Inline light_ffi_base$AExternCodeBlock$language (var15) on <var15:nullable AExternCodeBlock> */
1219 if (unlikely(var15 == NULL)) {
1220 if(catchStack.cursor >= 0){
1221 longjmp(catchStack.envs[catchStack.cursor], 1);
1222 }
1223 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1224 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
1225 fatal_exit(1);
1226 }
1227 var20 = var15->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var15:nullable AExternCodeBlock> */
1228 var18 = var20;
1229 RET_LABEL19:(void)0;
1230 }
1231 }
1232 var_language = var18;
1233 if (var_language == NULL) {
1234 var21 = 0; /* is null */
1235 } else {
1236 var21 = 1; /* arg is null and recv is not */
1237 }
1238 if (0) {
1239 { /* Inline kernel$Object$!= (var_language,((val*)NULL)) on <var_language:nullable FFILanguage> */
1240 var_other = ((val*)NULL);
1241 {
1242 var24 = ((short int(*)(val* self, val* p0))(var_language->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language, var_other); /* == on <var_language:nullable FFILanguage(FFILanguage)>*/
1243 }
1244 var25 = !var24;
1245 var22 = var25;
1246 goto RET_LABEL23;
1247 RET_LABEL23:(void)0;
1248 }
1249 var21 = var22;
1250 }
1251 if (unlikely(!var21)) {
1252 if(catchStack.cursor >= 0){
1253 longjmp(catchStack.envs[catchStack.cursor], 1);
1254 }
1255 PRINT_ERROR("Runtime error: %s", "Assert failed");
1256 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 126);
1257 fatal_exit(1);
1258 }
1259 {
1260 { /* Inline light_ffi$MModule$present_languages (var_mmodule) on <var_mmodule:MModule> */
1261 var28 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:MModule> */
1262 if (unlikely(var28 == NULL)) {
1263 if(catchStack.cursor >= 0){
1264 longjmp(catchStack.envs[catchStack.cursor], 1);
1265 }
1266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
1267 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
1268 fatal_exit(1);
1269 }
1270 var26 = var28;
1271 RET_LABEL27:(void)0;
1272 }
1273 }
1274 {
1275 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var26, var_language); /* Direct call hash_collection$HashSet$add on <var26:HashSet[FFILanguage]>*/
1276 }
1277 {
1278 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
1279 var31 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1280 var29 = var31;
1281 RET_LABEL30:(void)0;
1282 }
1283 }
1284 if (var29 == NULL) {
1285 if(catchStack.cursor >= 0){
1286 longjmp(catchStack.envs[catchStack.cursor], 1);
1287 }
1288 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1289 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 128);
1290 fatal_exit(1);
1291 } else {
1292 { /* Inline light_ffi_base$AExternCodeBlock$language (var29) on <var29:nullable AExternCodeBlock> */
1293 if (unlikely(var29 == NULL)) {
1294 if(catchStack.cursor >= 0){
1295 longjmp(catchStack.envs[catchStack.cursor], 1);
1296 }
1297 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1298 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
1299 fatal_exit(1);
1300 }
1301 var34 = var29->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var29:nullable AExternCodeBlock> */
1302 var32 = var34;
1303 RET_LABEL33:(void)0;
1304 }
1305 }
1306 {
1307 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
1308 var37 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1309 var35 = var37;
1310 RET_LABEL36:(void)0;
1311 }
1312 }
1313 if (unlikely(var35 == NULL)) {
1314 if(catchStack.cursor >= 0){
1315 longjmp(catchStack.envs[catchStack.cursor], 1);
1316 }
1317 PRINT_ERROR("Runtime error: %s", "Cast failed");
1318 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 129);
1319 fatal_exit(1);
1320 }
1321 {
1322 { /* Inline light_ffi$MModule$ffi_ccu (var_mmodule) on <var_mmodule:MModule> */
1323 var40 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <var_mmodule:MModule> */
1324 var38 = var40;
1325 RET_LABEL39:(void)0;
1326 }
1327 }
1328 if (unlikely(var38 == NULL)) {
1329 if(catchStack.cursor >= 0){
1330 longjmp(catchStack.envs[catchStack.cursor], 1);
1331 }
1332 PRINT_ERROR("Runtime error: %s", "Cast failed");
1333 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 129);
1334 fatal_exit(1);
1335 }
1336 if (var32 == NULL) {
1337 if(catchStack.cursor >= 0){
1338 longjmp(catchStack.envs[catchStack.cursor], 1);
1339 }
1340 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1341 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 128);
1342 fatal_exit(1);
1343 } else {
1344 nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_extern_method(var32, var35, self, var38, var_mmodule); /* Direct call light_c$CLanguage$compile_extern_method on <var32:nullable FFILanguage>*/
1345 }
1346 RET_LABEL:;
1347 }