README: document nit_env.sh
[nit.git] / c_src / csv.sep.1.c
1 #include "csv.sep.0.h"
2 /* method csv#CsvFormat#delimiter for (self: CsvFormat): Char */
3 uint32_t csv___csv__CsvFormat___delimiter(val* self) {
4 uint32_t var /* : Char */;
5 uint32_t var1 /* : Char */;
6 var1 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method csv#CsvFormat#delimiter= for (self: CsvFormat, Char) */
12 void csv___csv__CsvFormat___delimiter_61d(val* self, uint32_t p0) {
13 self->attrs[COLOR_csv__CsvFormat___delimiter].c = p0; /* _delimiter on <self:CsvFormat> */
14 RET_LABEL:;
15 }
16 /* method csv#CsvFormat#separator for (self: CsvFormat): Char */
17 uint32_t csv___csv__CsvFormat___separator(val* self) {
18 uint32_t var /* : Char */;
19 uint32_t var1 /* : Char */;
20 var1 = self->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on <self:CsvFormat> */
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method csv#CsvFormat#separator= for (self: CsvFormat, Char) */
26 void csv___csv__CsvFormat___separator_61d(val* self, uint32_t p0) {
27 self->attrs[COLOR_csv__CsvFormat___separator].c = p0; /* _separator on <self:CsvFormat> */
28 RET_LABEL:;
29 }
30 /* method csv#CsvFormat#eol for (self: CsvFormat): String */
31 val* csv___csv__CsvFormat___eol(val* self) {
32 val* var /* : String */;
33 val* var1 /* : String */;
34 var1 = self->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on <self:CsvFormat> */
35 if (unlikely(var1 == NULL)) {
36 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
37 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28);
38 fatal_exit(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method csv#CsvFormat#eol= for (self: CsvFormat, String) */
45 void csv___csv__CsvFormat___eol_61d(val* self, val* p0) {
46 self->attrs[COLOR_csv__CsvFormat___eol].val = p0; /* _eol on <self:CsvFormat> */
47 RET_LABEL:;
48 }
49 /* method csv#CsvFormat#escaping for (self: CsvFormat): String */
50 val* csv___csv__CsvFormat___escaping(val* self) {
51 val* var /* : String */;
52 short int var1 /* : Bool */;
53 val* var2 /* : String */;
54 val* var3 /* : NativeArray[String] */;
55 static val* varonce;
56 uint32_t var4 /* : Char */;
57 uint32_t var6 /* : Char */;
58 val* var7 /* : String */;
59 uint32_t var8 /* : Char */;
60 uint32_t var10 /* : Char */;
61 val* var11 /* : String */;
62 val* var12 /* : String */;
63 var1 = self->attrs[COLOR_csv__CsvFormat___escaping].val != NULL; /* _escaping on <self:CsvFormat> */
64 if(likely(var1)) {
65 var2 = self->attrs[COLOR_csv__CsvFormat___escaping].val; /* _escaping on <self:CsvFormat> */
66 if (unlikely(var2 == NULL)) {
67 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escaping");
68 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 31);
69 fatal_exit(1);
70 }
71 } else {
72 if (unlikely(varonce==NULL)) {
73 var3 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
74 } else {
75 var3 = varonce;
76 varonce = NULL;
77 }
78 {
79 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
80 var6 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
81 var4 = var6;
82 RET_LABEL5:(void)0;
83 }
84 }
85 var7 = standard__string___Char___Object__to_s(var4);
86 ((struct instance_standard__NativeArray*)var3)->values[0]=var7;
87 {
88 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
89 var10 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
90 var8 = var10;
91 RET_LABEL9:(void)0;
92 }
93 }
94 var11 = standard__string___Char___Object__to_s(var8);
95 ((struct instance_standard__NativeArray*)var3)->values[1]=var11;
96 {
97 var12 = ((val*(*)(val* self))(var3->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var3); /* native_to_s on <var3:NativeArray[String]>*/
98 }
99 varonce = var3;
100 self->attrs[COLOR_csv__CsvFormat___escaping].val = var12; /* _escaping on <self:CsvFormat> */
101 var2 = var12;
102 }
103 var = var2;
104 RET_LABEL:;
105 return var;
106 }
107 /* method csv#CsvFormat#escape_cell for (self: CsvFormat, String): Text */
108 val* csv___csv__CsvFormat___escape_cell(val* self, val* p0) {
109 val* var /* : Text */;
110 val* var_cell /* var cell: String */;
111 val* var1 /* : RopeBuffer */;
112 val* var_result /* var result: RopeBuffer */;
113 uint32_t var2 /* : Char */;
114 uint32_t var4 /* : Char */;
115 uint32_t var5 /* : Char */;
116 uint32_t var7 /* : Char */;
117 val* var8 /* : String */;
118 val* var9 /* : String */;
119 val* var10 /* : Pattern */;
120 uint32_t var11 /* : Char */;
121 uint32_t var13 /* : Char */;
122 var_cell = p0;
123 var1 = NEW_standard__RopeBuffer(&type_standard__RopeBuffer);
124 {
125 standard___standard__RopeBuffer___standard__kernel__Object__init(var1); /* Direct call ropes#RopeBuffer#init on <var1:RopeBuffer>*/
126 }
127 var_result = var1;
128 {
129 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
130 var4 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
131 var2 = var4;
132 RET_LABEL3:(void)0;
133 }
134 }
135 {
136 standard___standard__RopeBuffer___standard__string__Buffer__add(var_result, var2); /* Direct call ropes#RopeBuffer#add on <var_result:RopeBuffer>*/
137 }
138 {
139 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
140 var7 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
141 var5 = var7;
142 RET_LABEL6:(void)0;
143 }
144 }
145 {
146 var8 = csv___csv__CsvFormat___escaping(self);
147 }
148 {
149 var10 = (val*)((long)(var5)<<2|2);
150 var9 = standard__string_search___Text___replace(var_cell, var10, var8);
151 }
152 {
153 standard___standard__RopeBuffer___standard__string__Buffer__append(var_result, var9); /* Direct call ropes#RopeBuffer#append on <var_result:RopeBuffer>*/
154 }
155 {
156 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
157 var13 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
158 var11 = var13;
159 RET_LABEL12:(void)0;
160 }
161 }
162 {
163 standard___standard__RopeBuffer___standard__string__Buffer__add(var_result, var11); /* Direct call ropes#RopeBuffer#add on <var_result:RopeBuffer>*/
164 }
165 var = var_result;
166 goto RET_LABEL;
167 RET_LABEL:;
168 return var;
169 }
170 /* method csv#CsvFormat#is_value_clean for (self: CsvFormat, String): Bool */
171 short int csv___csv__CsvFormat___is_value_clean(val* self, val* p0) {
172 short int var /* : Bool */;
173 val* var_value /* var value: String */;
174 val* var1 /* : SequenceRead[Char] */;
175 val* var_ /* var : SequenceRead[Char] */;
176 val* var2 /* : Iterator[nullable Object] */;
177 val* var_3 /* var : IndexedIterator[Char] */;
178 short int var4 /* : Bool */;
179 val* var5 /* : nullable Object */;
180 uint32_t var6 /* : Char */;
181 uint32_t var_c /* var c: Char */;
182 uint32_t var7 /* : Char */;
183 uint32_t var9 /* : Char */;
184 short int var10 /* : Bool */;
185 short int var12 /* : Bool */;
186 uint32_t var13 /* : Char */;
187 uint32_t var15 /* : Char */;
188 short int var16 /* : Bool */;
189 short int var18 /* : Bool */;
190 val* var19 /* : String */;
191 val* var21 /* : String */;
192 val* var22 /* : SequenceRead[Char] */;
193 val* var23 /* : nullable Object */;
194 short int var24 /* : Bool */;
195 var_value = p0;
196 {
197 var1 = ((val*(*)(val* self))(var_value->class->vft[COLOR_standard__string__Text__chars]))(var_value); /* chars on <var_value:String>*/
198 }
199 var_ = var1;
200 {
201 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:SequenceRead[Char]>*/
202 }
203 var_3 = var2;
204 for(;;) {
205 {
206 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:IndexedIterator[Char]>*/
207 }
208 if (var4){
209 {
210 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:IndexedIterator[Char]>*/
211 }
212 var6 = (uint32_t)((long)(var5)>>2);
213 var_c = var6;
214 {
215 { /* Inline csv#CsvFormat#delimiter (self) on <self:CsvFormat> */
216 var9 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on <self:CsvFormat> */
217 var7 = var9;
218 RET_LABEL8:(void)0;
219 }
220 }
221 {
222 { /* Inline kernel#Char#== (var_c,var7) on <var_c:Char> */
223 var12 = var_c == var7;
224 var10 = var12;
225 goto RET_LABEL11;
226 RET_LABEL11:(void)0;
227 }
228 }
229 if (var10){
230 var = 0;
231 goto RET_LABEL;
232 } else {
233 }
234 {
235 { /* Inline csv#CsvFormat#separator (self) on <self:CsvFormat> */
236 var15 = self->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on <self:CsvFormat> */
237 var13 = var15;
238 RET_LABEL14:(void)0;
239 }
240 }
241 {
242 { /* Inline kernel#Char#== (var_c,var13) on <var_c:Char> */
243 var18 = var_c == var13;
244 var16 = var18;
245 goto RET_LABEL17;
246 RET_LABEL17:(void)0;
247 }
248 }
249 if (var16){
250 var = 0;
251 goto RET_LABEL;
252 } else {
253 }
254 {
255 { /* Inline csv#CsvFormat#eol (self) on <self:CsvFormat> */
256 var21 = self->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on <self:CsvFormat> */
257 if (unlikely(var21 == NULL)) {
258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
259 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28);
260 fatal_exit(1);
261 }
262 var19 = var21;
263 RET_LABEL20:(void)0;
264 }
265 }
266 {
267 var22 = ((val*(*)(val* self))(var19->class->vft[COLOR_standard__string__Text__chars]))(var19); /* chars on <var19:String>*/
268 }
269 {
270 var23 = (val*)((long)(var_c)<<2|2);
271 var24 = ((short int(*)(val* self, val* p0))((((long)var22&3)?class_info[((long)var22&3)]:var22->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var22, var23); /* has on <var22:SequenceRead[Char]>*/
272 }
273 if (var24){
274 var = 0;
275 goto RET_LABEL;
276 } else {
277 }
278 {
279 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:IndexedIterator[Char]>*/
280 }
281 } else {
282 goto BREAK_label;
283 }
284 }
285 BREAK_label: (void)0;
286 {
287 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:IndexedIterator[Char]>*/
288 }
289 var = 1;
290 goto RET_LABEL;
291 RET_LABEL:;
292 return var;
293 }
294 /* method csv#CsvFormat#init for (self: CsvFormat) */
295 void csv___csv__CsvFormat___standard__kernel__Object__init(val* self) {
296 {
297 ((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvFormat___standard__kernel__Object__init]))(self); /* init on <self:CsvFormat>*/
298 }
299 RET_LABEL:;
300 }
301 /* method csv#CsvDocument#format for (self: CsvDocument): CsvFormat */
302 val* csv___csv__CsvDocument___format(val* self) {
303 val* var /* : CsvFormat */;
304 val* var1 /* : CsvFormat */;
305 var1 = self->attrs[COLOR_csv__CsvDocument___format].val; /* _format on <self:CsvDocument> */
306 if (unlikely(var1 == NULL)) {
307 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
308 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 58);
309 fatal_exit(1);
310 }
311 var = var1;
312 RET_LABEL:;
313 return var;
314 }
315 /* method csv#CsvDocument#format= for (self: CsvDocument, CsvFormat) */
316 void csv___csv__CsvDocument___format_61d(val* self, val* p0) {
317 self->attrs[COLOR_csv__CsvDocument___format].val = p0; /* _format on <self:CsvDocument> */
318 RET_LABEL:;
319 }
320 /* method csv#CsvDocument#header for (self: CsvDocument): Array[String] */
321 val* csv___csv__CsvDocument___header(val* self) {
322 val* var /* : Array[String] */;
323 val* var1 /* : Array[String] */;
324 var1 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
325 if (unlikely(var1 == NULL)) {
326 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
327 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63);
328 fatal_exit(1);
329 }
330 var = var1;
331 RET_LABEL:;
332 return var;
333 }
334 /* method csv#CsvDocument#header= for (self: CsvDocument, Array[String]) */
335 void csv___csv__CsvDocument___header_61d(val* self, val* p0) {
336 self->attrs[COLOR_csv__CsvDocument___header].val = p0; /* _header on <self:CsvDocument> */
337 RET_LABEL:;
338 }
339 /* method csv#CsvDocument#records for (self: CsvDocument): Array[Array[String]] */
340 val* csv___csv__CsvDocument___records(val* self) {
341 val* var /* : Array[Array[String]] */;
342 val* var1 /* : Array[Array[String]] */;
343 var1 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
344 if (unlikely(var1 == NULL)) {
345 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
346 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68);
347 fatal_exit(1);
348 }
349 var = var1;
350 RET_LABEL:;
351 return var;
352 }
353 /* method csv#CsvDocument#add_record for (self: CsvDocument, Array[Object]) */
354 void csv___csv__CsvDocument___add_record(val* self, val* p0) {
355 val* var_values /* var values: Array[Object] */;
356 long var /* : Int */;
357 long var2 /* : Int */;
358 val* var3 /* : Array[String] */;
359 val* var5 /* : Array[String] */;
360 long var6 /* : Int */;
361 long var8 /* : Int */;
362 short int var9 /* : Bool */;
363 short int var11 /* : Bool */;
364 val* var12 /* : Sys */;
365 val* var14 /* : Sys */;
366 val* var15 /* : Writer */;
367 val* var16 /* : NativeArray[String] */;
368 static val* varonce;
369 static val* varonce17;
370 val* var18 /* : String */;
371 char* var19 /* : NativeString */;
372 val* var20 /* : FlatString */;
373 static val* varonce21;
374 val* var22 /* : String */;
375 char* var23 /* : NativeString */;
376 val* var24 /* : FlatString */;
377 static val* varonce25;
378 val* var26 /* : String */;
379 char* var27 /* : NativeString */;
380 val* var28 /* : FlatString */;
381 val* var29 /* : Array[String] */;
382 val* var31 /* : Array[String] */;
383 long var32 /* : Int */;
384 long var34 /* : Int */;
385 val* var35 /* : String */;
386 long var36 /* : Int */;
387 long var38 /* : Int */;
388 val* var39 /* : String */;
389 val* var40 /* : String */;
390 val* var41 /* : Array[String] */;
391 val* var_record /* var record: Array[String] */;
392 val* var_ /* var : Array[Object] */;
393 val* var42 /* : ArrayIterator[nullable Object] */;
394 val* var_43 /* var : ArrayIterator[Object] */;
395 short int var44 /* : Bool */;
396 val* var45 /* : nullable Object */;
397 val* var_value /* var value: Object */;
398 val* var46 /* : String */;
399 val* var47 /* : Array[Array[String]] */;
400 val* var49 /* : Array[Array[String]] */;
401 var_values = p0;
402 {
403 { /* Inline array#AbstractArrayRead#length (var_values) on <var_values:Array[Object]> */
404 var2 = var_values->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_values:Array[Object]> */
405 var = var2;
406 RET_LABEL1:(void)0;
407 }
408 }
409 {
410 { /* Inline csv#CsvDocument#header (self) on <self:CsvDocument> */
411 var5 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
412 if (unlikely(var5 == NULL)) {
413 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
414 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63);
415 fatal_exit(1);
416 }
417 var3 = var5;
418 RET_LABEL4:(void)0;
419 }
420 }
421 {
422 { /* Inline array#AbstractArrayRead#length (var3) on <var3:Array[String]> */
423 var8 = var3->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var3:Array[String]> */
424 var6 = var8;
425 RET_LABEL7:(void)0;
426 }
427 }
428 {
429 { /* Inline kernel#Int#== (var,var6) on <var:Int> */
430 var11 = var == var6;
431 var9 = var11;
432 goto RET_LABEL10;
433 RET_LABEL10:(void)0;
434 }
435 }
436 if (unlikely(!var9)) {
437 {
438 { /* Inline kernel#Object#sys (self) on <self:CsvDocument> */
439 var14 = glob_sys;
440 var12 = var14;
441 goto RET_LABEL13;
442 RET_LABEL13:(void)0;
443 }
444 }
445 {
446 var15 = standard__file___Sys___stderr(var12);
447 }
448 if (unlikely(varonce==NULL)) {
449 var16 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
450 if (likely(varonce17!=NULL)) {
451 var18 = varonce17;
452 } else {
453 var19 = "CSV error: Header declares ";
454 var20 = standard___standard__NativeString___to_s_with_length(var19, 27l);
455 var18 = var20;
456 varonce17 = var18;
457 }
458 ((struct instance_standard__NativeArray*)var16)->values[0]=var18;
459 if (likely(varonce21!=NULL)) {
460 var22 = varonce21;
461 } else {
462 var23 = " columns, record contains ";
463 var24 = standard___standard__NativeString___to_s_with_length(var23, 26l);
464 var22 = var24;
465 varonce21 = var22;
466 }
467 ((struct instance_standard__NativeArray*)var16)->values[2]=var22;
468 if (likely(varonce25!=NULL)) {
469 var26 = varonce25;
470 } else {
471 var27 = " values.\n";
472 var28 = standard___standard__NativeString___to_s_with_length(var27, 9l);
473 var26 = var28;
474 varonce25 = var26;
475 }
476 ((struct instance_standard__NativeArray*)var16)->values[4]=var26;
477 } else {
478 var16 = varonce;
479 varonce = NULL;
480 }
481 {
482 { /* Inline csv#CsvDocument#header (self) on <self:CsvDocument> */
483 var31 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
484 if (unlikely(var31 == NULL)) {
485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
486 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63);
487 fatal_exit(1);
488 }
489 var29 = var31;
490 RET_LABEL30:(void)0;
491 }
492 }
493 {
494 { /* Inline array#AbstractArrayRead#length (var29) on <var29:Array[String]> */
495 var34 = var29->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var29:Array[String]> */
496 var32 = var34;
497 RET_LABEL33:(void)0;
498 }
499 }
500 var35 = standard__string___Int___Object__to_s(var32);
501 ((struct instance_standard__NativeArray*)var16)->values[1]=var35;
502 {
503 { /* Inline array#AbstractArrayRead#length (var_values) on <var_values:Array[Object]> */
504 var38 = var_values->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_values:Array[Object]> */
505 var36 = var38;
506 RET_LABEL37:(void)0;
507 }
508 }
509 var39 = standard__string___Int___Object__to_s(var36);
510 ((struct instance_standard__NativeArray*)var16)->values[3]=var39;
511 {
512 var40 = ((val*(*)(val* self))(var16->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
513 }
514 varonce = var16;
515 {
516 standard___standard__FileWriter___standard__stream__Writer__write(var15, var40); /* Direct call file#FileWriter#write on <var15:Writer>*/
517 }
518 PRINT_ERROR("Runtime error: %s", "Assert failed");
519 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 81);
520 fatal_exit(1);
521 }
522 var41 = NEW_standard__Array(&type_standard__Array__standard__String);
523 {
524 standard___standard__Array___standard__kernel__Object__init(var41); /* Direct call array#Array#init on <var41:Array[String]>*/
525 }
526 var_record = var41;
527 var_ = var_values;
528 {
529 var42 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
530 }
531 var_43 = var42;
532 for(;;) {
533 {
534 var44 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_43);
535 }
536 if (var44){
537 {
538 var45 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_43);
539 }
540 var_value = var45;
541 {
542 var46 = ((val*(*)(val* self))((((long)var_value&3)?class_info[((long)var_value&3)]:var_value->class)->vft[COLOR_standard__string__Object__to_s]))(var_value); /* to_s on <var_value:Object>*/
543 }
544 {
545 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_record, var46); /* Direct call array#Array#add on <var_record:Array[String]>*/
546 }
547 {
548 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_43); /* Direct call array#ArrayIterator#next on <var_43:ArrayIterator[Object]>*/
549 }
550 } else {
551 goto BREAK_label;
552 }
553 }
554 BREAK_label: (void)0;
555 {
556 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_43); /* Direct call array#ArrayIterator#finish on <var_43:ArrayIterator[Object]>*/
557 }
558 {
559 { /* Inline csv#CsvDocument#records (self) on <self:CsvDocument> */
560 var49 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
561 if (unlikely(var49 == NULL)) {
562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
563 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68);
564 fatal_exit(1);
565 }
566 var47 = var49;
567 RET_LABEL48:(void)0;
568 }
569 }
570 {
571 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var47, var_record); /* Direct call array#Array#add on <var47:Array[Array[String]]>*/
572 }
573 RET_LABEL:;
574 }
575 /* method csv#CsvDocument#write_to for (self: CsvDocument, Writer) */
576 void csv___csv__CsvDocument___standard__stream__Writable__write_to(val* self, val* p0) {
577 val* var_stream /* var stream: Writer */;
578 val* var /* : CsvWriter */;
579 val* var1 /* : CsvFormat */;
580 val* var3 /* : CsvFormat */;
581 val* var_writer /* var writer: CsvWriter */;
582 val* var4 /* : Array[String] */;
583 val* var6 /* : Array[String] */;
584 val* var7 /* : Array[Array[String]] */;
585 val* var9 /* : Array[Array[String]] */;
586 val* var_ /* var : Array[Array[String]] */;
587 val* var10 /* : ArrayIterator[nullable Object] */;
588 val* var_11 /* var : ArrayIterator[Array[String]] */;
589 short int var12 /* : Bool */;
590 val* var13 /* : nullable Object */;
591 val* var_record /* var record: Array[String] */;
592 var_stream = p0;
593 var = NEW_csv__CsvWriter(&type_csv__CsvWriter);
594 {
595 { /* Inline csv#CsvDocument#format (self) on <self:CsvDocument> */
596 var3 = self->attrs[COLOR_csv__CsvDocument___format].val; /* _format on <self:CsvDocument> */
597 if (unlikely(var3 == NULL)) {
598 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
599 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 58);
600 fatal_exit(1);
601 }
602 var1 = var3;
603 RET_LABEL2:(void)0;
604 }
605 }
606 {
607 csv___csv__CsvWriter___with_format(var, var_stream, var1); /* Direct call csv#CsvWriter#with_format on <var:CsvWriter>*/
608 }
609 var_writer = var;
610 {
611 { /* Inline csv#CsvDocument#header (self) on <self:CsvDocument> */
612 var6 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on <self:CsvDocument> */
613 if (unlikely(var6 == NULL)) {
614 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
615 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63);
616 fatal_exit(1);
617 }
618 var4 = var6;
619 RET_LABEL5:(void)0;
620 }
621 }
622 {
623 csv___csv__CsvWriter___write_sequence(var_writer, var4); /* Direct call csv#CsvWriter#write_sequence on <var_writer:CsvWriter>*/
624 }
625 {
626 { /* Inline csv#CsvDocument#records (self) on <self:CsvDocument> */
627 var9 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on <self:CsvDocument> */
628 if (unlikely(var9 == NULL)) {
629 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records");
630 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68);
631 fatal_exit(1);
632 }
633 var7 = var9;
634 RET_LABEL8:(void)0;
635 }
636 }
637 var_ = var7;
638 {
639 var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
640 }
641 var_11 = var10;
642 for(;;) {
643 {
644 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
645 }
646 if (var12){
647 {
648 var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
649 }
650 var_record = var13;
651 {
652 csv___csv__CsvWriter___write_sequence(var_writer, var_record); /* Direct call csv#CsvWriter#write_sequence on <var_writer:CsvWriter>*/
653 }
654 {
655 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[Array[String]]>*/
656 }
657 } else {
658 goto BREAK_label;
659 }
660 }
661 BREAK_label: (void)0;
662 {
663 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_11); /* Direct call array#ArrayIterator#finish on <var_11:ArrayIterator[Array[String]]>*/
664 }
665 RET_LABEL:;
666 }
667 /* method csv#CsvWriter#ostream for (self: CsvWriter): Writer */
668 val* csv___csv__CsvWriter___ostream(val* self) {
669 val* var /* : Writer */;
670 val* var1 /* : Writer */;
671 var1 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
672 if (unlikely(var1 == NULL)) {
673 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
674 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
675 fatal_exit(1);
676 }
677 var = var1;
678 RET_LABEL:;
679 return var;
680 }
681 /* method csv#CsvWriter#ostream= for (self: CsvWriter, Writer) */
682 void csv___csv__CsvWriter___ostream_61d(val* self, val* p0) {
683 self->attrs[COLOR_csv__CsvWriter___ostream].val = p0; /* _ostream on <self:CsvWriter> */
684 RET_LABEL:;
685 }
686 /* method csv#CsvWriter#format for (self: CsvWriter): CsvFormat */
687 val* csv___csv__CsvWriter___format(val* self) {
688 val* var /* : CsvFormat */;
689 val* var1 /* : CsvFormat */;
690 var1 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
691 if (unlikely(var1 == NULL)) {
692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
693 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
694 fatal_exit(1);
695 }
696 var = var1;
697 RET_LABEL:;
698 return var;
699 }
700 /* method csv#CsvWriter#format= for (self: CsvWriter, CsvFormat) */
701 void csv___csv__CsvWriter___format_61d(val* self, val* p0) {
702 self->attrs[COLOR_csv__CsvWriter___format].val = p0; /* _format on <self:CsvWriter> */
703 RET_LABEL:;
704 }
705 /* method csv#CsvWriter#always_escape for (self: CsvWriter): Bool */
706 short int csv___csv__CsvWriter___always_escape(val* self) {
707 short int var /* : Bool */;
708 short int var1 /* : Bool */;
709 var1 = self->attrs[COLOR_csv__CsvWriter___always_escape].s; /* _always_escape on <self:CsvWriter> */
710 var = var1;
711 RET_LABEL:;
712 return var;
713 }
714 /* method csv#CsvWriter#with_format for (self: CsvWriter, Writer, CsvFormat) */
715 void csv___csv__CsvWriter___with_format(val* self, val* p0, val* p1) {
716 val* var_ostream /* var ostream: Writer */;
717 val* var_format /* var format: CsvFormat */;
718 var_ostream = p0;
719 var_format = p1;
720 {
721 { /* Inline csv#CsvWriter#ostream= (self,var_ostream) on <self:CsvWriter> */
722 self->attrs[COLOR_csv__CsvWriter___ostream].val = var_ostream; /* _ostream on <self:CsvWriter> */
723 RET_LABEL1:(void)0;
724 }
725 }
726 {
727 { /* Inline csv#CsvWriter#format= (self,var_format) on <self:CsvWriter> */
728 self->attrs[COLOR_csv__CsvWriter___format].val = var_format; /* _format on <self:CsvWriter> */
729 RET_LABEL2:(void)0;
730 }
731 }
732 RET_LABEL:;
733 }
734 /* method csv#CsvWriter#write_sequence for (self: CsvWriter, SequenceRead[Object]) */
735 void csv___csv__CsvWriter___write_sequence(val* self, val* p0) {
736 val* var_row /* var row: SequenceRead[Object] */;
737 short int var /* : Bool */;
738 short int var1 /* : Bool */;
739 val* var2 /* : Iterator[nullable Object] */;
740 val* var_i /* var i: IndexedIterator[Object] */;
741 val* var3 /* : CsvFormat */;
742 val* var5 /* : CsvFormat */;
743 uint32_t var6 /* : Char */;
744 uint32_t var8 /* : Char */;
745 val* var9 /* : String */;
746 val* var_separator /* var separator: String */;
747 val* var10 /* : nullable Object */;
748 val* var11 /* : String */;
749 val* var_ /* var : IndexedIterator[Object] */;
750 val* var12 /* : Iterator[nullable Object] */;
751 val* var_13 /* var : Iterator[Object] */;
752 short int var14 /* : Bool */;
753 val* var15 /* : nullable Object */;
754 val* var_cell /* var cell: Object */;
755 val* var16 /* : Writer */;
756 val* var18 /* : Writer */;
757 val* var19 /* : String */;
758 val* var20 /* : Writer */;
759 val* var22 /* : Writer */;
760 val* var23 /* : CsvFormat */;
761 val* var25 /* : CsvFormat */;
762 val* var26 /* : String */;
763 val* var28 /* : String */;
764 var_row = p0;
765 {
766 var = ((short int(*)(val* self))((((long)var_row&3)?class_info[((long)var_row&3)]:var_row->class)->vft[COLOR_standard__abstract_collection__Collection__is_empty]))(var_row); /* is_empty on <var_row:SequenceRead[Object]>*/
767 }
768 var1 = !var;
769 if (var1){
770 {
771 var2 = ((val*(*)(val* self))((((long)var_row&3)?class_info[((long)var_row&3)]:var_row->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_row); /* iterator on <var_row:SequenceRead[Object]>*/
772 }
773 var_i = var2;
774 {
775 { /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
776 var5 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
777 if (unlikely(var5 == NULL)) {
778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
779 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
780 fatal_exit(1);
781 }
782 var3 = var5;
783 RET_LABEL4:(void)0;
784 }
785 }
786 {
787 { /* Inline csv#CsvFormat#separator (var3) on <var3:CsvFormat> */
788 var8 = var3->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on <var3:CsvFormat> */
789 var6 = var8;
790 RET_LABEL7:(void)0;
791 }
792 }
793 {
794 var9 = standard__string___Char___Object__to_s(var6);
795 }
796 var_separator = var9;
797 {
798 var10 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_i); /* item on <var_i:IndexedIterator[Object]>*/
799 }
800 {
801 var11 = ((val*(*)(val* self))((((long)var10&3)?class_info[((long)var10&3)]:var10->class)->vft[COLOR_standard__string__Object__to_s]))(var10); /* to_s on <var10:nullable Object(Object)>*/
802 }
803 {
804 csv___csv__CsvWriter___write_cell(self, var11); /* Direct call csv#CsvWriter#write_cell on <self:CsvWriter>*/
805 }
806 {
807 ((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_i); /* next on <var_i:IndexedIterator[Object]>*/
808 }
809 var_ = var_i;
810 {
811 var12 = standard___standard__Iterator___iterator(var_);
812 }
813 var_13 = var12;
814 for(;;) {
815 {
816 var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:Iterator[Object]>*/
817 }
818 if (var14){
819 {
820 var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:Iterator[Object]>*/
821 }
822 var_cell = var15;
823 {
824 { /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
825 var18 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
826 if (unlikely(var18 == NULL)) {
827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
828 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
829 fatal_exit(1);
830 }
831 var16 = var18;
832 RET_LABEL17:(void)0;
833 }
834 }
835 {
836 standard___standard__FileWriter___standard__stream__Writer__write(var16, var_separator); /* Direct call file#FileWriter#write on <var16:Writer>*/
837 }
838 {
839 var19 = ((val*(*)(val* self))((((long)var_cell&3)?class_info[((long)var_cell&3)]:var_cell->class)->vft[COLOR_standard__string__Object__to_s]))(var_cell); /* to_s on <var_cell:Object>*/
840 }
841 {
842 csv___csv__CsvWriter___write_cell(self, var19); /* Direct call csv#CsvWriter#write_cell on <self:CsvWriter>*/
843 }
844 {
845 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:Iterator[Object]>*/
846 }
847 } else {
848 goto BREAK_label;
849 }
850 }
851 BREAK_label: (void)0;
852 {
853 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:Iterator[Object]>*/
854 }
855 } else {
856 }
857 {
858 { /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
859 var22 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
860 if (unlikely(var22 == NULL)) {
861 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
862 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
863 fatal_exit(1);
864 }
865 var20 = var22;
866 RET_LABEL21:(void)0;
867 }
868 }
869 {
870 { /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
871 var25 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
872 if (unlikely(var25 == NULL)) {
873 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
874 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
875 fatal_exit(1);
876 }
877 var23 = var25;
878 RET_LABEL24:(void)0;
879 }
880 }
881 {
882 { /* Inline csv#CsvFormat#eol (var23) on <var23:CsvFormat> */
883 var28 = var23->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on <var23:CsvFormat> */
884 if (unlikely(var28 == NULL)) {
885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
886 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28);
887 fatal_exit(1);
888 }
889 var26 = var28;
890 RET_LABEL27:(void)0;
891 }
892 }
893 {
894 standard___standard__FileWriter___standard__stream__Writer__write(var20, var26); /* Direct call file#FileWriter#write on <var20:Writer>*/
895 }
896 RET_LABEL:;
897 }
898 /* method csv#CsvWriter#write_cell for (self: CsvWriter, String) */
899 void csv___csv__CsvWriter___write_cell(val* self, val* p0) {
900 val* var_cell /* var cell: String */;
901 short int var /* : Bool */;
902 short int var1 /* : Bool */;
903 short int var2 /* : Bool */;
904 short int var4 /* : Bool */;
905 short int var5 /* : Bool */;
906 short int var_ /* var : Bool */;
907 val* var6 /* : CsvFormat */;
908 val* var8 /* : CsvFormat */;
909 short int var9 /* : Bool */;
910 val* var10 /* : Writer */;
911 val* var12 /* : Writer */;
912 val* var13 /* : Writer */;
913 val* var15 /* : Writer */;
914 val* var16 /* : CsvFormat */;
915 val* var18 /* : CsvFormat */;
916 val* var19 /* : Text */;
917 var_cell = p0;
918 {
919 var = standard___standard__Text___is_empty(var_cell);
920 }
921 if (var){
922 goto RET_LABEL;
923 } else {
924 }
925 {
926 { /* Inline csv#CsvWriter#always_escape (self) on <self:CsvWriter> */
927 var4 = self->attrs[COLOR_csv__CsvWriter___always_escape].s; /* _always_escape on <self:CsvWriter> */
928 var2 = var4;
929 RET_LABEL3:(void)0;
930 }
931 }
932 var5 = !var2;
933 var_ = var5;
934 if (var5){
935 {
936 { /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
937 var8 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
938 if (unlikely(var8 == NULL)) {
939 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
940 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
941 fatal_exit(1);
942 }
943 var6 = var8;
944 RET_LABEL7:(void)0;
945 }
946 }
947 {
948 var9 = csv___csv__CsvFormat___is_value_clean(var6, var_cell);
949 }
950 var1 = var9;
951 } else {
952 var1 = var_;
953 }
954 if (var1){
955 {
956 { /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
957 var12 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
958 if (unlikely(var12 == NULL)) {
959 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
960 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
961 fatal_exit(1);
962 }
963 var10 = var12;
964 RET_LABEL11:(void)0;
965 }
966 }
967 {
968 standard___standard__FileWriter___standard__stream__Writer__write(var10, var_cell); /* Direct call file#FileWriter#write on <var10:Writer>*/
969 }
970 } else {
971 {
972 { /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
973 var15 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
974 if (unlikely(var15 == NULL)) {
975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
976 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
977 fatal_exit(1);
978 }
979 var13 = var15;
980 RET_LABEL14:(void)0;
981 }
982 }
983 {
984 { /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
985 var18 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
986 if (unlikely(var18 == NULL)) {
987 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
988 PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
989 fatal_exit(1);
990 }
991 var16 = var18;
992 RET_LABEL17:(void)0;
993 }
994 }
995 {
996 var19 = csv___csv__CsvFormat___escape_cell(var16, var_cell);
997 }
998 {
999 standard___standard__FileWriter___standard__stream__Writer__write(var13, var19); /* Direct call file#FileWriter#write on <var13:Writer>*/
1000 }
1001 }
1002 RET_LABEL:;
1003 }
1004 /* method csv#CsvWriter#init for (self: CsvWriter) */
1005 void csv___csv__CsvWriter___standard__kernel__Object__init(val* self) {
1006 {
1007 ((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvWriter___standard__kernel__Object__init]))(self); /* init on <self:CsvWriter>*/
1008 }
1009 RET_LABEL:;
1010 }
1011 /* method csv#Sys#rfc4180 for (self: Sys): CsvFormat */
1012 val* csv___standard__Sys___rfc4180(val* self) {
1013 val* var /* : CsvFormat */;
1014 static val* varonce;
1015 static int varonce_guard;
1016 val* var1 /* : CsvFormat */;
1017 val* var2 /* : CsvFormat */;
1018 static val* varonce3;
1019 val* var4 /* : String */;
1020 char* var5 /* : NativeString */;
1021 val* var6 /* : FlatString */;
1022 if (likely(varonce_guard)) {
1023 var1 = varonce;
1024 } else {
1025 var2 = NEW_csv__CsvFormat(&type_csv__CsvFormat);
1026 if (likely(varonce3!=NULL)) {
1027 var4 = varonce3;
1028 } else {
1029 var5 = "\015\n";
1030 var6 = standard___standard__NativeString___to_s_with_length(var5, 2l);
1031 var4 = var6;
1032 varonce3 = var4;
1033 }
1034 {
1035 ((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__delimiter_61d]))(var2, '\"'); /* delimiter= on <var2:CsvFormat>*/
1036 }
1037 {
1038 ((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__separator_61d]))(var2, ','); /* separator= on <var2:CsvFormat>*/
1039 }
1040 {
1041 ((void(*)(val* self, val* p0))(var2->class->vft[COLOR_csv__CsvFormat__eol_61d]))(var2, var4); /* eol= on <var2:CsvFormat>*/
1042 }
1043 {
1044 ((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:CsvFormat>*/
1045 }
1046 var1 = var2;
1047 varonce = var1;
1048 varonce_guard = 1;
1049 }
1050 var = var1;
1051 goto RET_LABEL;
1052 RET_LABEL:;
1053 return var;
1054 }