Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / csv.sep.1.c
1 #include "csv.sep.0.h"
2 /* method csv$Text$escape_to_csv for (self: Text, Char, Char, String): String */
3 val* csv___core__Text___escape_to_csv(val* self, uint32_t p0, uint32_t p1, val* p2) {
4 val* var /* : String */;
5 uint32_t var_sep_char /* var sep_char: Char */;
6 uint32_t var_delim_char /* var delim_char: Char */;
7 val* var_eol /* var eol: String */;
8 long var1 /* : Int */;
9 long var_add_sp /* var add_sp: Int */;
10 short int var2 /* : Bool */;
11 short int var4 /* : Bool */;
12 val* var5 /* : String */;
13 static val* varoncenew;
14 static int varoncenew_guard;
15 val* var6 /* : Buffer */;
16 val* var7 /* : Buffer */;
17 long var8 /* : Int */;
18 long var9 /* : Int */;
19 short int var11 /* : Bool */;
20 int cltype;
21 int idtype;
22 const char* var_class_name;
23 long var12 /* : Int */;
24 val* var13 /* : Buffer */;
25 val* var_bf /* var bf: Buffer */;
26 long var_i /* var i: Int */;
27 long var14 /* : Int */;
28 long var_ /* var : Int */;
29 short int var15 /* : Bool */;
30 short int var17 /* : Bool */;
31 int cltype18;
32 int idtype19;
33 const char* var_class_name20;
34 short int var21 /* : Bool */;
35 uint32_t var22 /* : Char */;
36 uint32_t var_c /* var c: Char */;
37 short int var23 /* : Bool */;
38 short int var25 /* : Bool */;
39 long var26 /* : Int */;
40 val* var27 /* : String */;
41 var_sep_char = p0;
42 var_delim_char = p1;
43 var_eol = p2;
44 {
45 var1 = csv___core__Text___chars_to_escape_csv(self, var_sep_char, var_delim_char, var_eol);
46 }
47 var_add_sp = var1;
48 {
49 { /* Inline kernel$Int$== (var_add_sp,0l) on <var_add_sp:Int> */
50 var4 = var_add_sp == 0l;
51 var2 = var4;
52 goto RET_LABEL3;
53 RET_LABEL3:(void)0;
54 }
55 }
56 if (var2){
57 {
58 var5 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Object__to_s]))(self); /* to_s on <self:Text>*/
59 }
60 var = var5;
61 goto RET_LABEL;
62 } else {
63 }
64 if (likely(varoncenew_guard)) {
65 var6 = varoncenew;
66 } else {
67 var7 = NEW_core__Buffer(&type_core__Buffer);
68 var6 = var7;
69 varoncenew = var6;
70 varoncenew_guard = 1;
71 }
72 {
73 var8 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__byte_length]))(self); /* byte_length on <self:Text>*/
74 }
75 {
76 { /* Inline kernel$Int$+ (var_add_sp,var8) on <var_add_sp:Int> */
77 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
78 /* <var8:Int> isa OTHER */
79 var11 = 1; /* easy <var8:Int> isa OTHER*/
80 if (unlikely(!var11)) {
81 var_class_name = type_core__Int.name;
82 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
83 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
84 fatal_exit(1);
85 }
86 var12 = var_add_sp + var8;
87 var9 = var12;
88 goto RET_LABEL10;
89 RET_LABEL10:(void)0;
90 }
91 }
92 {
93 var13 = core__flat___Buffer___with_cap(var6, var9);
94 }
95 var_bf = var13;
96 {
97 ((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on <var_bf:Buffer>*/
98 }
99 var_i = 0l;
100 {
101 var14 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
102 }
103 var_ = var14;
104 for(;;) {
105 {
106 { /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
107 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
108 /* <var_:Int> isa OTHER */
109 var17 = 1; /* easy <var_:Int> isa OTHER*/
110 if (unlikely(!var17)) {
111 var_class_name20 = type_core__Int.name;
112 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
113 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
114 fatal_exit(1);
115 }
116 var21 = var_i < var_;
117 var15 = var21;
118 goto RET_LABEL16;
119 RET_LABEL16:(void)0;
120 }
121 }
122 if (var15){
123 } else {
124 goto BREAK_label;
125 }
126 {
127 var22 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on <self:Text>*/
128 }
129 var_c = var22;
130 {
131 { /* Inline kernel$Char$== (var_c,var_delim_char) on <var_c:Char> */
132 var25 = var_c == var_delim_char;
133 var23 = var25;
134 goto RET_LABEL24;
135 RET_LABEL24:(void)0;
136 }
137 }
138 if (var23){
139 {
140 ((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on <var_bf:Buffer>*/
141 }
142 } else {
143 }
144 {
145 ((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on <var_bf:Buffer>*/
146 }
147 {
148 var26 = core___core__Int___Discrete__successor(var_i, 1l);
149 }
150 var_i = var26;
151 }
152 BREAK_label: (void)0;
153 {
154 ((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on <var_bf:Buffer>*/
155 }
156 {
157 var27 = ((val*(*)(val* self))(var_bf->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_bf); /* to_s on <var_bf:Buffer>*/
158 }
159 var = var27;
160 goto RET_LABEL;
161 RET_LABEL:;
162 return var;
163 }
164 /* method csv$Text$chars_to_escape_csv for (self: Text, Char, Char, String): Int */
165 long csv___core__Text___chars_to_escape_csv(val* self, uint32_t p0, uint32_t p1, val* p2) {
166 long var /* : Int */;
167 uint32_t var_sep_char /* var sep_char: Char */;
168 uint32_t var_delim_char /* var delim_char: Char */;
169 val* var_eol /* var eol: String */;
170 long var_more_ln /* var more_ln: Int */;
171 long var1 /* : Int */;
172 long var_ln /* var ln: Int */;
173 short int var_need_esc /* var need_esc: Bool */;
174 uint32_t var2 /* : Char */;
175 uint32_t var_fst_eol /* var fst_eol: Char */;
176 long var_i /* var i: Int */;
177 short int var3 /* : Bool */;
178 short int var5 /* : Bool */;
179 int cltype;
180 int idtype;
181 const char* var_class_name;
182 short int var6 /* : Bool */;
183 uint32_t var7 /* : Char */;
184 uint32_t var_c /* var c: Char */;
185 short int var8 /* : Bool */;
186 short int var10 /* : Bool */;
187 long var11 /* : Int */;
188 short int var13 /* : Bool */;
189 int cltype14;
190 int idtype15;
191 const char* var_class_name16;
192 long var17 /* : Int */;
193 short int var18 /* : Bool */;
194 short int var20 /* : Bool */;
195 long var_j /* var j: Int */;
196 long var21 /* : Int */;
197 long var_ /* var : Int */;
198 short int var22 /* : Bool */;
199 short int var24 /* : Bool */;
200 int cltype25;
201 int idtype26;
202 const char* var_class_name27;
203 short int var28 /* : Bool */;
204 long var29 /* : Int */;
205 short int var31 /* : Bool */;
206 int cltype32;
207 int idtype33;
208 const char* var_class_name34;
209 long var35 /* : Int */;
210 uint32_t var36 /* : Char */;
211 uint32_t var37 /* : Char */;
212 short int var38 /* : Bool */;
213 short int var40 /* : Bool */;
214 short int var41 /* : Bool */;
215 long var42 /* : Int */;
216 short int var44 /* : Bool */;
217 int cltype45;
218 int idtype46;
219 const char* var_class_name47;
220 long var48 /* : Int */;
221 long var49 /* : Int */;
222 short int var50 /* : Bool */;
223 short int var52 /* : Bool */;
224 long var53 /* : Int */;
225 short int var55 /* : Bool */;
226 int cltype56;
227 int idtype57;
228 const char* var_class_name58;
229 long var59 /* : Int */;
230 long var61 /* : Int */;
231 long var62 /* : Int */;
232 short int var64 /* : Bool */;
233 int cltype65;
234 int idtype66;
235 const char* var_class_name67;
236 long var68 /* : Int */;
237 long var_more /* var more: Int */;
238 long var69 /* : Int */;
239 short int var71 /* : Bool */;
240 int cltype72;
241 int idtype73;
242 const char* var_class_name74;
243 long var75 /* : Int */;
244 var_sep_char = p0;
245 var_delim_char = p1;
246 var_eol = p2;
247 var_more_ln = 0l;
248 {
249 var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
250 }
251 var_ln = var1;
252 var_need_esc = 0;
253 {
254 var2 = core___core__Text___first(var_eol);
255 }
256 var_fst_eol = var2;
257 var_i = 0l;
258 for(;;) {
259 {
260 { /* Inline kernel$Int$< (var_i,var_ln) on <var_i:Int> */
261 /* Covariant cast for argument 0 (i) <var_ln:Int> isa OTHER */
262 /* <var_ln:Int> isa OTHER */
263 var5 = 1; /* easy <var_ln:Int> isa OTHER*/
264 if (unlikely(!var5)) {
265 var_class_name = type_core__Int.name;
266 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
267 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
268 fatal_exit(1);
269 }
270 var6 = var_i < var_ln;
271 var3 = var6;
272 goto RET_LABEL4;
273 RET_LABEL4:(void)0;
274 }
275 }
276 if (var3){
277 {
278 var7 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on <self:Text>*/
279 }
280 var_c = var7;
281 {
282 { /* Inline kernel$Char$== (var_c,var_delim_char) on <var_c:Char> */
283 var10 = var_c == var_delim_char;
284 var8 = var10;
285 goto RET_LABEL9;
286 RET_LABEL9:(void)0;
287 }
288 }
289 if (var8){
290 {
291 { /* Inline kernel$Int$+ (var_more_ln,1l) on <var_more_ln:Int> */
292 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
293 /* <1l:Int> isa OTHER */
294 var13 = 1; /* easy <1l:Int> isa OTHER*/
295 if (unlikely(!var13)) {
296 var_class_name16 = type_core__Int.name;
297 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
298 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
299 fatal_exit(1);
300 }
301 var17 = var_more_ln + 1l;
302 var11 = var17;
303 goto RET_LABEL12;
304 RET_LABEL12:(void)0;
305 }
306 }
307 var_more_ln = var11;
308 } else {
309 }
310 {
311 { /* Inline kernel$Char$== (var_c,var_fst_eol) on <var_c:Char> */
312 var20 = var_c == var_fst_eol;
313 var18 = var20;
314 goto RET_LABEL19;
315 RET_LABEL19:(void)0;
316 }
317 }
318 if (var18){
319 var_need_esc = 1;
320 var_j = 1l;
321 {
322 var21 = ((long(*)(val* self))(var_eol->class->vft[COLOR_core__abstract_text__Text__length]))(var_eol); /* length on <var_eol:String>*/
323 }
324 var_ = var21;
325 for(;;) {
326 {
327 { /* Inline kernel$Int$< (var_j,var_) on <var_j:Int> */
328 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
329 /* <var_:Int> isa OTHER */
330 var24 = 1; /* easy <var_:Int> isa OTHER*/
331 if (unlikely(!var24)) {
332 var_class_name27 = type_core__Int.name;
333 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
334 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
335 fatal_exit(1);
336 }
337 var28 = var_j < var_;
338 var22 = var28;
339 goto RET_LABEL23;
340 RET_LABEL23:(void)0;
341 }
342 }
343 if (var22){
344 } else {
345 goto BREAK_label;
346 }
347 {
348 { /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
349 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
350 /* <1l:Int> isa OTHER */
351 var31 = 1; /* easy <1l:Int> isa OTHER*/
352 if (unlikely(!var31)) {
353 var_class_name34 = type_core__Int.name;
354 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
355 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
356 fatal_exit(1);
357 }
358 var35 = var_i + 1l;
359 var29 = var35;
360 goto RET_LABEL30;
361 RET_LABEL30:(void)0;
362 }
363 }
364 var_i = var29;
365 {
366 var36 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on <self:Text>*/
367 }
368 var_c = var36;
369 {
370 var37 = ((uint32_t(*)(val* self, long p0))(var_eol->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(var_eol, var_j); /* [] on <var_eol:String>*/
371 }
372 {
373 { /* Inline kernel$Char$!= (var_c,var37) on <var_c:Char> */
374 var40 = var_c == var37;
375 var41 = !var40;
376 var38 = var41;
377 goto RET_LABEL39;
378 RET_LABEL39:(void)0;
379 }
380 }
381 if (var38){
382 {
383 { /* Inline kernel$Int$- (var_i,var_j) on <var_i:Int> */
384 /* Covariant cast for argument 0 (i) <var_j:Int> isa OTHER */
385 /* <var_j:Int> isa OTHER */
386 var44 = 1; /* easy <var_j:Int> isa OTHER*/
387 if (unlikely(!var44)) {
388 var_class_name47 = type_core__Int.name;
389 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
390 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
391 fatal_exit(1);
392 }
393 var48 = var_i - var_j;
394 var42 = var48;
395 goto RET_LABEL43;
396 RET_LABEL43:(void)0;
397 }
398 }
399 var_i = var42;
400 var_need_esc = 0;
401 goto BREAK_label;
402 } else {
403 }
404 {
405 var49 = core___core__Int___Discrete__successor(var_j, 1l);
406 }
407 var_j = var49;
408 }
409 BREAK_label: (void)0;
410 } else {
411 }
412 {
413 { /* Inline kernel$Char$== (var_c,var_sep_char) on <var_c:Char> */
414 var52 = var_c == var_sep_char;
415 var50 = var52;
416 goto RET_LABEL51;
417 RET_LABEL51:(void)0;
418 }
419 }
420 if (var50){
421 var_need_esc = 1;
422 } else {
423 }
424 {
425 { /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
426 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
427 /* <1l:Int> isa OTHER */
428 var55 = 1; /* easy <1l:Int> isa OTHER*/
429 if (unlikely(!var55)) {
430 var_class_name58 = type_core__Int.name;
431 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
432 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
433 fatal_exit(1);
434 }
435 var59 = var_i + 1l;
436 var53 = var59;
437 goto RET_LABEL54;
438 RET_LABEL54:(void)0;
439 }
440 }
441 var_i = var53;
442 } else {
443 goto BREAK_label60;
444 }
445 }
446 BREAK_label60: (void)0;
447 {
448 var61 = core__abstract_text___Char___u8char_len(var_delim_char);
449 }
450 {
451 { /* Inline kernel$Int$* (var_more_ln,var61) on <var_more_ln:Int> */
452 /* Covariant cast for argument 0 (i) <var61:Int> isa OTHER */
453 /* <var61:Int> isa OTHER */
454 var64 = 1; /* easy <var61:Int> isa OTHER*/
455 if (unlikely(!var64)) {
456 var_class_name67 = type_core__Int.name;
457 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name67);
458 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 732);
459 fatal_exit(1);
460 }
461 var68 = var_more_ln * var61;
462 var62 = var68;
463 goto RET_LABEL63;
464 RET_LABEL63:(void)0;
465 }
466 }
467 var_more = var62;
468 if (var_need_esc){
469 {
470 { /* Inline kernel$Int$+ (var_more,2l) on <var_more:Int> */
471 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
472 /* <2l:Int> isa OTHER */
473 var71 = 1; /* easy <2l:Int> isa OTHER*/
474 if (unlikely(!var71)) {
475 var_class_name74 = type_core__Int.name;
476 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
477 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
478 fatal_exit(1);
479 }
480 var75 = var_more + 2l;
481 var69 = var75;
482 goto RET_LABEL70;
483 RET_LABEL70:(void)0;
484 }
485 }
486 var_more = var69;
487 } else {
488 }
489 var = var_more;
490 goto RET_LABEL;
491 RET_LABEL:;
492 return var;
493 }
494 /* method csv$CsvStream$delimiter for (self: CsvStream): Char */
495 uint32_t csv___csv__CsvStream___delimiter(val* self) {
496 uint32_t var /* : Char */;
497 uint32_t var1 /* : Char */;
498 var1 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter on <self:CsvStream> */
499 var = var1;
500 RET_LABEL:;
501 return var;
502 }
503 /* method csv$CsvStream$delimiter= for (self: CsvStream, Char) */
504 void csv___csv__CsvStream___delimiter_61d(val* self, uint32_t p0) {
505 self->attrs[COLOR_csv__CsvStream___delimiter].c = p0; /* _delimiter on <self:CsvStream> */
506 RET_LABEL:;
507 }
508 /* method csv$CsvStream$separator for (self: CsvStream): Char */
509 uint32_t csv___csv__CsvStream___separator(val* self) {
510 uint32_t var /* : Char */;
511 uint32_t var1 /* : Char */;
512 var1 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on <self:CsvStream> */
513 var = var1;
514 RET_LABEL:;
515 return var;
516 }
517 /* method csv$CsvStream$separator= for (self: CsvStream, Char) */
518 void csv___csv__CsvStream___separator_61d(val* self, uint32_t p0) {
519 self->attrs[COLOR_csv__CsvStream___separator].c = p0; /* _separator on <self:CsvStream> */
520 RET_LABEL:;
521 }
522 /* method csv$CsvStream$eol for (self: CsvStream): String */
523 val* csv___csv__CsvStream___eol(val* self) {
524 val* var /* : String */;
525 val* var1 /* : String */;
526 var1 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on <self:CsvStream> */
527 if (unlikely(var1 == NULL)) {
528 if(catchStack.cursor >= 0){
529 longjmp(catchStack.envs[catchStack.cursor], 1);
530 }
531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
532 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112);
533 fatal_exit(1);
534 }
535 var = var1;
536 RET_LABEL:;
537 return var;
538 }
539 /* method csv$CsvStream$eol= for (self: CsvStream, String) */
540 void csv___csv__CsvStream___eol_61d(val* self, val* p0) {
541 self->attrs[COLOR_csv__CsvStream___eol].val = p0; /* _eol on <self:CsvStream> */
542 RET_LABEL:;
543 }
544 /* method csv$CsvDocument$header for (self: CsvDocument): Array[String] */
545 val* csv___csv__CsvDocument___header(val* self) {
546 val* var /* : Array[String] */;
547 val* var1 /* : Array[String] */;
548 var1 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
549 if (unlikely(var1 == NULL)) {
550 if(catchStack.cursor >= 0){
551 longjmp(catchStack.envs[catchStack.cursor], 1);
552 }
553 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
554 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121);
555 fatal_exit(1);
556 }
557 var = var1;
558 RET_LABEL:;
559 return var;
560 }
561 /* method csv$CsvDocument$header= for (self: CsvDocument, nullable Array[String]) */
562 void csv___csv__CsvDocument___header_61d(val* self, val* p0) {
563 val* var /* : Array[String] */;
564 val* var1 /* : Array[String] */;
565 if (p0 == NULL) {
566 var1 = NEW_core__Array(&type_core__Array__core__String);
567 {
568 core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[String]>*/
569 }
570 self->attrs[COLOR_csv__CsvDocument___header].val = var1; /* _header on <self:CsvDocument> */
571 var = var1;
572 } else {
573 var = p0;
574 }
575 self->attrs[COLOR_csv__CsvDocument___header].val = var; /* _header on <self:CsvDocument> */
576 RET_LABEL:;
577 }
578 /* method csv$CsvDocument$records for (self: CsvDocument): Array[Array[String]] */
579 val* csv___csv__CsvDocument___records(val* self) {
580 val* var /* : Array[Array[String]] */;
581 val* var1 /* : Array[Array[String]] */;
582 var1 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
583 if (unlikely(var1 == NULL)) {
584 if(catchStack.cursor >= 0){
585 longjmp(catchStack.envs[catchStack.cursor], 1);
586 }
587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
588 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126);
589 fatal_exit(1);
590 }
591 var = var1;
592 RET_LABEL:;
593 return var;
594 }
595 /* method csv$CsvDocument$records= for (self: CsvDocument, nullable Array[Array[String]]) */
596 void csv___csv__CsvDocument___records_61d(val* self, val* p0) {
597 val* var /* : Array[Array[String]] */;
598 val* var1 /* : Array[Array[String]] */;
599 if (p0 == NULL) {
600 var1 = NEW_core__Array(&type_core__Array__core__Array__core__String);
601 {
602 core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[Array[String]]>*/
603 }
604 self->attrs[COLOR_csv__CsvDocument___records].val = var1; /* _records on <self:CsvDocument> */
605 var = var1;
606 } else {
607 var = p0;
608 }
609 self->attrs[COLOR_csv__CsvDocument___records].val = var; /* _records on <self:CsvDocument> */
610 RET_LABEL:;
611 }
612 /* method csv$CsvDocument$add_record for (self: CsvDocument, Array[Object]) */
613 void csv___csv__CsvDocument___add_record(val* self, val* p0) {
614 val* var_objs /* var objs: Array[Object] */;
615 val* var /* : Array[String] */;
616 long var1 /* : Int */;
617 long var3 /* : Int */;
618 val* var_ln /* var ln: Array[String] */;
619 val* var_ /* var : Array[Object] */;
620 val* var4 /* : IndexedIterator[nullable Object] */;
621 val* var_5 /* var : IndexedIterator[Object] */;
622 short int var6 /* : Bool */;
623 val* var7 /* : nullable Object */;
624 val* var_i /* var i: Object */;
625 val* var8 /* : String */;
626 val* var9 /* : Array[Array[String]] */;
627 val* var11 /* : Array[Array[String]] */;
628 var_objs = p0;
629 var = NEW_core__Array(&type_core__Array__core__String);
630 {
631 { /* Inline array$AbstractArrayRead$length (var_objs) on <var_objs:Array[Object]> */
632 var3 = var_objs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_objs:Array[Object]> */
633 var1 = var3;
634 RET_LABEL2:(void)0;
635 }
636 }
637 {
638 core___core__Array___with_capacity(var, var1); /* Direct call array$Array$with_capacity on <var:Array[String]>*/
639 }
640 var_ln = var;
641 var_ = var_objs;
642 {
643 var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
644 }
645 var_5 = var4;
646 for(;;) {
647 {
648 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[Object]>*/
649 }
650 if (var6){
651 } else {
652 goto BREAK_label;
653 }
654 {
655 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[Object]>*/
656 }
657 var_i = var7;
658 {
659 var8 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_i); /* to_s on <var_i:Object>*/
660 }
661 {
662 core___core__Array___core__abstract_collection__SimpleCollection__add(var_ln, var8); /* Direct call array$Array$add on <var_ln:Array[String]>*/
663 }
664 {
665 ((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[Object]>*/
666 }
667 }
668 BREAK_label: (void)0;
669 {
670 ((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[Object]>*/
671 }
672 {
673 { /* Inline csv$CsvDocument$records (self) on <self:CsvDocument> */
674 var11 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
675 if (unlikely(var11 == NULL)) {
676 if(catchStack.cursor >= 0){
677 longjmp(catchStack.envs[catchStack.cursor], 1);
678 }
679 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
680 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126);
681 fatal_exit(1);
682 }
683 var9 = var11;
684 RET_LABEL10:(void)0;
685 }
686 }
687 {
688 core___core__Array___core__abstract_collection__SimpleCollection__add(var9, var_ln); /* Direct call array$Array$add on <var9:Array[Array[String]]>*/
689 }
690 RET_LABEL:;
691 }
692 /* method csv$CsvDocument$write_to for (self: CsvDocument, Writer) */
693 void csv___csv__CsvDocument___core__stream__Writable__write_to(val* self, val* p0) {
694 val* var_stream /* var stream: Writer */;
695 val* var /* : CsvWriter */;
696 val* var_s /* var s: CsvWriter */;
697 uint32_t var1 /* : Char */;
698 uint32_t var3 /* : Char */;
699 val* var5 /* : String */;
700 val* var7 /* : String */;
701 uint32_t var9 /* : Char */;
702 uint32_t var11 /* : Char */;
703 val* var13 /* : Array[String] */;
704 val* var15 /* : Array[String] */;
705 short int var16 /* : Bool */;
706 short int var17 /* : Bool */;
707 val* var18 /* : Array[String] */;
708 val* var20 /* : Array[String] */;
709 val* var21 /* : Array[Array[String]] */;
710 val* var23 /* : Array[Array[String]] */;
711 var_stream = p0;
712 var = NEW_csv__CsvWriter(&type_csv__CsvWriter);
713 {
714 ((void(*)(val* self, val* p0))(var->class->vft[COLOR_csv__CsvWriter__ostream_61d]))(var, var_stream); /* ostream= on <var:CsvWriter>*/
715 }
716 {
717 ((void(*)(val* self))(var->class->vft[COLOR_core__kernel__Object__init]))(var); /* init on <var:CsvWriter>*/
718 }
719 var_s = var;
720 {
721 { /* Inline csv$CsvStream$separator (self) on <self:CsvDocument> */
722 var3 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on <self:CsvDocument> */
723 var1 = var3;
724 RET_LABEL2:(void)0;
725 }
726 }
727 {
728 { /* Inline csv$CsvStream$separator= (var_s,var1) on <var_s:CsvWriter> */
729 var_s->attrs[COLOR_csv__CsvStream___separator].c = var1; /* _separator on <var_s:CsvWriter> */
730 RET_LABEL4:(void)0;
731 }
732 }
733 {
734 { /* Inline csv$CsvStream$eol (self) on <self:CsvDocument> */
735 var7 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on <self:CsvDocument> */
736 if (unlikely(var7 == NULL)) {
737 if(catchStack.cursor >= 0){
738 longjmp(catchStack.envs[catchStack.cursor], 1);
739 }
740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
741 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112);
742 fatal_exit(1);
743 }
744 var5 = var7;
745 RET_LABEL6:(void)0;
746 }
747 }
748 {
749 { /* Inline csv$CsvStream$eol= (var_s,var5) on <var_s:CsvWriter> */
750 var_s->attrs[COLOR_csv__CsvStream___eol].val = var5; /* _eol on <var_s:CsvWriter> */
751 RET_LABEL8:(void)0;
752 }
753 }
754 {
755 { /* Inline csv$CsvStream$delimiter (self) on <self:CsvDocument> */
756 var11 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter on <self:CsvDocument> */
757 var9 = var11;
758 RET_LABEL10:(void)0;
759 }
760 }
761 {
762 { /* Inline csv$CsvStream$delimiter= (var_s,var9) on <var_s:CsvWriter> */
763 var_s->attrs[COLOR_csv__CsvStream___delimiter].c = var9; /* _delimiter on <var_s:CsvWriter> */
764 RET_LABEL12:(void)0;
765 }
766 }
767 {
768 { /* Inline csv$CsvDocument$header (self) on <self:CsvDocument> */
769 var15 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
770 if (unlikely(var15 == NULL)) {
771 if(catchStack.cursor >= 0){
772 longjmp(catchStack.envs[catchStack.cursor], 1);
773 }
774 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
775 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121);
776 fatal_exit(1);
777 }
778 var13 = var15;
779 RET_LABEL14:(void)0;
780 }
781 }
782 {
783 var16 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var13);
784 }
785 var17 = !var16;
786 if (var17){
787 {
788 { /* Inline csv$CsvDocument$header (self) on <self:CsvDocument> */
789 var20 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
790 if (unlikely(var20 == NULL)) {
791 if(catchStack.cursor >= 0){
792 longjmp(catchStack.envs[catchStack.cursor], 1);
793 }
794 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
795 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121);
796 fatal_exit(1);
797 }
798 var18 = var20;
799 RET_LABEL19:(void)0;
800 }
801 }
802 {
803 csv___csv__CsvWriter___write_line(var_s, var18); /* Direct call csv$CsvWriter$write_line on <var_s:CsvWriter>*/
804 }
805 } else {
806 }
807 {
808 { /* Inline csv$CsvDocument$records (self) on <self:CsvDocument> */
809 var23 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
810 if (unlikely(var23 == NULL)) {
811 if(catchStack.cursor >= 0){
812 longjmp(catchStack.envs[catchStack.cursor], 1);
813 }
814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
815 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126);
816 fatal_exit(1);
817 }
818 var21 = var23;
819 RET_LABEL22:(void)0;
820 }
821 }
822 {
823 csv___csv__CsvWriter___write_lines(var_s, var21); /* Direct call csv$CsvWriter$write_lines on <var_s:CsvWriter>*/
824 }
825 RET_LABEL:;
826 }
827 /* method csv$CsvDocument$init for (self: CsvDocument) */
828 void csv___csv__CsvDocument___core__kernel__Object__init(val* self) {
829 {
830 ((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvDocument___core__kernel__Object__init]))(self); /* init on <self:CsvDocument>*/
831 }
832 RET_LABEL:;
833 }
834 /* method csv$CsvWriter$ostream for (self: CsvWriter): Writer */
835 val* csv___csv__CsvWriter___ostream(val* self) {
836 val* var /* : Writer */;
837 val* var1 /* : Writer */;
838 var1 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
839 if (unlikely(var1 == NULL)) {
840 if(catchStack.cursor >= 0){
841 longjmp(catchStack.envs[catchStack.cursor], 1);
842 }
843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
844 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 186);
845 fatal_exit(1);
846 }
847 var = var1;
848 RET_LABEL:;
849 return var;
850 }
851 /* method csv$CsvWriter$ostream= for (self: CsvWriter, Writer) */
852 void csv___csv__CsvWriter___ostream_61d(val* self, val* p0) {
853 self->attrs[COLOR_csv__CsvWriter___ostream].val = p0; /* _ostream on <self:CsvWriter> */
854 RET_LABEL:;
855 }
856 /* method csv$CsvWriter$write_lines for (self: CsvWriter, Array[Array[Object]]) */
857 void csv___csv__CsvWriter___write_lines(val* self, val* p0) {
858 val* var_lines /* var lines: Array[Array[Object]] */;
859 val* var_ /* var : Array[Array[Object]] */;
860 val* var /* : IndexedIterator[nullable Object] */;
861 val* var_1 /* var : IndexedIterator[Array[Object]] */;
862 short int var2 /* : Bool */;
863 val* var3 /* : nullable Object */;
864 val* var_i /* var i: Array[Object] */;
865 var_lines = p0;
866 var_ = var_lines;
867 {
868 var = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
869 }
870 var_1 = var;
871 for(;;) {
872 {
873 var2 = ((short int(*)(val* self))((((long)var_1&3)?class_info[((long)var_1&3)]:var_1->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_1); /* is_ok on <var_1:IndexedIterator[Array[Object]]>*/
874 }
875 if (var2){
876 } else {
877 goto BREAK_label;
878 }
879 {
880 var3 = ((val*(*)(val* self))((((long)var_1&3)?class_info[((long)var_1&3)]:var_1->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_1); /* item on <var_1:IndexedIterator[Array[Object]]>*/
881 }
882 var_i = var3;
883 {
884 csv___csv__CsvWriter___write_line(self, var_i); /* Direct call csv$CsvWriter$write_line on <self:CsvWriter>*/
885 }
886 {
887 ((void(*)(val* self))((((long)var_1&3)?class_info[((long)var_1&3)]:var_1->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_1); /* next on <var_1:IndexedIterator[Array[Object]]>*/
888 }
889 }
890 BREAK_label: (void)0;
891 {
892 ((void(*)(val* self))((((long)var_1&3)?class_info[((long)var_1&3)]:var_1->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_1); /* finish on <var_1:IndexedIterator[Array[Object]]>*/
893 }
894 RET_LABEL:;
895 }
896 /* method csv$CsvWriter$write_line for (self: CsvWriter, Array[Object]) */
897 void csv___csv__CsvWriter___write_line(val* self, val* p0) {
898 val* var_line /* var line: Array[Object] */;
899 val* var /* : Writer */;
900 val* var2 /* : Writer */;
901 val* var_os /* var os: Writer */;
902 uint32_t var3 /* : Char */;
903 uint32_t var5 /* : Char */;
904 uint32_t var_esc /* var esc: Char */;
905 uint32_t var6 /* : Char */;
906 uint32_t var8 /* : Char */;
907 uint32_t var_sep /* var sep: Char */;
908 val* var9 /* : String */;
909 val* var11 /* : String */;
910 val* var_eol /* var eol: String */;
911 long var_i /* var i: Int */;
912 long var12 /* : Int */;
913 long var14 /* : Int */;
914 long var15 /* : Int */;
915 short int var17 /* : Bool */;
916 int cltype;
917 int idtype;
918 const char* var_class_name;
919 long var18 /* : Int */;
920 long var_ /* var : Int */;
921 short int var19 /* : Bool */;
922 short int var21 /* : Bool */;
923 int cltype22;
924 int idtype23;
925 const char* var_class_name24;
926 short int var25 /* : Bool */;
927 val* var26 /* : nullable Object */;
928 val* var27 /* : String */;
929 val* var28 /* : String */;
930 long var29 /* : Int */;
931 val* var30 /* : nullable Object */;
932 val* var31 /* : String */;
933 val* var32 /* : String */;
934 var_line = p0;
935 {
936 { /* Inline csv$CsvWriter$ostream (self) on <self:CsvWriter> */
937 var2 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
938 if (unlikely(var2 == NULL)) {
939 if(catchStack.cursor >= 0){
940 longjmp(catchStack.envs[catchStack.cursor], 1);
941 }
942 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
943 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 186);
944 fatal_exit(1);
945 }
946 var = var2;
947 RET_LABEL1:(void)0;
948 }
949 }
950 var_os = var;
951 {
952 { /* Inline csv$CsvStream$delimiter (self) on <self:CsvWriter> */
953 var5 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter on <self:CsvWriter> */
954 var3 = var5;
955 RET_LABEL4:(void)0;
956 }
957 }
958 var_esc = var3;
959 {
960 { /* Inline csv$CsvStream$separator (self) on <self:CsvWriter> */
961 var8 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on <self:CsvWriter> */
962 var6 = var8;
963 RET_LABEL7:(void)0;
964 }
965 }
966 var_sep = var6;
967 {
968 { /* Inline csv$CsvStream$eol (self) on <self:CsvWriter> */
969 var11 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on <self:CsvWriter> */
970 if (unlikely(var11 == NULL)) {
971 if(catchStack.cursor >= 0){
972 longjmp(catchStack.envs[catchStack.cursor], 1);
973 }
974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
975 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112);
976 fatal_exit(1);
977 }
978 var9 = var11;
979 RET_LABEL10:(void)0;
980 }
981 }
982 var_eol = var9;
983 var_i = 0l;
984 {
985 { /* Inline array$AbstractArrayRead$length (var_line) on <var_line:Array[Object]> */
986 var14 = var_line->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_line:Array[Object]> */
987 var12 = var14;
988 RET_LABEL13:(void)0;
989 }
990 }
991 {
992 { /* Inline kernel$Int$- (var12,1l) on <var12:Int> */
993 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
994 /* <1l:Int> isa OTHER */
995 var17 = 1; /* easy <1l:Int> isa OTHER*/
996 if (unlikely(!var17)) {
997 var_class_name = type_core__Int.name;
998 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
999 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1000 fatal_exit(1);
1001 }
1002 var18 = var12 - 1l;
1003 var15 = var18;
1004 goto RET_LABEL16;
1005 RET_LABEL16:(void)0;
1006 }
1007 }
1008 var_ = var15;
1009 for(;;) {
1010 {
1011 { /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
1012 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
1013 /* <var_:Int> isa OTHER */
1014 var21 = 1; /* easy <var_:Int> isa OTHER*/
1015 if (unlikely(!var21)) {
1016 var_class_name24 = type_core__Int.name;
1017 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
1018 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
1019 fatal_exit(1);
1020 }
1021 var25 = var_i < var_;
1022 var19 = var25;
1023 goto RET_LABEL20;
1024 RET_LABEL20:(void)0;
1025 }
1026 }
1027 if (var19){
1028 } else {
1029 goto BREAK_label;
1030 }
1031 {
1032 var26 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_line, var_i);
1033 }
1034 {
1035 var27 = ((val*(*)(val* self))((((long)var26&3)?class_info[((long)var26&3)]:var26->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var26); /* to_s on <var26:nullable Object(Object)>*/
1036 }
1037 {
1038 var28 = csv___core__Text___escape_to_csv(var27, var_sep, var_esc, var_eol);
1039 }
1040 {
1041 core___core__FileWriter___core__stream__Writer__write(var_os, var28); /* Direct call file$FileWriter$write on <var_os:Writer>*/
1042 }
1043 {
1044 core___core__Writer___write_char(var_os, var_sep); /* Direct call stream$Writer$write_char on <var_os:Writer>*/
1045 }
1046 {
1047 var29 = core___core__Int___Discrete__successor(var_i, 1l);
1048 }
1049 var_i = var29;
1050 }
1051 BREAK_label: (void)0;
1052 {
1053 var30 = core___core__SequenceRead___last(var_line);
1054 }
1055 {
1056 var31 = ((val*(*)(val* self))((((long)var30&3)?class_info[((long)var30&3)]:var30->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var30); /* to_s on <var30:nullable Object(Object)>*/
1057 }
1058 {
1059 var32 = csv___core__Text___escape_to_csv(var31, var_sep, var_esc, var_eol);
1060 }
1061 {
1062 core___core__FileWriter___core__stream__Writer__write(var_os, var32); /* Direct call file$FileWriter$write on <var_os:Writer>*/
1063 }
1064 {
1065 core___core__FileWriter___core__stream__Writer__write(var_os, var_eol); /* Direct call file$FileWriter$write on <var_os:Writer>*/
1066 }
1067 RET_LABEL:;
1068 }
1069 /* method csv$CsvWriter$init for (self: CsvWriter) */
1070 void csv___csv__CsvWriter___core__kernel__Object__init(val* self) {
1071 {
1072 ((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvWriter___core__kernel__Object__init]))(self); /* init on <self:CsvWriter>*/
1073 }
1074 RET_LABEL:;
1075 }