Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__light_c.sep.1.c
1 #include "nitc__light_c.sep.0.h"
2 /* method light_c$CLanguage$identify_language for (self: CLanguage, AExternCodeBlock): Bool */
3 short int nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__identify_language(val* self, val* p0) {
4 short int var /* : Bool */;
5 val* var_n /* var n: AExternCodeBlock */;
6 short int var1 /* : Bool */;
7 var_n = p0;
8 {
9 var1 = nitc__light_c___AExternCodeBlock___is_c(var_n);
10 }
11 var = var1;
12 goto RET_LABEL;
13 RET_LABEL:;
14 return var;
15 }
16 /* method light_c$CLanguage$compile_module_block for (self: CLanguage, AExternCodeBlock, CCompilationUnit, MModule) */
17 void nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_module_block(val* self, val* p0, val* p1, val* p2) {
18 val* var_block /* var block: AExternCodeBlock */;
19 val* var_ecc /* var ecc: CCompilationUnit */;
20 val* var_mmodule /* var mmodule: MModule */;
21 short int var /* : Bool */;
22 val* var1 /* : Template */;
23 val* var3 /* : Template */;
24 val* var4 /* : Location */;
25 val* var6 /* : Location */;
26 val* var7 /* : String */;
27 val* var8 /* : Template */;
28 val* var10 /* : Template */;
29 static val* varonce;
30 val* var11 /* : String */;
31 char* var12 /* : CString */;
32 val* var13 /* : String */;
33 val* var14 /* : nullable Int */;
34 val* var15 /* : nullable Int */;
35 val* var16 /* : nullable Bool */;
36 val* var17 /* : nullable Bool */;
37 val* var18 /* : Template */;
38 val* var20 /* : Template */;
39 val* var21 /* : String */;
40 short int var22 /* : Bool */;
41 val* var23 /* : Template */;
42 val* var25 /* : Template */;
43 val* var26 /* : Location */;
44 val* var28 /* : Location */;
45 val* var29 /* : String */;
46 val* var30 /* : Template */;
47 val* var32 /* : Template */;
48 static val* varonce33;
49 val* var34 /* : String */;
50 char* var35 /* : CString */;
51 val* var36 /* : String */;
52 val* var37 /* : nullable Int */;
53 val* var38 /* : nullable Int */;
54 val* var39 /* : nullable Bool */;
55 val* var40 /* : nullable Bool */;
56 val* var41 /* : Template */;
57 val* var43 /* : Template */;
58 val* var44 /* : String */;
59 var_block = p0;
60 var_ecc = p1;
61 var_mmodule = p2;
62 {
63 var = nitc__light_c___AExternCodeBlock___is_c_header(var_block);
64 }
65 if (var){
66 {
67 { /* Inline c_tools$CCompilationUnit$header_custom (var_ecc) on <var_ecc:CCompilationUnit> */
68 var3 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_custom].val; /* _header_custom on <var_ecc:CCompilationUnit> */
69 if (unlikely(var3 == NULL)) {
70 if(catchStack.cursor >= 0){
71 longjmp(catchStack.envs[catchStack.cursor], 1);
72 }
73 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_custom");
74 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 28);
75 fatal_exit(1);
76 }
77 var1 = var3;
78 RET_LABEL2:(void)0;
79 }
80 }
81 {
82 { /* Inline parser_nodes$ANode$location (var_block) on <var_block:AExternCodeBlock> */
83 var6 = var_block->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_block:AExternCodeBlock> */
84 if (unlikely(var6 == NULL)) {
85 if(catchStack.cursor >= 0){
86 longjmp(catchStack.envs[catchStack.cursor], 1);
87 }
88 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
89 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 25);
90 fatal_exit(1);
91 }
92 var4 = var6;
93 RET_LABEL5:(void)0;
94 }
95 }
96 {
97 var7 = nitc__light_c___Location___as_line_pragma(var4);
98 }
99 {
100 template___template__Template___add(var1, var7); /* Direct call template$Template$add on <var1:Template>*/
101 }
102 {
103 { /* Inline c_tools$CCompilationUnit$header_custom (var_ecc) on <var_ecc:CCompilationUnit> */
104 var10 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_custom].val; /* _header_custom on <var_ecc:CCompilationUnit> */
105 if (unlikely(var10 == NULL)) {
106 if(catchStack.cursor >= 0){
107 longjmp(catchStack.envs[catchStack.cursor], 1);
108 }
109 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_custom");
110 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 28);
111 fatal_exit(1);
112 }
113 var8 = var10;
114 RET_LABEL9:(void)0;
115 }
116 }
117 if (likely(varonce!=NULL)) {
118 var11 = varonce;
119 } else {
120 var12 = "\n";
121 var14 = (val*)(1l<<2|1);
122 var15 = (val*)(1l<<2|1);
123 var16 = (val*)((long)(0)<<2|3);
124 var17 = (val*)((long)(0)<<2|3);
125 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
126 var11 = var13;
127 varonce = var11;
128 }
129 {
130 template___template__Template___add(var8, var11); /* Direct call template$Template$add on <var8:Template>*/
131 }
132 {
133 { /* Inline c_tools$CCompilationUnit$header_custom (var_ecc) on <var_ecc:CCompilationUnit> */
134 var20 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_custom].val; /* _header_custom on <var_ecc:CCompilationUnit> */
135 if (unlikely(var20 == NULL)) {
136 if(catchStack.cursor >= 0){
137 longjmp(catchStack.envs[catchStack.cursor], 1);
138 }
139 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_custom");
140 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 28);
141 fatal_exit(1);
142 }
143 var18 = var20;
144 RET_LABEL19:(void)0;
145 }
146 }
147 {
148 var21 = nitc__light_ffi_base___AExternCodeBlock___code(var_block);
149 }
150 {
151 template___template__Template___add(var18, var21); /* Direct call template$Template$add on <var18:Template>*/
152 }
153 } else {
154 {
155 var22 = nitc__light_c___AExternCodeBlock___is_c_body(var_block);
156 }
157 if (var22){
158 {
159 { /* Inline c_tools$CCompilationUnit$body_impl (var_ecc) on <var_ecc:CCompilationUnit> */
160 var25 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_impl].val; /* _body_impl on <var_ecc:CCompilationUnit> */
161 if (unlikely(var25 == NULL)) {
162 if(catchStack.cursor >= 0){
163 longjmp(catchStack.envs[catchStack.cursor], 1);
164 }
165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_impl");
166 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 44);
167 fatal_exit(1);
168 }
169 var23 = var25;
170 RET_LABEL24:(void)0;
171 }
172 }
173 {
174 { /* Inline parser_nodes$ANode$location (var_block) on <var_block:AExternCodeBlock> */
175 var28 = var_block->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_block:AExternCodeBlock> */
176 if (unlikely(var28 == NULL)) {
177 if(catchStack.cursor >= 0){
178 longjmp(catchStack.envs[catchStack.cursor], 1);
179 }
180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
181 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 25);
182 fatal_exit(1);
183 }
184 var26 = var28;
185 RET_LABEL27:(void)0;
186 }
187 }
188 {
189 var29 = nitc__light_c___Location___as_line_pragma(var26);
190 }
191 {
192 template___template__Template___add(var23, var29); /* Direct call template$Template$add on <var23:Template>*/
193 }
194 {
195 { /* Inline c_tools$CCompilationUnit$body_impl (var_ecc) on <var_ecc:CCompilationUnit> */
196 var32 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_impl].val; /* _body_impl on <var_ecc:CCompilationUnit> */
197 if (unlikely(var32 == NULL)) {
198 if(catchStack.cursor >= 0){
199 longjmp(catchStack.envs[catchStack.cursor], 1);
200 }
201 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_impl");
202 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 44);
203 fatal_exit(1);
204 }
205 var30 = var32;
206 RET_LABEL31:(void)0;
207 }
208 }
209 if (likely(varonce33!=NULL)) {
210 var34 = varonce33;
211 } else {
212 var35 = "\n";
213 var37 = (val*)(1l<<2|1);
214 var38 = (val*)(1l<<2|1);
215 var39 = (val*)((long)(0)<<2|3);
216 var40 = (val*)((long)(0)<<2|3);
217 var36 = core__flat___CString___to_s_unsafe(var35, var37, var38, var39, var40);
218 var34 = var36;
219 varonce33 = var34;
220 }
221 {
222 template___template__Template___add(var30, var34); /* Direct call template$Template$add on <var30:Template>*/
223 }
224 {
225 { /* Inline c_tools$CCompilationUnit$body_impl (var_ecc) on <var_ecc:CCompilationUnit> */
226 var43 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_impl].val; /* _body_impl on <var_ecc:CCompilationUnit> */
227 if (unlikely(var43 == NULL)) {
228 if(catchStack.cursor >= 0){
229 longjmp(catchStack.envs[catchStack.cursor], 1);
230 }
231 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_impl");
232 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 44);
233 fatal_exit(1);
234 }
235 var41 = var43;
236 RET_LABEL42:(void)0;
237 }
238 }
239 {
240 var44 = nitc__light_ffi_base___AExternCodeBlock___code(var_block);
241 }
242 {
243 template___template__Template___add(var41, var44); /* Direct call template$Template$add on <var41:Template>*/
244 }
245 } else {
246 }
247 }
248 RET_LABEL:;
249 }
250 /* method light_c$CLanguage$compile_extern_method for (self: CLanguage, AExternCodeBlock, AMethPropdef, CCompilationUnit, MModule) */
251 void nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_extern_method(val* self, val* p0, val* p1, val* p2, val* p3) {
252 val* var_block /* var block: AExternCodeBlock */;
253 val* var_m /* var m: AMethPropdef */;
254 val* var_ecc /* var ecc: CCompilationUnit */;
255 val* var_mmodule /* var mmodule: MModule */;
256 val* var /* : ExternCFunction */;
257 val* var_fc /* var fc: ExternCFunction */;
258 val* var1 /* : Template */;
259 val* var3 /* : Template */;
260 val* var4 /* : Location */;
261 val* var6 /* : Location */;
262 val* var7 /* : String */;
263 val* var8 /* : Template */;
264 val* var10 /* : Template */;
265 val* var11 /* : String */;
266 val* var12 /* : Template */;
267 val* var14 /* : Template */;
268 val* var15 /* : Template */;
269 var_block = p0;
270 var_m = p1;
271 var_ecc = p2;
272 var_mmodule = p3;
273 var = NEW_nitc__ExternCFunction(&type_nitc__ExternCFunction);
274 {
275 nitc___nitc__ExternCFunction___init(var, var_m, var_mmodule); /* Direct call light_c$ExternCFunction$init on <var:ExternCFunction>*/
276 }
277 var_fc = var;
278 {
279 { /* Inline c_tools$CFunction$decls (var_fc) on <var_fc:ExternCFunction> */
280 var3 = var_fc->attrs[COLOR_nitc__c_tools__CFunction___decls].val; /* _decls on <var_fc:ExternCFunction> */
281 if (unlikely(var3 == NULL)) {
282 if(catchStack.cursor >= 0){
283 longjmp(catchStack.envs[catchStack.cursor], 1);
284 }
285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decls");
286 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 88);
287 fatal_exit(1);
288 }
289 var1 = var3;
290 RET_LABEL2:(void)0;
291 }
292 }
293 {
294 { /* Inline parser_nodes$ANode$location (var_block) on <var_block:AExternCodeBlock> */
295 var6 = var_block->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_block:AExternCodeBlock> */
296 if (unlikely(var6 == NULL)) {
297 if(catchStack.cursor >= 0){
298 longjmp(catchStack.envs[catchStack.cursor], 1);
299 }
300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
301 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 25);
302 fatal_exit(1);
303 }
304 var4 = var6;
305 RET_LABEL5:(void)0;
306 }
307 }
308 {
309 var7 = nitc__light_c___Location___as_line_pragma(var4);
310 }
311 {
312 template___template__Template___add(var1, var7); /* Direct call template$Template$add on <var1:Template>*/
313 }
314 {
315 { /* Inline c_tools$CFunction$exprs (var_fc) on <var_fc:ExternCFunction> */
316 var10 = var_fc->attrs[COLOR_nitc__c_tools__CFunction___exprs].val; /* _exprs on <var_fc:ExternCFunction> */
317 if (unlikely(var10 == NULL)) {
318 if(catchStack.cursor >= 0){
319 longjmp(catchStack.envs[catchStack.cursor], 1);
320 }
321 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _exprs");
322 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 89);
323 fatal_exit(1);
324 }
325 var8 = var10;
326 RET_LABEL9:(void)0;
327 }
328 }
329 {
330 var11 = nitc__light_ffi_base___AExternCodeBlock___code(var_block);
331 }
332 {
333 template___template__Template___add(var8, var11); /* Direct call template$Template$add on <var8:Template>*/
334 }
335 {
336 { /* Inline c_tools$CCompilationUnit$body_impl (var_ecc) on <var_ecc:CCompilationUnit> */
337 var14 = var_ecc->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_impl].val; /* _body_impl on <var_ecc:CCompilationUnit> */
338 if (unlikely(var14 == NULL)) {
339 if(catchStack.cursor >= 0){
340 longjmp(catchStack.envs[catchStack.cursor], 1);
341 }
342 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_impl");
343 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 44);
344 fatal_exit(1);
345 }
346 var12 = var14;
347 RET_LABEL13:(void)0;
348 }
349 }
350 {
351 var15 = nitc___nitc__CFunction___to_writer(var_fc);
352 }
353 {
354 template___template__Template___add(var12, var15); /* Direct call template$Template$add on <var12:Template>*/
355 }
356 RET_LABEL:;
357 }
358 /* method light_c$CLanguage$compile_extern_class for (self: CLanguage, AExternCodeBlock, AClassdef, CCompilationUnit, MModule) */
359 void nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_extern_class(val* self, val* p0, val* p1, val* p2, val* p3) {
360 val* var_block /* var block: AExternCodeBlock */;
361 val* var_m /* var m: AClassdef */;
362 val* var_ecc /* var ecc: CCompilationUnit */;
363 val* var_mmodule /* var mmodule: MModule */;
364 var_block = p0;
365 var_m = p1;
366 var_ecc = p2;
367 var_mmodule = p3;
368 RET_LABEL:;
369 }
370 /* method light_c$CLanguage$get_ftype for (self: CLanguage, AExternCodeBlock, AClassdef): ForeignType */
371 val* nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__get_ftype(val* self, val* p0, val* p1) {
372 val* var /* : ForeignType */;
373 val* var_block /* var block: AExternCodeBlock */;
374 val* var_m /* var m: AClassdef */;
375 val* var1 /* : ForeignCType */;
376 val* var2 /* : String */;
377 var_block = p0;
378 var_m = p1;
379 var1 = NEW_nitc__ForeignCType(&type_nitc__ForeignCType);
380 {
381 var2 = nitc__light_ffi_base___AExternCodeBlock___code(var_block);
382 }
383 {
384 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nitc__light_c__ForeignCType__ctype_61d]))(var1, var2); /* ctype= on <var1:ForeignCType>*/
385 }
386 {
387 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:ForeignCType>*/
388 }
389 var = var1;
390 goto RET_LABEL;
391 RET_LABEL:;
392 return var;
393 }
394 /* method light_c$AExternCodeBlock$is_c for (self: AExternCodeBlock): Bool */
395 short int nitc__light_c___AExternCodeBlock___is_c(val* self) {
396 short int var /* : Bool */;
397 short int var1 /* : Bool */;
398 short int var2 /* : Bool */;
399 val* var3 /* : nullable String */;
400 short int var4 /* : Bool */;
401 short int var5 /* : Bool */;
402 short int var_ /* var : Bool */;
403 val* var6 /* : nullable String */;
404 static val* varonce;
405 val* var7 /* : String */;
406 char* var8 /* : CString */;
407 val* var9 /* : String */;
408 val* var10 /* : nullable Int */;
409 val* var11 /* : nullable Int */;
410 val* var12 /* : nullable Bool */;
411 val* var13 /* : nullable Bool */;
412 short int var14 /* : Bool */;
413 short int var15 /* : Bool */;
414 short int var_16 /* var : Bool */;
415 val* var17 /* : nullable String */;
416 static val* varonce18;
417 val* var19 /* : String */;
418 char* var20 /* : CString */;
419 val* var21 /* : String */;
420 val* var22 /* : nullable Int */;
421 val* var23 /* : nullable Int */;
422 val* var24 /* : nullable Bool */;
423 val* var25 /* : nullable Bool */;
424 short int var26 /* : Bool */;
425 {
426 var3 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
427 }
428 if (var3 == NULL) {
429 var4 = 1; /* is null */
430 } else {
431 var4 = 0; /* arg is null but recv is not */
432 }
433 if (0) {
434 var5 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_core__kernel__Object___61d_61d]))(var3, ((val*)NULL)); /* == on <var3:nullable String>*/
435 var4 = var5;
436 }
437 var_ = var4;
438 if (var4){
439 var2 = var_;
440 } else {
441 {
442 var6 = nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(self);
443 }
444 if (likely(varonce!=NULL)) {
445 var7 = varonce;
446 } else {
447 var8 = "c";
448 var10 = (val*)(1l<<2|1);
449 var11 = (val*)(1l<<2|1);
450 var12 = (val*)((long)(0)<<2|3);
451 var13 = (val*)((long)(0)<<2|3);
452 var9 = core__flat___CString___to_s_unsafe(var8, var10, var11, var12, var13);
453 var7 = var9;
454 varonce = var7;
455 }
456 if (var6 == NULL) {
457 var14 = 0; /* <var7:String> cannot be null */
458 } else {
459 var15 = ((short int(*)(val* self, val* p0))(var6->class->vft[COLOR_core__kernel__Object___61d_61d]))(var6, var7); /* == on <var6:nullable String>*/
460 var14 = var15;
461 }
462 var2 = var14;
463 }
464 var_16 = var2;
465 if (var2){
466 var1 = var_16;
467 } else {
468 {
469 var17 = nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(self);
470 }
471 if (likely(varonce18!=NULL)) {
472 var19 = varonce18;
473 } else {
474 var20 = "c ";
475 var22 = (val*)(2l<<2|1);
476 var23 = (val*)(2l<<2|1);
477 var24 = (val*)((long)(0)<<2|3);
478 var25 = (val*)((long)(0)<<2|3);
479 var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
480 var19 = var21;
481 varonce18 = var19;
482 }
483 if (var17 == NULL) {
484 if(catchStack.cursor >= 0){
485 longjmp(catchStack.envs[catchStack.cursor], 1);
486 }
487 PRINT_ERROR("Runtime error: %s", "Receiver is null");
488 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 61);
489 fatal_exit(1);
490 } else {
491 var26 = core___core__Text___has_prefix(var17, var19);
492 }
493 var1 = var26;
494 }
495 var = var1;
496 goto RET_LABEL;
497 RET_LABEL:;
498 return var;
499 }
500 /* method light_c$AExternCodeBlock$is_c_body for (self: AExternCodeBlock): Bool */
501 short int nitc__light_c___AExternCodeBlock___is_c_body(val* self) {
502 short int var /* : Bool */;
503 short int var1 /* : Bool */;
504 short int var2 /* : Bool */;
505 val* var3 /* : nullable String */;
506 short int var4 /* : Bool */;
507 short int var5 /* : Bool */;
508 short int var_ /* var : Bool */;
509 val* var6 /* : nullable String */;
510 static val* varonce;
511 val* var7 /* : String */;
512 char* var8 /* : CString */;
513 val* var9 /* : String */;
514 val* var10 /* : nullable Int */;
515 val* var11 /* : nullable Int */;
516 val* var12 /* : nullable Bool */;
517 val* var13 /* : nullable Bool */;
518 short int var14 /* : Bool */;
519 short int var15 /* : Bool */;
520 short int var_16 /* var : Bool */;
521 val* var17 /* : nullable String */;
522 static val* varonce18;
523 val* var19 /* : String */;
524 char* var20 /* : CString */;
525 val* var21 /* : String */;
526 val* var22 /* : nullable Int */;
527 val* var23 /* : nullable Int */;
528 val* var24 /* : nullable Bool */;
529 val* var25 /* : nullable Bool */;
530 short int var26 /* : Bool */;
531 short int var27 /* : Bool */;
532 {
533 var3 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
534 }
535 if (var3 == NULL) {
536 var4 = 1; /* is null */
537 } else {
538 var4 = 0; /* arg is null but recv is not */
539 }
540 if (0) {
541 var5 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_core__kernel__Object___61d_61d]))(var3, ((val*)NULL)); /* == on <var3:nullable String>*/
542 var4 = var5;
543 }
544 var_ = var4;
545 if (var4){
546 var2 = var_;
547 } else {
548 {
549 var6 = nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(self);
550 }
551 if (likely(varonce!=NULL)) {
552 var7 = varonce;
553 } else {
554 var8 = "c";
555 var10 = (val*)(1l<<2|1);
556 var11 = (val*)(1l<<2|1);
557 var12 = (val*)((long)(0)<<2|3);
558 var13 = (val*)((long)(0)<<2|3);
559 var9 = core__flat___CString___to_s_unsafe(var8, var10, var11, var12, var13);
560 var7 = var9;
561 varonce = var7;
562 }
563 if (var6 == NULL) {
564 var14 = 0; /* <var7:String> cannot be null */
565 } else {
566 var15 = ((short int(*)(val* self, val* p0))(var6->class->vft[COLOR_core__kernel__Object___61d_61d]))(var6, var7); /* == on <var6:nullable String>*/
567 var14 = var15;
568 }
569 var2 = var14;
570 }
571 var_16 = var2;
572 if (var2){
573 var1 = var_16;
574 } else {
575 {
576 var17 = nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(self);
577 }
578 if (likely(varonce18!=NULL)) {
579 var19 = varonce18;
580 } else {
581 var20 = "c body";
582 var22 = (val*)(6l<<2|1);
583 var23 = (val*)(6l<<2|1);
584 var24 = (val*)((long)(0)<<2|3);
585 var25 = (val*)((long)(0)<<2|3);
586 var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
587 var19 = var21;
588 varonce18 = var19;
589 }
590 if (var17 == NULL) {
591 var26 = 0; /* <var19:String> cannot be null */
592 } else {
593 var27 = ((short int(*)(val* self, val* p0))(var17->class->vft[COLOR_core__kernel__Object___61d_61d]))(var17, var19); /* == on <var17:nullable String>*/
594 var26 = var27;
595 }
596 var1 = var26;
597 }
598 var = var1;
599 goto RET_LABEL;
600 RET_LABEL:;
601 return var;
602 }
603 /* method light_c$AExternCodeBlock$is_c_header for (self: AExternCodeBlock): Bool */
604 short int nitc__light_c___AExternCodeBlock___is_c_header(val* self) {
605 short int var /* : Bool */;
606 val* var1 /* : nullable String */;
607 static val* varonce;
608 val* var2 /* : String */;
609 char* var3 /* : CString */;
610 val* var4 /* : String */;
611 val* var5 /* : nullable Int */;
612 val* var6 /* : nullable Int */;
613 val* var7 /* : nullable Bool */;
614 val* var8 /* : nullable Bool */;
615 short int var9 /* : Bool */;
616 short int var10 /* : Bool */;
617 {
618 var1 = nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(self);
619 }
620 if (likely(varonce!=NULL)) {
621 var2 = varonce;
622 } else {
623 var3 = "c header";
624 var5 = (val*)(8l<<2|1);
625 var6 = (val*)(8l<<2|1);
626 var7 = (val*)((long)(0)<<2|3);
627 var8 = (val*)((long)(0)<<2|3);
628 var4 = core__flat___CString___to_s_unsafe(var3, var5, var6, var7, var8);
629 var2 = var4;
630 varonce = var2;
631 }
632 if (var1 == NULL) {
633 var9 = 0; /* <var2:String> cannot be null */
634 } else {
635 var10 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1, var2); /* == on <var1:nullable String>*/
636 var9 = var10;
637 }
638 var = var9;
639 goto RET_LABEL;
640 RET_LABEL:;
641 return var;
642 }
643 /* method light_c$Location$as_line_pragma for (self: Location): String */
644 val* nitc__light_c___Location___as_line_pragma(val* self) {
645 val* var /* : String */;
646 val* var1 /* : NativeArray[String] */;
647 static val* varonce;
648 static val* varonce2;
649 val* var3 /* : String */;
650 char* var4 /* : CString */;
651 val* var5 /* : String */;
652 val* var6 /* : nullable Int */;
653 val* var7 /* : nullable Int */;
654 val* var8 /* : nullable Bool */;
655 val* var9 /* : nullable Bool */;
656 static val* varonce10;
657 val* var11 /* : String */;
658 char* var12 /* : CString */;
659 val* var13 /* : String */;
660 val* var14 /* : nullable Int */;
661 val* var15 /* : nullable Int */;
662 val* var16 /* : nullable Bool */;
663 val* var17 /* : nullable Bool */;
664 static val* varonce18;
665 val* var19 /* : String */;
666 char* var20 /* : CString */;
667 val* var21 /* : String */;
668 val* var22 /* : nullable Int */;
669 val* var23 /* : nullable Int */;
670 val* var24 /* : nullable Bool */;
671 val* var25 /* : nullable Bool */;
672 long var26 /* : Int */;
673 long var28 /* : Int */;
674 long var29 /* : Int */;
675 short int var31 /* : Bool */;
676 int cltype;
677 int idtype;
678 const char* var_class_name;
679 long var32 /* : Int */;
680 val* var33 /* : String */;
681 val* var34 /* : nullable SourceFile */;
682 val* var36 /* : nullable SourceFile */;
683 val* var37 /* : String */;
684 val* var39 /* : String */;
685 val* var40 /* : String */;
686 if (unlikely(varonce==NULL)) {
687 var1 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
688 if (likely(varonce2!=NULL)) {
689 var3 = varonce2;
690 } else {
691 var4 = "#line ";
692 var6 = (val*)(6l<<2|1);
693 var7 = (val*)(6l<<2|1);
694 var8 = (val*)((long)(0)<<2|3);
695 var9 = (val*)((long)(0)<<2|3);
696 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
697 var3 = var5;
698 varonce2 = var3;
699 }
700 ((struct instance_core__NativeArray*)var1)->values[0]=var3;
701 if (likely(varonce10!=NULL)) {
702 var11 = varonce10;
703 } else {
704 var12 = " \"";
705 var14 = (val*)(2l<<2|1);
706 var15 = (val*)(2l<<2|1);
707 var16 = (val*)((long)(0)<<2|3);
708 var17 = (val*)((long)(0)<<2|3);
709 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
710 var11 = var13;
711 varonce10 = var11;
712 }
713 ((struct instance_core__NativeArray*)var1)->values[2]=var11;
714 if (likely(varonce18!=NULL)) {
715 var19 = varonce18;
716 } else {
717 var20 = "\"\n";
718 var22 = (val*)(2l<<2|1);
719 var23 = (val*)(2l<<2|1);
720 var24 = (val*)((long)(0)<<2|3);
721 var25 = (val*)((long)(0)<<2|3);
722 var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
723 var19 = var21;
724 varonce18 = var19;
725 }
726 ((struct instance_core__NativeArray*)var1)->values[4]=var19;
727 } else {
728 var1 = varonce;
729 varonce = NULL;
730 }
731 {
732 { /* Inline location$Location$line_start (self) on <self:Location> */
733 var28 = self->attrs[COLOR_nitc__location__Location___line_start].l; /* _line_start on <self:Location> */
734 var26 = var28;
735 RET_LABEL27:(void)0;
736 }
737 }
738 {
739 { /* Inline kernel$Int$- (var26,1l) on <var26:Int> */
740 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
741 /* <1l:Int> isa OTHER */
742 var31 = 1; /* easy <1l:Int> isa OTHER*/
743 if (unlikely(!var31)) {
744 var_class_name = type_core__Int.name;
745 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
746 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
747 fatal_exit(1);
748 }
749 var32 = var26 - 1l;
750 var29 = var32;
751 goto RET_LABEL30;
752 RET_LABEL30:(void)0;
753 }
754 }
755 var33 = core__flat___Int___core__abstract_text__Object__to_s(var29);
756 ((struct instance_core__NativeArray*)var1)->values[1]=var33;
757 {
758 { /* Inline location$Location$file (self) on <self:Location> */
759 var36 = self->attrs[COLOR_nitc__location__Location___file].val; /* _file on <self:Location> */
760 var34 = var36;
761 RET_LABEL35:(void)0;
762 }
763 }
764 if (var34 == NULL) {
765 if(catchStack.cursor >= 0){
766 longjmp(catchStack.envs[catchStack.cursor], 1);
767 }
768 PRINT_ERROR("Runtime error: %s", "Receiver is null");
769 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 70);
770 fatal_exit(1);
771 } else {
772 { /* Inline location$SourceFile$filename (var34) on <var34:nullable SourceFile> */
773 if (unlikely(var34 == NULL)) {
774 if(catchStack.cursor >= 0){
775 longjmp(catchStack.envs[catchStack.cursor], 1);
776 }
777 PRINT_ERROR("Runtime error: %s", "Receiver is null");
778 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__location, 22);
779 fatal_exit(1);
780 }
781 var39 = var34->attrs[COLOR_nitc__location__SourceFile___filename].val; /* _filename on <var34:nullable SourceFile> */
782 if (unlikely(var39 == NULL)) {
783 if(catchStack.cursor >= 0){
784 longjmp(catchStack.envs[catchStack.cursor], 1);
785 }
786 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
787 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__location, 22);
788 fatal_exit(1);
789 }
790 var37 = var39;
791 RET_LABEL38:(void)0;
792 }
793 }
794 ((struct instance_core__NativeArray*)var1)->values[3]=var37;
795 {
796 var40 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
797 }
798 varonce = var1;
799 var = var40;
800 goto RET_LABEL;
801 RET_LABEL:;
802 return var;
803 }
804 /* method light_c$MModule$cflags for (self: MModule): MultiHashMap[String, String] */
805 val* nitc__light_c___MModule___cflags(val* self) {
806 val* var /* : MultiHashMap[String, String] */;
807 val* var1 /* : MultiHashMap[String, String] */;
808 var1 = self->attrs[COLOR_nitc__light_c__MModule___cflags].val; /* _cflags on <self:MModule> */
809 if (unlikely(var1 == NULL)) {
810 if(catchStack.cursor >= 0){
811 longjmp(catchStack.envs[catchStack.cursor], 1);
812 }
813 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
814 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 77);
815 fatal_exit(1);
816 }
817 var = var1;
818 RET_LABEL:;
819 return var;
820 }
821 /* method light_c$MModule$ldflags for (self: MModule): MultiHashMap[String, String] */
822 val* nitc__light_c___MModule___ldflags(val* self) {
823 val* var /* : MultiHashMap[String, String] */;
824 val* var1 /* : MultiHashMap[String, String] */;
825 var1 = self->attrs[COLOR_nitc__light_c__MModule___ldflags].val; /* _ldflags on <self:MModule> */
826 if (unlikely(var1 == NULL)) {
827 if(catchStack.cursor >= 0){
828 longjmp(catchStack.envs[catchStack.cursor], 1);
829 }
830 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ldflags");
831 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 80);
832 fatal_exit(1);
833 }
834 var = var1;
835 RET_LABEL:;
836 return var;
837 }
838 /* method light_c$MModule$pkgconfigs for (self: MModule): Array[String] */
839 val* nitc__light_c___MModule___pkgconfigs(val* self) {
840 val* var /* : Array[String] */;
841 val* var1 /* : Array[String] */;
842 var1 = self->attrs[COLOR_nitc__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
843 if (unlikely(var1 == NULL)) {
844 if(catchStack.cursor >= 0){
845 longjmp(catchStack.envs[catchStack.cursor], 1);
846 }
847 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
848 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 83);
849 fatal_exit(1);
850 }
851 var = var1;
852 RET_LABEL:;
853 return var;
854 }
855 /* method light_c$ForeignCType$ctype for (self: ForeignCType): String */
856 val* nitc___nitc__ForeignCType___nitc__light_ffi_base__ForeignType__ctype(val* self) {
857 val* var /* : String */;
858 val* var1 /* : String */;
859 var1 = self->attrs[COLOR_nitc__light_c__ForeignCType___ctype].val; /* _ctype on <self:ForeignCType> */
860 if (unlikely(var1 == NULL)) {
861 if(catchStack.cursor >= 0){
862 longjmp(catchStack.envs[catchStack.cursor], 1);
863 }
864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ctype");
865 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 91);
866 fatal_exit(1);
867 }
868 var = var1;
869 RET_LABEL:;
870 return var;
871 }
872 /* method light_c$ForeignCType$ctype= for (self: ForeignCType, String) */
873 void nitc___nitc__ForeignCType___ctype_61d(val* self, val* p0) {
874 self->attrs[COLOR_nitc__light_c__ForeignCType___ctype].val = p0; /* _ctype on <self:ForeignCType> */
875 RET_LABEL:;
876 }
877 /* method light_c$ForeignCType$init for (self: ForeignCType) */
878 void nitc___nitc__ForeignCType___core__kernel__Object__init(val* self) {
879 {
880 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__ForeignCType___core__kernel__Object__init]))(self); /* init on <self:ForeignCType>*/
881 }
882 RET_LABEL:;
883 }
884 /* method light_c$FromCCallContext$name_mtype for (self: FromCCallContext, MType): String */
885 val* nitc___nitc__FromCCallContext___nitc__nitni_utilities__CallContext__name_mtype(val* self, val* p0) {
886 val* var /* : String */;
887 val* var_mtype /* var mtype: MType */;
888 val* var1 /* : String */;
889 var_mtype = p0;
890 {
891 var1 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__nitni_base__MType__cname]))(var_mtype); /* cname on <var_mtype:MType>*/
892 }
893 var = var1;
894 goto RET_LABEL;
895 RET_LABEL:;
896 return var;
897 }
898 /* method light_c$ExternCFunction$method= for (self: ExternCFunction, AMethPropdef) */
899 void nitc___nitc__ExternCFunction___method_61d(val* self, val* p0) {
900 self->attrs[COLOR_nitc__light_c__ExternCFunction___method].val = p0; /* _method on <self:ExternCFunction> */
901 RET_LABEL:;
902 }
903 /* method light_c$ExternCFunction$init for (self: ExternCFunction, AMethPropdef, MModule) */
904 void nitc___nitc__ExternCFunction___init(val* self, val* p0, val* p1) {
905 val* var_method /* var method: AMethPropdef */;
906 val* var_mmodule /* var mmodule: MModule */;
907 val* var /* : nullable MPropDef */;
908 val* var3 /* : nullable MPropDef */;
909 val* var4 /* : MClassDef */;
910 val* var6 /* : MClassDef */;
911 val* var7 /* : MClassType */;
912 val* var9 /* : MClassType */;
913 val* var_recv_mtype /* var recv_mtype: MClassType */;
914 val* var10 /* : nullable MPropDef */;
915 val* var12 /* : nullable MPropDef */;
916 val* var13 /* : MProperty */;
917 val* var15 /* : MProperty */;
918 static val* varonce;
919 val* var16 /* : String */;
920 char* var17 /* : CString */;
921 val* var18 /* : String */;
922 val* var19 /* : nullable Int */;
923 val* var20 /* : nullable Int */;
924 val* var21 /* : nullable Bool */;
925 val* var22 /* : nullable Bool */;
926 val* var23 /* : Sys */;
927 val* var24 /* : SignatureLength */;
928 val* var25 /* : Sys */;
929 val* var26 /* : FromCCallContext */;
930 val* var27 /* : String */;
931 val* var_csignature /* var csignature: String */;
932 var_method = p0;
933 var_mmodule = p1;
934 {
935 { /* Inline light_c$ExternCFunction$method= (self,var_method) on <self:ExternCFunction> */
936 self->attrs[COLOR_nitc__light_c__ExternCFunction___method].val = var_method; /* _method on <self:ExternCFunction> */
937 RET_LABEL1:(void)0;
938 }
939 }
940 {
941 { /* Inline modelize_property$APropdef$mpropdef (var_method) on <var_method:AMethPropdef> */
942 var3 = var_method->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_method:AMethPropdef> */
943 var = var3;
944 RET_LABEL2:(void)0;
945 }
946 }
947 if (var == NULL) {
948 if(catchStack.cursor >= 0){
949 longjmp(catchStack.envs[catchStack.cursor], 1);
950 }
951 PRINT_ERROR("Runtime error: %s", "Receiver is null");
952 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 131);
953 fatal_exit(1);
954 } else {
955 { /* Inline model$MPropDef$mclassdef (var) on <var:nullable MPropDef(nullable MMethodDef)> */
956 if (unlikely(var == 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__model, 2354);
962 fatal_exit(1);
963 }
964 var6 = var->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var:nullable MPropDef(nullable MMethodDef)> */
965 if (unlikely(var6 == NULL)) {
966 if(catchStack.cursor >= 0){
967 longjmp(catchStack.envs[catchStack.cursor], 1);
968 }
969 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
970 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
971 fatal_exit(1);
972 }
973 var4 = var6;
974 RET_LABEL5:(void)0;
975 }
976 }
977 {
978 { /* Inline model$MClassDef$bound_mtype (var4) on <var4:MClassDef> */
979 var9 = var4->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var4:MClassDef> */
980 if (unlikely(var9 == NULL)) {
981 if(catchStack.cursor >= 0){
982 longjmp(catchStack.envs[catchStack.cursor], 1);
983 }
984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
985 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
986 fatal_exit(1);
987 }
988 var7 = var9;
989 RET_LABEL8:(void)0;
990 }
991 }
992 var_recv_mtype = var7;
993 {
994 { /* Inline modelize_property$APropdef$mpropdef (var_method) on <var_method:AMethPropdef> */
995 var12 = var_method->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_method:AMethPropdef> */
996 var10 = var12;
997 RET_LABEL11:(void)0;
998 }
999 }
1000 if (var10 == NULL) {
1001 if(catchStack.cursor >= 0){
1002 longjmp(catchStack.envs[catchStack.cursor], 1);
1003 }
1004 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1005 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 132);
1006 fatal_exit(1);
1007 } else {
1008 { /* Inline model$MPropDef$mproperty (var10) on <var10:nullable MPropDef(nullable MMethodDef)> */
1009 if (unlikely(var10 == NULL)) {
1010 if(catchStack.cursor >= 0){
1011 longjmp(catchStack.envs[catchStack.cursor], 1);
1012 }
1013 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1014 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
1015 fatal_exit(1);
1016 }
1017 var15 = var10->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var10:nullable MPropDef(nullable MMethodDef)> */
1018 if (unlikely(var15 == NULL)) {
1019 if(catchStack.cursor >= 0){
1020 longjmp(catchStack.envs[catchStack.cursor], 1);
1021 }
1022 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1023 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
1024 fatal_exit(1);
1025 }
1026 var13 = var15;
1027 RET_LABEL14:(void)0;
1028 }
1029 }
1030 if (likely(varonce!=NULL)) {
1031 var16 = varonce;
1032 } else {
1033 var17 = "___impl";
1034 var19 = (val*)(7l<<2|1);
1035 var20 = (val*)(7l<<2|1);
1036 var21 = (val*)((long)(0)<<2|3);
1037 var22 = (val*)((long)(0)<<2|3);
1038 var18 = core__flat___CString___to_s_unsafe(var17, var19, var20, var21, var22);
1039 var16 = var18;
1040 varonce = var16;
1041 }
1042 var23 = glob_sys;
1043 {
1044 var24 = nitc__nitni_utilities___core__Sys___long_signature(var23);
1045 }
1046 var25 = glob_sys;
1047 {
1048 var26 = nitc__light_c___core__Sys___from_c_call_context(var25);
1049 }
1050 {
1051 var27 = nitc__nitni_utilities___MMethod___build_csignature(var13, var_recv_mtype, var_mmodule, var16, var24, var26);
1052 }
1053 var_csignature = var27;
1054 {
1055 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__c_tools__CFunction__signature_61d]))(self, var_csignature); /* signature= on <self:ExternCFunction>*/
1056 }
1057 {
1058 ((void(*)(val* self))(self->class->vft[COLOR_core__kernel__Object__init]))(self); /* init on <self:ExternCFunction>*/
1059 }
1060 RET_LABEL:;
1061 }
1062 /* method light_c$Sys$from_c_call_context for (self: Sys): FromCCallContext */
1063 val* nitc__light_c___core__Sys___from_c_call_context(val* self) {
1064 val* var /* : FromCCallContext */;
1065 static val* varonce;
1066 static int varonce_guard;
1067 val* var1 /* : FromCCallContext */;
1068 val* var2 /* : FromCCallContext */;
1069 if (likely(varonce_guard)) {
1070 var1 = varonce;
1071 } else {
1072 var2 = NEW_nitc__FromCCallContext(&type_nitc__FromCCallContext);
1073 {
1074 { /* Inline kernel$Object$init (var2) on <var2:FromCCallContext> */
1075 RET_LABEL3:(void)0;
1076 }
1077 }
1078 var1 = var2;
1079 varonce = var1;
1080 varonce_guard = 1;
1081 }
1082 var = var1;
1083 goto RET_LABEL;
1084 RET_LABEL:;
1085 return var;
1086 }