nitc: let CC, CXX and NO_STACKTRACE use env value
[nit.git] / c_src / ini.sep.1.c
1 #include "ini.sep.0.h"
2 /* method ini#ConfigTree#ini_file for (self: ConfigTree): String */
3 val* ini___ini__ConfigTree___ini_file(val* self) {
4 val* var /* : String */;
5 val* var1 /* : String */;
6 var1 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
9 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method ini#ConfigTree#ini_file= for (self: ConfigTree, String) */
17 void ini___ini__ConfigTree___ini_file_61d(val* self, val* p0) {
18 self->attrs[COLOR_ini__ConfigTree___ini_file].val = p0; /* _ini_file on <self:ConfigTree> */
19 RET_LABEL:;
20 }
21 /* method ini#ConfigTree#init for (self: ConfigTree) */
22 void ini___ini__ConfigTree___core__kernel__Object__init(val* self) {
23 val* var /* : String */;
24 val* var2 /* : String */;
25 short int var3 /* : Bool */;
26 {
27 ((void(*)(val* self))(self->class->vft[COLOR_ini___ini__ConfigTree___core__kernel__Object__init]))(self); /* init on <self:ConfigTree>*/
28 }
29 {
30 { /* Inline ini#ConfigTree#ini_file (self) on <self:ConfigTree> */
31 var2 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
32 if (unlikely(var2 == NULL)) {
33 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
34 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
35 fatal_exit(1);
36 }
37 var = var2;
38 RET_LABEL1:(void)0;
39 }
40 }
41 {
42 var3 = core__file___String___file_exists(var);
43 }
44 if (var3){
45 {
46 ini___ini__ConfigTree___load(self); /* Direct call ini#ConfigTree#load on <self:ConfigTree>*/
47 }
48 } else {
49 }
50 RET_LABEL:;
51 }
52 /* method ini#ConfigTree#[] for (self: ConfigTree, String): nullable String */
53 val* ini___ini__ConfigTree____91d_93d(val* self, val* p0) {
54 val* var /* : nullable String */;
55 val* var_key /* var key: String */;
56 val* var1 /* : nullable ConfigNode */;
57 val* var_node /* var node: nullable ConfigNode */;
58 short int var2 /* : Bool */;
59 short int var3 /* : Bool */;
60 val* var_other /* var other: nullable Object */;
61 short int var5 /* : Bool */;
62 short int var7 /* : Bool */;
63 val* var8 /* : nullable String */;
64 val* var10 /* : nullable String */;
65 var_key = p0;
66 {
67 var1 = ini___ini__ConfigTree___get_node(self, var_key);
68 }
69 var_node = var1;
70 if (var_node == NULL) {
71 var2 = 1; /* is null */
72 } else {
73 var2 = 0; /* arg is null but recv is not */
74 }
75 if (0) {
76 { /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
77 var_other = ((val*)NULL);
78 {
79 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
80 var7 = var_node == var_other;
81 var5 = var7;
82 goto RET_LABEL6;
83 RET_LABEL6:(void)0;
84 }
85 }
86 var3 = var5;
87 goto RET_LABEL4;
88 RET_LABEL4:(void)0;
89 }
90 var2 = var3;
91 }
92 if (var2){
93 var = ((val*)NULL);
94 goto RET_LABEL;
95 } else {
96 }
97 {
98 { /* Inline ini#ConfigNode#value (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
99 var10 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:nullable ConfigNode(ConfigNode)> */
100 var8 = var10;
101 RET_LABEL9:(void)0;
102 }
103 }
104 var = var8;
105 goto RET_LABEL;
106 RET_LABEL:;
107 return var;
108 }
109 /* method ini#ConfigTree#has_key for (self: ConfigTree, String): Bool */
110 short int ini___ini__ConfigTree___has_key(val* self, val* p0) {
111 short int var /* : Bool */;
112 val* var_key /* var key: String */;
113 static val* varonce;
114 val* var1 /* : String */;
115 char* var2 /* : NativeString */;
116 val* var3 /* : String */;
117 val* var4 /* : Array[String] */;
118 val* var5 /* : Array[nullable Object] */;
119 val* var_parts /* var parts: Array[String] */;
120 val* var6 /* : nullable Object */;
121 val* var7 /* : nullable ConfigNode */;
122 val* var_node /* var node: nullable ConfigNode */;
123 short int var8 /* : Bool */;
124 short int var9 /* : Bool */;
125 val* var_other /* var other: nullable Object */;
126 short int var11 /* : Bool */;
127 short int var13 /* : Bool */;
128 short int var14 /* : Bool */;
129 short int var15 /* : Bool */;
130 val* var16 /* : nullable Object */;
131 val* var17 /* : nullable ConfigNode */;
132 short int var18 /* : Bool */;
133 short int var19 /* : Bool */;
134 short int var21 /* : Bool */;
135 short int var23 /* : Bool */;
136 var_key = p0;
137 if (likely(varonce!=NULL)) {
138 var1 = varonce;
139 } else {
140 var2 = ".";
141 var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
142 var1 = var3;
143 varonce = var1;
144 }
145 {
146 var4 = core__string_search___Text___split(var_key, var1);
147 }
148 {
149 var5 = core___core__AbstractArrayRead___reversed(var4);
150 }
151 var_parts = var5;
152 {
153 var6 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
154 }
155 {
156 var7 = ini___ini__ConfigTree___get_root(self, var6);
157 }
158 var_node = var7;
159 if (var_node == NULL) {
160 var8 = 1; /* is null */
161 } else {
162 var8 = 0; /* arg is null but recv is not */
163 }
164 if (0) {
165 { /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
166 var_other = ((val*)NULL);
167 {
168 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
169 var13 = var_node == var_other;
170 var11 = var13;
171 goto RET_LABEL12;
172 RET_LABEL12:(void)0;
173 }
174 }
175 var9 = var11;
176 goto RET_LABEL10;
177 RET_LABEL10:(void)0;
178 }
179 var8 = var9;
180 }
181 if (var8){
182 var = 0;
183 goto RET_LABEL;
184 } else {
185 }
186 for(;;) {
187 {
188 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
189 }
190 var15 = !var14;
191 if (var15){
192 {
193 var16 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
194 }
195 {
196 var17 = ini___ini__ConfigNode___get_child(var_node, var16);
197 }
198 var_node = var17;
199 if (var_node == NULL) {
200 var18 = 1; /* is null */
201 } else {
202 var18 = 0; /* arg is null but recv is not */
203 }
204 if (0) {
205 { /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
206 var_other = ((val*)NULL);
207 {
208 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
209 var23 = var_node == var_other;
210 var21 = var23;
211 goto RET_LABEL22;
212 RET_LABEL22:(void)0;
213 }
214 }
215 var19 = var21;
216 goto RET_LABEL20;
217 RET_LABEL20:(void)0;
218 }
219 var18 = var19;
220 }
221 if (var18){
222 var = 0;
223 goto RET_LABEL;
224 } else {
225 }
226 } else {
227 goto BREAK_label;
228 }
229 }
230 BREAK_label: (void)0;
231 var = 1;
232 goto RET_LABEL;
233 RET_LABEL:;
234 return var;
235 }
236 /* method ini#ConfigTree#to_map for (self: ConfigTree): Map[String, String] */
237 val* ini___ini__ConfigTree___to_map(val* self) {
238 val* var /* : Map[String, String] */;
239 val* var1 /* : HashMap[String, String] */;
240 val* var_map /* var map: HashMap[String, String] */;
241 val* var2 /* : Array[ConfigNode] */;
242 val* var_ /* var : Array[ConfigNode] */;
243 val* var3 /* : IndexedIterator[nullable Object] */;
244 val* var_4 /* var : IndexedIterator[ConfigNode] */;
245 short int var5 /* : Bool */;
246 val* var6 /* : nullable Object */;
247 val* var_node /* var node: ConfigNode */;
248 val* var7 /* : nullable String */;
249 val* var9 /* : nullable String */;
250 short int var10 /* : Bool */;
251 short int var11 /* : Bool */;
252 val* var13 /* : String */;
253 val* var14 /* : nullable String */;
254 val* var16 /* : nullable String */;
255 val* var17 /* : String */;
256 var1 = NEW_core__HashMap(&type_core__HashMap__core__String__core__String);
257 {
258 core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection#HashMap#init on <var1:HashMap[String, String]>*/
259 }
260 var_map = var1;
261 {
262 var2 = ini___ini__ConfigTree___leaves(self);
263 }
264 var_ = var2;
265 {
266 var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
267 }
268 var_4 = var3;
269 for(;;) {
270 {
271 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[ConfigNode]>*/
272 }
273 if (var5){
274 } else {
275 goto BREAK_label;
276 }
277 {
278 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[ConfigNode]>*/
279 }
280 var_node = var6;
281 {
282 { /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
283 var9 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
284 var7 = var9;
285 RET_LABEL8:(void)0;
286 }
287 }
288 if (var7 == NULL) {
289 var10 = 1; /* is null */
290 } else {
291 var10 = 0; /* arg is null but recv is not */
292 }
293 if (0) {
294 var11 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_core__kernel__Object___61d_61d]))(var7, ((val*)NULL)); /* == on <var7:nullable String>*/
295 var10 = var11;
296 }
297 if (var10){
298 goto BREAK_label12;
299 } else {
300 }
301 {
302 var13 = ini___ini__ConfigNode___key(var_node);
303 }
304 {
305 { /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
306 var16 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
307 var14 = var16;
308 RET_LABEL15:(void)0;
309 }
310 }
311 if (var14 == NULL) {
312 PRINT_ERROR("Runtime error: %s", "Receiver is null");
313 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 116);
314 fatal_exit(1);
315 } else {
316 var17 = core___core__String___Object__to_s(var14);
317 }
318 {
319 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_map, var13, var17); /* Direct call hash_collection#HashMap#[]= on <var_map:HashMap[String, String]>*/
320 }
321 BREAK_label12: (void)0;
322 {
323 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[ConfigNode]>*/
324 }
325 }
326 BREAK_label: (void)0;
327 {
328 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[ConfigNode]>*/
329 }
330 var = var_map;
331 goto RET_LABEL;
332 RET_LABEL:;
333 return var;
334 }
335 /* method ini#ConfigTree#to_s for (self: ConfigTree): String */
336 val* ini___ini__ConfigTree___core__abstract_text__Object__to_s(val* self) {
337 val* var /* : String */;
338 val* var1 /* : Map[String, String] */;
339 static val* varonce;
340 val* var2 /* : String */;
341 char* var3 /* : NativeString */;
342 val* var4 /* : String */;
343 static val* varonce5;
344 val* var6 /* : String */;
345 char* var7 /* : NativeString */;
346 val* var8 /* : String */;
347 val* var9 /* : String */;
348 {
349 var1 = ini___ini__ConfigTree___to_map(self);
350 }
351 if (likely(varonce!=NULL)) {
352 var2 = varonce;
353 } else {
354 var3 = ", ";
355 var4 = core__flat___NativeString___to_s_full(var3, 2l, 2l);
356 var2 = var4;
357 varonce = var2;
358 }
359 if (likely(varonce5!=NULL)) {
360 var6 = varonce5;
361 } else {
362 var7 = ":";
363 var8 = core__flat___NativeString___to_s_full(var7, 1l, 1l);
364 var6 = var8;
365 varonce5 = var6;
366 }
367 {
368 var9 = core__flat___Map___join(var1, var2, var6);
369 }
370 var = var9;
371 goto RET_LABEL;
372 RET_LABEL:;
373 return var;
374 }
375 /* method ini#ConfigTree#write_to for (self: ConfigTree, Writer) */
376 void ini___ini__ConfigTree___core__stream__Writable__write_to(val* self, val* p0) {
377 val* var_stream /* var stream: Writer */;
378 val* var /* : Array[ConfigNode] */;
379 val* var_ /* var : Array[ConfigNode] */;
380 val* var1 /* : IndexedIterator[nullable Object] */;
381 val* var_2 /* var : IndexedIterator[ConfigNode] */;
382 short int var3 /* : Bool */;
383 val* var4 /* : nullable Object */;
384 val* var_node /* var node: ConfigNode */;
385 val* var5 /* : nullable String */;
386 val* var7 /* : nullable String */;
387 short int var8 /* : Bool */;
388 short int var9 /* : Bool */;
389 val* var11 /* : NativeArray[String] */;
390 static val* varonce;
391 static val* varonce12;
392 val* var13 /* : String */;
393 char* var14 /* : NativeString */;
394 val* var15 /* : String */;
395 static val* varonce16;
396 val* var17 /* : String */;
397 char* var18 /* : NativeString */;
398 val* var19 /* : String */;
399 val* var20 /* : String */;
400 val* var21 /* : nullable String */;
401 val* var23 /* : nullable String */;
402 val* var24 /* : String */;
403 val* var25 /* : String */;
404 var_stream = p0;
405 {
406 var = ini___ini__ConfigTree___leaves(self);
407 }
408 var_ = var;
409 {
410 var1 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
411 }
412 var_2 = var1;
413 for(;;) {
414 {
415 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:IndexedIterator[ConfigNode]>*/
416 }
417 if (var3){
418 } else {
419 goto BREAK_label;
420 }
421 {
422 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:IndexedIterator[ConfigNode]>*/
423 }
424 var_node = var4;
425 {
426 { /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
427 var7 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
428 var5 = var7;
429 RET_LABEL6:(void)0;
430 }
431 }
432 if (var5 == NULL) {
433 var8 = 1; /* is null */
434 } else {
435 var8 = 0; /* arg is null but recv is not */
436 }
437 if (0) {
438 var9 = ((short int(*)(val* self, val* p0))(var5->class->vft[COLOR_core__kernel__Object___61d_61d]))(var5, ((val*)NULL)); /* == on <var5:nullable String>*/
439 var8 = var9;
440 }
441 if (var8){
442 goto BREAK_label10;
443 } else {
444 }
445 if (unlikely(varonce==NULL)) {
446 var11 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
447 if (likely(varonce12!=NULL)) {
448 var13 = varonce12;
449 } else {
450 var14 = "=";
451 var15 = core__flat___NativeString___to_s_full(var14, 1l, 1l);
452 var13 = var15;
453 varonce12 = var13;
454 }
455 ((struct instance_core__NativeArray*)var11)->values[1]=var13;
456 if (likely(varonce16!=NULL)) {
457 var17 = varonce16;
458 } else {
459 var18 = "\n";
460 var19 = core__flat___NativeString___to_s_full(var18, 1l, 1l);
461 var17 = var19;
462 varonce16 = var17;
463 }
464 ((struct instance_core__NativeArray*)var11)->values[3]=var17;
465 } else {
466 var11 = varonce;
467 varonce = NULL;
468 }
469 {
470 var20 = ini___ini__ConfigNode___key(var_node);
471 }
472 ((struct instance_core__NativeArray*)var11)->values[0]=var20;
473 {
474 { /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
475 var23 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
476 var21 = var23;
477 RET_LABEL22:(void)0;
478 }
479 }
480 if (var21 == NULL) {
481 PRINT_ERROR("Runtime error: %s", "Receiver is null");
482 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 126);
483 fatal_exit(1);
484 } else {
485 var24 = core___core__String___Object__to_s(var21);
486 }
487 ((struct instance_core__NativeArray*)var11)->values[2]=var24;
488 {
489 var25 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
490 }
491 varonce = var11;
492 {
493 core___core__FileWriter___core__stream__Writer__write(var_stream, var25); /* Direct call file#FileWriter#write on <var_stream:Writer>*/
494 }
495 BREAK_label10: (void)0;
496 {
497 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:IndexedIterator[ConfigNode]>*/
498 }
499 }
500 BREAK_label: (void)0;
501 {
502 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:IndexedIterator[ConfigNode]>*/
503 }
504 RET_LABEL:;
505 }
506 /* method ini#ConfigTree#load for (self: ConfigTree) */
507 void ini___ini__ConfigTree___load(val* self) {
508 val* var /* : Array[ConfigNode] */;
509 val* var2 /* : Array[ConfigNode] */;
510 val* var3 /* : FileReader */;
511 val* var4 /* : String */;
512 val* var6 /* : String */;
513 val* var_stream /* var stream: FileReader */;
514 val* var_path /* var path: nullable String */;
515 long var_line_number /* var line_number: Int */;
516 short int var7 /* : Bool */;
517 short int var8 /* : Bool */;
518 val* var9 /* : String */;
519 val* var_line /* var line: String */;
520 long var10 /* : Int */;
521 short int var12 /* : Bool */;
522 int cltype;
523 int idtype;
524 const char* var_class_name;
525 long var13 /* : Int */;
526 short int var14 /* : Bool */;
527 static val* varonce;
528 val* var15 /* : String */;
529 char* var16 /* : NativeString */;
530 val* var17 /* : String */;
531 short int var18 /* : Bool */;
532 static val* varonce19;
533 val* var20 /* : String */;
534 char* var21 /* : NativeString */;
535 val* var22 /* : String */;
536 short int var23 /* : Bool */;
537 val* var24 /* : Text */;
538 long var25 /* : Int */;
539 long var26 /* : Int */;
540 short int var28 /* : Bool */;
541 int cltype29;
542 int idtype30;
543 const char* var_class_name31;
544 long var32 /* : Int */;
545 val* var33 /* : Text */;
546 val* var_key /* var key: String */;
547 static val* varonce34;
548 val* var35 /* : String */;
549 char* var36 /* : NativeString */;
550 val* var37 /* : String */;
551 val* var38 /* : Array[String] */;
552 val* var_parts /* var parts: Array[String] */;
553 long var39 /* : Int */;
554 long var41 /* : Int */;
555 short int var42 /* : Bool */;
556 short int var44 /* : Bool */;
557 int cltype45;
558 int idtype46;
559 const char* var_class_name47;
560 short int var48 /* : Bool */;
561 val* var49 /* : Sys */;
562 val* var51 /* : NativeArray[String] */;
563 static val* varonce50;
564 static val* varonce52;
565 val* var53 /* : String */;
566 char* var54 /* : NativeString */;
567 val* var55 /* : String */;
568 val* var56 /* : String */;
569 val* var57 /* : String */;
570 val* var58 /* : nullable Object */;
571 val* var59 /* : Text */;
572 val* var_key60 /* var key: String */;
573 val* var61 /* : nullable Object */;
574 val* var62 /* : Text */;
575 val* var_val /* var val: String */;
576 short int var63 /* : Bool */;
577 short int var64 /* : Bool */;
578 val* var_other /* var other: nullable Object */;
579 short int var66 /* : Bool */;
580 short int var67 /* : Bool */;
581 val* var69 /* : NativeArray[String] */;
582 static val* varonce68;
583 static val* varonce70;
584 val* var71 /* : String */;
585 char* var72 /* : NativeString */;
586 val* var73 /* : String */;
587 val* var74 /* : String */;
588 static val* varonce75;
589 val* var76 /* : String */;
590 char* var77 /* : NativeString */;
591 val* var78 /* : String */;
592 short int var79 /* : Bool */;
593 {
594 { /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
595 var2 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
596 if (unlikely(var2 == NULL)) {
597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
598 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
599 fatal_exit(1);
600 }
601 var = var2;
602 RET_LABEL1:(void)0;
603 }
604 }
605 {
606 core___core__AbstractArray___core__abstract_collection__RemovableCollection__clear(var); /* Direct call array#AbstractArray#clear on <var:Array[ConfigNode]>*/
607 }
608 var3 = NEW_core__FileReader(&type_core__FileReader);
609 {
610 { /* Inline ini#ConfigTree#ini_file (self) on <self:ConfigTree> */
611 var6 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
612 if (unlikely(var6 == NULL)) {
613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
614 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
615 fatal_exit(1);
616 }
617 var4 = var6;
618 RET_LABEL5:(void)0;
619 }
620 }
621 {
622 core___core__FileReader___open(var3, var4); /* Direct call file#FileReader#open on <var3:FileReader>*/
623 }
624 var_stream = var3;
625 var_path = ((val*)NULL);
626 var_line_number = 0l;
627 for(;;) {
628 {
629 var7 = core___core__BufferedReader___Reader__eof(var_stream);
630 }
631 var8 = !var7;
632 if (var8){
633 {
634 var9 = core___core__Reader___read_line(var_stream);
635 }
636 var_line = var9;
637 {
638 { /* Inline kernel#Int#+ (var_line_number,1l) on <var_line_number:Int> */
639 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
640 /* <1l:Int> isa OTHER */
641 var12 = 1; /* easy <1l:Int> isa OTHER*/
642 if (unlikely(!var12)) {
643 var_class_name = type_core__Int.name;
644 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
645 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
646 fatal_exit(1);
647 }
648 var13 = var_line_number + 1l;
649 var10 = var13;
650 goto RET_LABEL11;
651 RET_LABEL11:(void)0;
652 }
653 }
654 var_line_number = var10;
655 {
656 var14 = ((short int(*)(val* self))(var_line->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_line); /* is_empty on <var_line:String>*/
657 }
658 if (var14){
659 goto BREAK_label;
660 } else {
661 if (likely(varonce!=NULL)) {
662 var15 = varonce;
663 } else {
664 var16 = ";";
665 var17 = core__flat___NativeString___to_s_full(var16, 1l, 1l);
666 var15 = var17;
667 varonce = var15;
668 }
669 {
670 var18 = core___core__Text___has_prefix(var_line, var15);
671 }
672 if (var18){
673 goto BREAK_label;
674 } else {
675 if (likely(varonce19!=NULL)) {
676 var20 = varonce19;
677 } else {
678 var21 = "[";
679 var22 = core__flat___NativeString___to_s_full(var21, 1l, 1l);
680 var20 = var22;
681 varonce19 = var20;
682 }
683 {
684 var23 = core___core__Text___has_prefix(var_line, var20);
685 }
686 if (var23){
687 {
688 var24 = core___core__Text___trim(var_line);
689 }
690 var_line = var24;
691 {
692 var25 = ((long(*)(val* self))(var_line->class->vft[COLOR_core__abstract_text__Text__length]))(var_line); /* length on <var_line:String>*/
693 }
694 {
695 { /* Inline kernel#Int#- (var25,2l) on <var25:Int> */
696 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
697 /* <2l:Int> isa OTHER */
698 var28 = 1; /* easy <2l:Int> isa OTHER*/
699 if (unlikely(!var28)) {
700 var_class_name31 = type_core__Int.name;
701 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
702 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
703 fatal_exit(1);
704 }
705 var32 = var25 - 2l;
706 var26 = var32;
707 goto RET_LABEL27;
708 RET_LABEL27:(void)0;
709 }
710 }
711 {
712 var33 = ((val*(*)(val* self, long p0, long p1))(var_line->class->vft[COLOR_core__abstract_text__Text__substring]))(var_line, 1l, var26); /* substring on <var_line:String>*/
713 }
714 var_key = var33;
715 var_path = var_key;
716 {
717 ini___ini__ConfigTree___set_node(self, var_path, ((val*)NULL)); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
718 }
719 } else {
720 if (likely(varonce34!=NULL)) {
721 var35 = varonce34;
722 } else {
723 var36 = "=";
724 var37 = core__flat___NativeString___to_s_full(var36, 1l, 1l);
725 var35 = var37;
726 varonce34 = var35;
727 }
728 {
729 var38 = core__string_search___Text___split(var_line, var35);
730 }
731 var_parts = var38;
732 {
733 { /* Inline array#AbstractArrayRead#length (var_parts) on <var_parts:Array[String]> */
734 var41 = var_parts->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_parts:Array[String]> */
735 var39 = var41;
736 RET_LABEL40:(void)0;
737 }
738 }
739 {
740 { /* Inline kernel#Int#> (var39,1l) on <var39:Int> */
741 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
742 /* <1l:Int> isa OTHER */
743 var44 = 1; /* easy <1l:Int> isa OTHER*/
744 if (unlikely(!var44)) {
745 var_class_name47 = type_core__Int.name;
746 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
747 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
748 fatal_exit(1);
749 }
750 var48 = var39 > 1l;
751 var42 = var48;
752 goto RET_LABEL43;
753 RET_LABEL43:(void)0;
754 }
755 }
756 if (unlikely(!var42)) {
757 var49 = glob_sys;
758 if (unlikely(varonce50==NULL)) {
759 var51 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
760 if (likely(varonce52!=NULL)) {
761 var53 = varonce52;
762 } else {
763 var54 = "Error: malformed ini at line ";
764 var55 = core__flat___NativeString___to_s_full(var54, 29l, 29l);
765 var53 = var55;
766 varonce52 = var53;
767 }
768 ((struct instance_core__NativeArray*)var51)->values[0]=var53;
769 } else {
770 var51 = varonce50;
771 varonce50 = NULL;
772 }
773 var56 = core__flat___Int___core__abstract_text__Object__to_s(var_line_number);
774 ((struct instance_core__NativeArray*)var51)->values[1]=var56;
775 {
776 var57 = ((val*(*)(val* self))(var51->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var51); /* native_to_s on <var51:NativeArray[String]>*/
777 }
778 varonce50 = var51;
779 {
780 core__file___Sys___print(var49, var57); /* Direct call file#Sys#print on <var49:Sys>*/
781 }
782 PRINT_ERROR("Runtime error: %s", "Assert failed");
783 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 212);
784 fatal_exit(1);
785 }
786 {
787 var58 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 0l);
788 }
789 {
790 var59 = core___core__Text___trim(var58);
791 }
792 var_key60 = var59;
793 {
794 var61 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 1l);
795 }
796 {
797 var62 = core___core__Text___trim(var61);
798 }
799 var_val = var62;
800 if (var_path == NULL) {
801 var63 = 0; /* is null */
802 } else {
803 var63 = 1; /* arg is null and recv is not */
804 }
805 if (0) {
806 { /* Inline kernel#Object#!= (var_path,((val*)NULL)) on <var_path:nullable String> */
807 var_other = ((val*)NULL);
808 {
809 var66 = ((short int(*)(val* self, val* p0))(var_path->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_path, var_other); /* == on <var_path:nullable String(String)>*/
810 }
811 var67 = !var66;
812 var64 = var67;
813 goto RET_LABEL65;
814 RET_LABEL65:(void)0;
815 }
816 var63 = var64;
817 }
818 if (var63){
819 if (unlikely(varonce68==NULL)) {
820 var69 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
821 if (likely(varonce70!=NULL)) {
822 var71 = varonce70;
823 } else {
824 var72 = ".";
825 var73 = core__flat___NativeString___to_s_full(var72, 1l, 1l);
826 var71 = var73;
827 varonce70 = var71;
828 }
829 ((struct instance_core__NativeArray*)var69)->values[1]=var71;
830 } else {
831 var69 = varonce68;
832 varonce68 = NULL;
833 }
834 ((struct instance_core__NativeArray*)var69)->values[0]=var_path;
835 ((struct instance_core__NativeArray*)var69)->values[2]=var_key60;
836 {
837 var74 = ((val*(*)(val* self))(var69->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
838 }
839 varonce68 = var69;
840 var_key60 = var74;
841 } else {
842 }
843 if (likely(varonce75!=NULL)) {
844 var76 = varonce75;
845 } else {
846 var77 = "[]";
847 var78 = core__flat___NativeString___to_s_full(var77, 2l, 2l);
848 var76 = var78;
849 varonce75 = var76;
850 }
851 {
852 var79 = core___core__Text___has_suffix(var_key60, var76);
853 }
854 if (var79){
855 {
856 ini___ini__ConfigTree___set_array(self, var_key60, var_val); /* Direct call ini#ConfigTree#set_array on <self:ConfigTree>*/
857 }
858 } else {
859 {
860 ini___ini__ConfigTree___set_node(self, var_key60, var_val); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
861 }
862 }
863 }
864 }
865 }
866 } else {
867 goto BREAK_label80;
868 }
869 BREAK_label: (void)0;
870 }
871 BREAK_label80: (void)0;
872 {
873 core___core__FileReader___core__stream__Stream__close(var_stream); /* Direct call file#FileReader#close on <var_stream:FileReader>*/
874 }
875 RET_LABEL:;
876 }
877 /* method ini#ConfigTree#roots for (self: ConfigTree): Array[ConfigNode] */
878 val* ini___ini__ConfigTree___roots(val* self) {
879 val* var /* : Array[ConfigNode] */;
880 val* var1 /* : Array[ConfigNode] */;
881 var1 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
882 if (unlikely(var1 == NULL)) {
883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
884 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
885 fatal_exit(1);
886 }
887 var = var1;
888 RET_LABEL:;
889 return var;
890 }
891 /* method ini#ConfigTree#set_array for (self: ConfigTree, String, nullable String) */
892 void ini___ini__ConfigTree___set_array(val* self, val* p0, val* p1) {
893 val* var_key /* var key: String */;
894 val* var_value /* var value: nullable String */;
895 long var /* : Int */;
896 long var1 /* : Int */;
897 short int var3 /* : Bool */;
898 int cltype;
899 int idtype;
900 const char* var_class_name;
901 long var4 /* : Int */;
902 val* var5 /* : Text */;
903 long var_len /* var len: Int */;
904 short int var6 /* : Bool */;
905 val* var7 /* : nullable ConfigNode */;
906 val* var8 /* : HashMap[String, ConfigNode] */;
907 val* var10 /* : HashMap[String, ConfigNode] */;
908 long var11 /* : Int */;
909 val* var12 /* : NativeArray[String] */;
910 static val* varonce;
911 static val* varonce13;
912 val* var14 /* : String */;
913 char* var15 /* : NativeString */;
914 val* var16 /* : String */;
915 val* var17 /* : String */;
916 val* var18 /* : String */;
917 var_key = p0;
918 var_value = p1;
919 {
920 var = ((long(*)(val* self))(var_key->class->vft[COLOR_core__abstract_text__Text__length]))(var_key); /* length on <var_key:String>*/
921 }
922 {
923 { /* Inline kernel#Int#- (var,2l) on <var:Int> */
924 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
925 /* <2l:Int> isa OTHER */
926 var3 = 1; /* easy <2l:Int> isa OTHER*/
927 if (unlikely(!var3)) {
928 var_class_name = type_core__Int.name;
929 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
930 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
931 fatal_exit(1);
932 }
933 var4 = var - 2l;
934 var1 = var4;
935 goto RET_LABEL2;
936 RET_LABEL2:(void)0;
937 }
938 }
939 {
940 var5 = ((val*(*)(val* self, long p0, long p1))(var_key->class->vft[COLOR_core__abstract_text__Text__substring]))(var_key, 0l, var1); /* substring on <var_key:String>*/
941 }
942 var_key = var5;
943 var_len = 0l;
944 {
945 var6 = ini___ini__ConfigTree___has_key(self, var_key);
946 }
947 if (var6){
948 {
949 var7 = ini___ini__ConfigTree___get_node(self, var_key);
950 }
951 if (var7 == NULL) {
952 PRINT_ERROR("Runtime error: %s", "Receiver is null");
953 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 238);
954 fatal_exit(1);
955 } else {
956 { /* Inline ini#ConfigNode#children (var7) on <var7:nullable ConfigNode> */
957 if (unlikely(var7 == NULL)) {
958 PRINT_ERROR("Runtime error: %s", "Receiver is null");
959 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
960 fatal_exit(1);
961 }
962 var10 = var7->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var7:nullable ConfigNode> */
963 if (unlikely(var10 == NULL)) {
964 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
965 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
966 fatal_exit(1);
967 }
968 var8 = var10;
969 RET_LABEL9:(void)0;
970 }
971 }
972 {
973 var11 = core___core__HashMap___core__abstract_collection__MapRead__length(var8);
974 }
975 var_len = var11;
976 } else {
977 }
978 if (unlikely(varonce==NULL)) {
979 var12 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
980 if (likely(varonce13!=NULL)) {
981 var14 = varonce13;
982 } else {
983 var15 = ".";
984 var16 = core__flat___NativeString___to_s_full(var15, 1l, 1l);
985 var14 = var16;
986 varonce13 = var14;
987 }
988 ((struct instance_core__NativeArray*)var12)->values[1]=var14;
989 } else {
990 var12 = varonce;
991 varonce = NULL;
992 }
993 ((struct instance_core__NativeArray*)var12)->values[0]=var_key;
994 {
995 var17 = core__flat___Int___core__abstract_text__Object__to_s(var_len);
996 }
997 ((struct instance_core__NativeArray*)var12)->values[2]=var17;
998 {
999 var18 = ((val*(*)(val* self))(var12->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
1000 }
1001 varonce = var12;
1002 {
1003 ini___ini__ConfigTree___set_node(self, var18, var_value); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
1004 }
1005 RET_LABEL:;
1006 }
1007 /* method ini#ConfigTree#set_node for (self: ConfigTree, String, nullable String) */
1008 void ini___ini__ConfigTree___set_node(val* self, val* p0, val* p1) {
1009 val* var_key /* var key: String */;
1010 val* var_value /* var value: nullable String */;
1011 static val* varonce;
1012 val* var /* : String */;
1013 char* var1 /* : NativeString */;
1014 val* var2 /* : String */;
1015 val* var3 /* : Array[String] */;
1016 val* var4 /* : Array[nullable Object] */;
1017 val* var_parts /* var parts: Array[String] */;
1018 val* var5 /* : nullable Object */;
1019 val* var_k /* var k: String */;
1020 val* var6 /* : nullable ConfigNode */;
1021 val* var_root /* var root: nullable ConfigNode */;
1022 short int var7 /* : Bool */;
1023 short int var8 /* : Bool */;
1024 val* var_other /* var other: nullable Object */;
1025 short int var10 /* : Bool */;
1026 short int var12 /* : Bool */;
1027 val* var13 /* : ConfigNode */;
1028 short int var14 /* : Bool */;
1029 val* var16 /* : Array[ConfigNode] */;
1030 val* var18 /* : Array[ConfigNode] */;
1031 short int var19 /* : Bool */;
1032 short int var20 /* : Bool */;
1033 val* var21 /* : nullable Object */;
1034 val* var22 /* : nullable ConfigNode */;
1035 val* var_node /* var node: nullable ConfigNode */;
1036 short int var23 /* : Bool */;
1037 short int var24 /* : Bool */;
1038 short int var26 /* : Bool */;
1039 short int var28 /* : Bool */;
1040 val* var29 /* : ConfigNode */;
1041 val* var31 /* : HashMap[String, ConfigNode] */;
1042 val* var33 /* : HashMap[String, ConfigNode] */;
1043 val* var34 /* : String */;
1044 val* var36 /* : String */;
1045 short int var37 /* : Bool */;
1046 var_key = p0;
1047 var_value = p1;
1048 if (likely(varonce!=NULL)) {
1049 var = varonce;
1050 } else {
1051 var1 = ".";
1052 var2 = core__flat___NativeString___to_s_full(var1, 1l, 1l);
1053 var = var2;
1054 varonce = var;
1055 }
1056 {
1057 var3 = core__string_search___Text___split(var_key, var);
1058 }
1059 {
1060 var4 = core___core__AbstractArrayRead___reversed(var3);
1061 }
1062 var_parts = var4;
1063 {
1064 var5 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
1065 }
1066 var_k = var5;
1067 {
1068 var6 = ini___ini__ConfigTree___get_root(self, var_k);
1069 }
1070 var_root = var6;
1071 if (var_root == NULL) {
1072 var7 = 1; /* is null */
1073 } else {
1074 var7 = 0; /* arg is null but recv is not */
1075 }
1076 if (0) {
1077 { /* Inline kernel#Object#== (var_root,((val*)NULL)) on <var_root:nullable ConfigNode> */
1078 var_other = ((val*)NULL);
1079 {
1080 { /* Inline kernel#Object#is_same_instance (var_root,var_other) on <var_root:nullable ConfigNode(ConfigNode)> */
1081 var12 = var_root == var_other;
1082 var10 = var12;
1083 goto RET_LABEL11;
1084 RET_LABEL11:(void)0;
1085 }
1086 }
1087 var8 = var10;
1088 goto RET_LABEL9;
1089 RET_LABEL9:(void)0;
1090 }
1091 var7 = var8;
1092 }
1093 if (var7){
1094 var13 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
1095 {
1096 ((void(*)(val* self, val* p0))(var13->class->vft[COLOR_ini__ConfigNode__name_61d]))(var13, var_k); /* name= on <var13:ConfigNode>*/
1097 }
1098 {
1099 ((void(*)(val* self))(var13->class->vft[COLOR_core__kernel__Object__init]))(var13); /* init on <var13:ConfigNode>*/
1100 }
1101 var_root = var13;
1102 {
1103 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
1104 }
1105 if (var14){
1106 {
1107 { /* Inline ini#ConfigNode#value= (var_root,var_value) on <var_root:nullable ConfigNode(ConfigNode)> */
1108 var_root->attrs[COLOR_ini__ConfigNode___value].val = var_value; /* _value on <var_root:nullable ConfigNode(ConfigNode)> */
1109 RET_LABEL15:(void)0;
1110 }
1111 }
1112 } else {
1113 }
1114 {
1115 { /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
1116 var18 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
1117 if (unlikely(var18 == NULL)) {
1118 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1119 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
1120 fatal_exit(1);
1121 }
1122 var16 = var18;
1123 RET_LABEL17:(void)0;
1124 }
1125 }
1126 {
1127 core___core__Array___core__abstract_collection__SimpleCollection__add(var16, var_root); /* Direct call array#Array#add on <var16:Array[ConfigNode]>*/
1128 }
1129 } else {
1130 }
1131 for(;;) {
1132 {
1133 var19 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
1134 }
1135 var20 = !var19;
1136 if (var20){
1137 {
1138 var21 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
1139 }
1140 var_k = var21;
1141 {
1142 var22 = ini___ini__ConfigNode___get_child(var_root, var_k);
1143 }
1144 var_node = var22;
1145 if (var_node == NULL) {
1146 var23 = 1; /* is null */
1147 } else {
1148 var23 = 0; /* arg is null but recv is not */
1149 }
1150 if (0) {
1151 { /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
1152 var_other = ((val*)NULL);
1153 {
1154 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
1155 var28 = var_node == var_other;
1156 var26 = var28;
1157 goto RET_LABEL27;
1158 RET_LABEL27:(void)0;
1159 }
1160 }
1161 var24 = var26;
1162 goto RET_LABEL25;
1163 RET_LABEL25:(void)0;
1164 }
1165 var23 = var24;
1166 }
1167 if (var23){
1168 var29 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
1169 {
1170 ((void(*)(val* self, val* p0))(var29->class->vft[COLOR_ini__ConfigNode__name_61d]))(var29, var_k); /* name= on <var29:ConfigNode>*/
1171 }
1172 {
1173 ((void(*)(val* self))(var29->class->vft[COLOR_core__kernel__Object__init]))(var29); /* init on <var29:ConfigNode>*/
1174 }
1175 var_node = var29;
1176 {
1177 { /* Inline ini#ConfigNode#parent= (var_node,var_root) on <var_node:nullable ConfigNode(ConfigNode)> */
1178 var_node->attrs[COLOR_ini__ConfigNode___parent].val = var_root; /* _parent on <var_node:nullable ConfigNode(ConfigNode)> */
1179 RET_LABEL30:(void)0;
1180 }
1181 }
1182 {
1183 { /* Inline ini#ConfigNode#children (var_root) on <var_root:nullable ConfigNode(ConfigNode)> */
1184 var33 = var_root->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_root:nullable ConfigNode(ConfigNode)> */
1185 if (unlikely(var33 == NULL)) {
1186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1187 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1188 fatal_exit(1);
1189 }
1190 var31 = var33;
1191 RET_LABEL32:(void)0;
1192 }
1193 }
1194 {
1195 { /* Inline ini#ConfigNode#name (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
1196 var36 = var_node->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <var_node:nullable ConfigNode(ConfigNode)> */
1197 if (unlikely(var36 == NULL)) {
1198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1199 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
1200 fatal_exit(1);
1201 }
1202 var34 = var36;
1203 RET_LABEL35:(void)0;
1204 }
1205 }
1206 {
1207 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var31, var34, var_node); /* Direct call hash_collection#HashMap#[]= on <var31:HashMap[String, ConfigNode]>*/
1208 }
1209 } else {
1210 }
1211 {
1212 var37 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
1213 }
1214 if (var37){
1215 {
1216 { /* Inline ini#ConfigNode#value= (var_node,var_value) on <var_node:nullable ConfigNode(ConfigNode)> */
1217 var_node->attrs[COLOR_ini__ConfigNode___value].val = var_value; /* _value on <var_node:nullable ConfigNode(ConfigNode)> */
1218 RET_LABEL38:(void)0;
1219 }
1220 }
1221 } else {
1222 }
1223 var_root = var_node;
1224 } else {
1225 goto BREAK_label;
1226 }
1227 }
1228 BREAK_label: (void)0;
1229 RET_LABEL:;
1230 }
1231 /* method ini#ConfigTree#get_node for (self: ConfigTree, String): nullable ConfigNode */
1232 val* ini___ini__ConfigTree___get_node(val* self, val* p0) {
1233 val* var /* : nullable ConfigNode */;
1234 val* var_key /* var key: String */;
1235 static val* varonce;
1236 val* var1 /* : String */;
1237 char* var2 /* : NativeString */;
1238 val* var3 /* : String */;
1239 val* var4 /* : Array[String] */;
1240 val* var5 /* : Array[nullable Object] */;
1241 val* var_parts /* var parts: Array[String] */;
1242 val* var6 /* : nullable Object */;
1243 val* var7 /* : nullable ConfigNode */;
1244 val* var_node /* var node: nullable ConfigNode */;
1245 short int var8 /* : Bool */;
1246 short int var9 /* : Bool */;
1247 short int var10 /* : Bool */;
1248 val* var_other /* var other: nullable Object */;
1249 short int var12 /* : Bool */;
1250 short int var13 /* : Bool */;
1251 short int var_ /* var : Bool */;
1252 short int var14 /* : Bool */;
1253 short int var15 /* : Bool */;
1254 val* var16 /* : nullable Object */;
1255 val* var17 /* : nullable ConfigNode */;
1256 var_key = p0;
1257 if (likely(varonce!=NULL)) {
1258 var1 = varonce;
1259 } else {
1260 var2 = ".";
1261 var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
1262 var1 = var3;
1263 varonce = var1;
1264 }
1265 {
1266 var4 = core__string_search___Text___split(var_key, var1);
1267 }
1268 {
1269 var5 = core___core__AbstractArrayRead___reversed(var4);
1270 }
1271 var_parts = var5;
1272 {
1273 var6 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
1274 }
1275 {
1276 var7 = ini___ini__ConfigTree___get_root(self, var6);
1277 }
1278 var_node = var7;
1279 for(;;) {
1280 if (var_node == NULL) {
1281 var9 = 0; /* is null */
1282 } else {
1283 var9 = 1; /* arg is null and recv is not */
1284 }
1285 if (0) {
1286 { /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
1287 var_other = ((val*)NULL);
1288 {
1289 var12 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ConfigNode(ConfigNode)>*/
1290 }
1291 var13 = !var12;
1292 var10 = var13;
1293 goto RET_LABEL11;
1294 RET_LABEL11:(void)0;
1295 }
1296 var9 = var10;
1297 }
1298 var_ = var9;
1299 if (var9){
1300 {
1301 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
1302 }
1303 var15 = !var14;
1304 var8 = var15;
1305 } else {
1306 var8 = var_;
1307 }
1308 if (var8){
1309 {
1310 var16 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
1311 }
1312 {
1313 var17 = ini___ini__ConfigNode___get_child(var_node, var16);
1314 }
1315 var_node = var17;
1316 } else {
1317 goto BREAK_label;
1318 }
1319 }
1320 BREAK_label: (void)0;
1321 var = var_node;
1322 goto RET_LABEL;
1323 RET_LABEL:;
1324 return var;
1325 }
1326 /* method ini#ConfigTree#get_root for (self: ConfigTree, String): nullable ConfigNode */
1327 val* ini___ini__ConfigTree___get_root(val* self, val* p0) {
1328 val* var /* : nullable ConfigNode */;
1329 val* var_name /* var name: String */;
1330 val* var1 /* : Array[ConfigNode] */;
1331 val* var3 /* : Array[ConfigNode] */;
1332 val* var_ /* var : Array[ConfigNode] */;
1333 val* var4 /* : IndexedIterator[nullable Object] */;
1334 val* var_5 /* var : IndexedIterator[ConfigNode] */;
1335 short int var6 /* : Bool */;
1336 val* var7 /* : nullable Object */;
1337 val* var_root /* var root: ConfigNode */;
1338 val* var8 /* : String */;
1339 val* var10 /* : String */;
1340 short int var11 /* : Bool */;
1341 var_name = p0;
1342 {
1343 { /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
1344 var3 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
1345 if (unlikely(var3 == NULL)) {
1346 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1347 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
1348 fatal_exit(1);
1349 }
1350 var1 = var3;
1351 RET_LABEL2:(void)0;
1352 }
1353 }
1354 var_ = var1;
1355 {
1356 var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1357 }
1358 var_5 = var4;
1359 for(;;) {
1360 {
1361 var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_5); /* is_ok on <var_5:IndexedIterator[ConfigNode]>*/
1362 }
1363 if (var6){
1364 } else {
1365 goto BREAK_label;
1366 }
1367 {
1368 var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_5); /* item on <var_5:IndexedIterator[ConfigNode]>*/
1369 }
1370 var_root = var7;
1371 {
1372 { /* Inline ini#ConfigNode#name (var_root) on <var_root:ConfigNode> */
1373 var10 = var_root->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <var_root:ConfigNode> */
1374 if (unlikely(var10 == NULL)) {
1375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1376 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
1377 fatal_exit(1);
1378 }
1379 var8 = var10;
1380 RET_LABEL9:(void)0;
1381 }
1382 }
1383 {
1384 var11 = ((short int(*)(val* self, val* p0))(var8->class->vft[COLOR_core__kernel__Object___61d_61d]))(var8, var_name); /* == on <var8:String>*/
1385 }
1386 if (var11){
1387 var = var_root;
1388 goto RET_LABEL;
1389 } else {
1390 }
1391 {
1392 ((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_5); /* next on <var_5:IndexedIterator[ConfigNode]>*/
1393 }
1394 }
1395 BREAK_label: (void)0;
1396 {
1397 ((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_5); /* finish on <var_5:IndexedIterator[ConfigNode]>*/
1398 }
1399 var = ((val*)NULL);
1400 goto RET_LABEL;
1401 RET_LABEL:;
1402 return var;
1403 }
1404 /* method ini#ConfigTree#leaves for (self: ConfigTree): Array[ConfigNode] */
1405 val* ini___ini__ConfigTree___leaves(val* self) {
1406 val* var /* : Array[ConfigNode] */;
1407 val* var1 /* : Array[ConfigNode] */;
1408 val* var_res /* var res: Array[ConfigNode] */;
1409 val* var2 /* : Array[ConfigNode] */;
1410 val* var_todo /* var todo: Array[ConfigNode] */;
1411 val* var3 /* : Array[ConfigNode] */;
1412 val* var5 /* : Array[ConfigNode] */;
1413 short int var6 /* : Bool */;
1414 short int var7 /* : Bool */;
1415 val* var8 /* : nullable Object */;
1416 val* var_node /* var node: ConfigNode */;
1417 val* var9 /* : HashMap[String, ConfigNode] */;
1418 val* var11 /* : HashMap[String, ConfigNode] */;
1419 short int var12 /* : Bool */;
1420 val* var13 /* : HashMap[String, ConfigNode] */;
1421 val* var15 /* : HashMap[String, ConfigNode] */;
1422 val* var16 /* : RemovableCollection[nullable Object] */;
1423 var1 = NEW_core__Array(&type_core__Array__ini__ConfigNode);
1424 {
1425 core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[ConfigNode]>*/
1426 }
1427 var_res = var1;
1428 var2 = NEW_core__Array(&type_core__Array__ini__ConfigNode);
1429 {
1430 core___core__Array___core__kernel__Object__init(var2); /* Direct call array#Array#init on <var2:Array[ConfigNode]>*/
1431 }
1432 var_todo = var2;
1433 {
1434 { /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
1435 var5 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
1436 if (unlikely(var5 == NULL)) {
1437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1438 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
1439 fatal_exit(1);
1440 }
1441 var3 = var5;
1442 RET_LABEL4:(void)0;
1443 }
1444 }
1445 {
1446 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var3); /* Direct call array#Array#add_all on <var_todo:Array[ConfigNode]>*/
1447 }
1448 for(;;) {
1449 {
1450 var6 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_todo);
1451 }
1452 var7 = !var6;
1453 if (var7){
1454 {
1455 var8 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_todo);
1456 }
1457 var_node = var8;
1458 {
1459 { /* Inline ini#ConfigNode#children (var_node) on <var_node:ConfigNode> */
1460 var11 = var_node->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_node:ConfigNode> */
1461 if (unlikely(var11 == NULL)) {
1462 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1463 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1464 fatal_exit(1);
1465 }
1466 var9 = var11;
1467 RET_LABEL10:(void)0;
1468 }
1469 }
1470 {
1471 var12 = core___core__HashMap___core__abstract_collection__MapRead__is_empty(var9);
1472 }
1473 if (var12){
1474 {
1475 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_node); /* Direct call array#Array#add on <var_res:Array[ConfigNode]>*/
1476 }
1477 } else {
1478 {
1479 { /* Inline ini#ConfigNode#children (var_node) on <var_node:ConfigNode> */
1480 var15 = var_node->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_node:ConfigNode> */
1481 if (unlikely(var15 == NULL)) {
1482 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1483 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1484 fatal_exit(1);
1485 }
1486 var13 = var15;
1487 RET_LABEL14:(void)0;
1488 }
1489 }
1490 {
1491 var16 = core___core__HashMap___core__abstract_collection__MapRead__values(var13);
1492 }
1493 {
1494 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var16); /* Direct call array#Array#add_all on <var_todo:Array[ConfigNode]>*/
1495 }
1496 }
1497 } else {
1498 goto BREAK_label;
1499 }
1500 }
1501 BREAK_label: (void)0;
1502 var = var_res;
1503 goto RET_LABEL;
1504 RET_LABEL:;
1505 return var;
1506 }
1507 /* method ini#ConfigNode#parent for (self: ConfigNode): nullable ConfigNode */
1508 val* ini___ini__ConfigNode___parent(val* self) {
1509 val* var /* : nullable ConfigNode */;
1510 val* var1 /* : nullable ConfigNode */;
1511 var1 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
1512 var = var1;
1513 RET_LABEL:;
1514 return var;
1515 }
1516 /* method ini#ConfigNode#parent= for (self: ConfigNode, nullable ConfigNode) */
1517 void ini___ini__ConfigNode___parent_61d(val* self, val* p0) {
1518 self->attrs[COLOR_ini__ConfigNode___parent].val = p0; /* _parent on <self:ConfigNode> */
1519 RET_LABEL:;
1520 }
1521 /* method ini#ConfigNode#children for (self: ConfigNode): HashMap[String, ConfigNode] */
1522 val* ini___ini__ConfigNode___children(val* self) {
1523 val* var /* : HashMap[String, ConfigNode] */;
1524 val* var1 /* : HashMap[String, ConfigNode] */;
1525 var1 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
1526 if (unlikely(var1 == NULL)) {
1527 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1528 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1529 fatal_exit(1);
1530 }
1531 var = var1;
1532 RET_LABEL:;
1533 return var;
1534 }
1535 /* method ini#ConfigNode#name for (self: ConfigNode): String */
1536 val* ini___ini__ConfigNode___name(val* self) {
1537 val* var /* : String */;
1538 val* var1 /* : String */;
1539 var1 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
1540 if (unlikely(var1 == NULL)) {
1541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1542 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
1543 fatal_exit(1);
1544 }
1545 var = var1;
1546 RET_LABEL:;
1547 return var;
1548 }
1549 /* method ini#ConfigNode#name= for (self: ConfigNode, String) */
1550 void ini___ini__ConfigNode___name_61d(val* self, val* p0) {
1551 self->attrs[COLOR_ini__ConfigNode___name].val = p0; /* _name on <self:ConfigNode> */
1552 RET_LABEL:;
1553 }
1554 /* method ini#ConfigNode#value for (self: ConfigNode): nullable String */
1555 val* ini___ini__ConfigNode___value(val* self) {
1556 val* var /* : nullable String */;
1557 val* var1 /* : nullable String */;
1558 var1 = self->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <self:ConfigNode> */
1559 var = var1;
1560 RET_LABEL:;
1561 return var;
1562 }
1563 /* method ini#ConfigNode#value= for (self: ConfigNode, nullable String) */
1564 void ini___ini__ConfigNode___value_61d(val* self, val* p0) {
1565 self->attrs[COLOR_ini__ConfigNode___value].val = p0; /* _value on <self:ConfigNode> */
1566 RET_LABEL:;
1567 }
1568 /* method ini#ConfigNode#key for (self: ConfigNode): String */
1569 val* ini___ini__ConfigNode___key(val* self) {
1570 val* var /* : String */;
1571 val* var1 /* : nullable ConfigNode */;
1572 val* var3 /* : nullable ConfigNode */;
1573 short int var4 /* : Bool */;
1574 short int var5 /* : Bool */;
1575 val* var_other /* var other: nullable Object */;
1576 short int var7 /* : Bool */;
1577 short int var9 /* : Bool */;
1578 val* var10 /* : String */;
1579 val* var12 /* : String */;
1580 val* var13 /* : NativeArray[String] */;
1581 static val* varonce;
1582 static val* varonce14;
1583 val* var15 /* : String */;
1584 char* var16 /* : NativeString */;
1585 val* var17 /* : String */;
1586 val* var18 /* : nullable ConfigNode */;
1587 val* var20 /* : nullable ConfigNode */;
1588 val* var21 /* : String */;
1589 val* var22 /* : String */;
1590 val* var24 /* : String */;
1591 val* var25 /* : String */;
1592 {
1593 { /* Inline ini#ConfigNode#parent (self) on <self:ConfigNode> */
1594 var3 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
1595 var1 = var3;
1596 RET_LABEL2:(void)0;
1597 }
1598 }
1599 if (var1 == NULL) {
1600 var4 = 1; /* is null */
1601 } else {
1602 var4 = 0; /* arg is null but recv is not */
1603 }
1604 if (0) {
1605 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable ConfigNode> */
1606 var_other = ((val*)NULL);
1607 {
1608 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable ConfigNode(ConfigNode)> */
1609 var9 = var1 == var_other;
1610 var7 = var9;
1611 goto RET_LABEL8;
1612 RET_LABEL8:(void)0;
1613 }
1614 }
1615 var5 = var7;
1616 goto RET_LABEL6;
1617 RET_LABEL6:(void)0;
1618 }
1619 var4 = var5;
1620 }
1621 if (var4){
1622 {
1623 { /* Inline ini#ConfigNode#name (self) on <self:ConfigNode> */
1624 var12 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
1625 if (unlikely(var12 == NULL)) {
1626 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1627 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
1628 fatal_exit(1);
1629 }
1630 var10 = var12;
1631 RET_LABEL11:(void)0;
1632 }
1633 }
1634 var = var10;
1635 goto RET_LABEL;
1636 } else {
1637 }
1638 if (unlikely(varonce==NULL)) {
1639 var13 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1640 if (likely(varonce14!=NULL)) {
1641 var15 = varonce14;
1642 } else {
1643 var16 = ".";
1644 var17 = core__flat___NativeString___to_s_full(var16, 1l, 1l);
1645 var15 = var17;
1646 varonce14 = var15;
1647 }
1648 ((struct instance_core__NativeArray*)var13)->values[1]=var15;
1649 } else {
1650 var13 = varonce;
1651 varonce = NULL;
1652 }
1653 {
1654 { /* Inline ini#ConfigNode#parent (self) on <self:ConfigNode> */
1655 var20 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
1656 var18 = var20;
1657 RET_LABEL19:(void)0;
1658 }
1659 }
1660 if (var18 == NULL) {
1661 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1662 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 312);
1663 fatal_exit(1);
1664 } else {
1665 var21 = ini___ini__ConfigNode___key(var18);
1666 }
1667 ((struct instance_core__NativeArray*)var13)->values[0]=var21;
1668 {
1669 { /* Inline ini#ConfigNode#name (self) on <self:ConfigNode> */
1670 var24 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
1671 if (unlikely(var24 == NULL)) {
1672 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1673 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
1674 fatal_exit(1);
1675 }
1676 var22 = var24;
1677 RET_LABEL23:(void)0;
1678 }
1679 }
1680 ((struct instance_core__NativeArray*)var13)->values[2]=var22;
1681 {
1682 var25 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
1683 }
1684 varonce = var13;
1685 var = var25;
1686 goto RET_LABEL;
1687 RET_LABEL:;
1688 return var;
1689 }
1690 /* method ini#ConfigNode#get_child for (self: ConfigNode, String): nullable ConfigNode */
1691 val* ini___ini__ConfigNode___get_child(val* self, val* p0) {
1692 val* var /* : nullable ConfigNode */;
1693 val* var_name /* var name: String */;
1694 val* var1 /* : HashMap[String, ConfigNode] */;
1695 val* var3 /* : HashMap[String, ConfigNode] */;
1696 short int var4 /* : Bool */;
1697 val* var5 /* : HashMap[String, ConfigNode] */;
1698 val* var7 /* : HashMap[String, ConfigNode] */;
1699 val* var8 /* : nullable Object */;
1700 var_name = p0;
1701 {
1702 { /* Inline ini#ConfigNode#children (self) on <self:ConfigNode> */
1703 var3 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
1704 if (unlikely(var3 == NULL)) {
1705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1706 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1707 fatal_exit(1);
1708 }
1709 var1 = var3;
1710 RET_LABEL2:(void)0;
1711 }
1712 }
1713 {
1714 var4 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var1, var_name);
1715 }
1716 if (var4){
1717 {
1718 { /* Inline ini#ConfigNode#children (self) on <self:ConfigNode> */
1719 var7 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
1720 if (unlikely(var7 == NULL)) {
1721 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
1722 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
1723 fatal_exit(1);
1724 }
1725 var5 = var7;
1726 RET_LABEL6:(void)0;
1727 }
1728 }
1729 {
1730 var8 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var5, var_name);
1731 }
1732 var = var8;
1733 goto RET_LABEL;
1734 } else {
1735 }
1736 var = ((val*)NULL);
1737 goto RET_LABEL;
1738 RET_LABEL:;
1739 return var;
1740 }
1741 /* method ini#ConfigNode#init for (self: ConfigNode) */
1742 void ini___ini__ConfigNode___core__kernel__Object__init(val* self) {
1743 {
1744 ((void(*)(val* self))(self->class->vft[COLOR_ini___ini__ConfigNode___core__kernel__Object__init]))(self); /* init on <self:ConfigNode>*/
1745 }
1746 RET_LABEL:;
1747 }