X-Git-Url: http://nitlanguage.org diff --git a/c_src/csv.sep.1.c b/c_src/csv.sep.1.c index 37ec3a8..fc58641 100644 --- a/c_src/csv.sep.1.c +++ b/c_src/csv.sep.1.c @@ -1,360 +1,1054 @@ #include "csv.sep.0.h" -/* method csv#CSVDocument#header for (self: CSVDocument): Array[String] */ -val* csv__CSVDocument__header(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = self->attrs[COLOR_csv__CSVDocument___64dheader].val; /* @header on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header"); -fprintf(stderr, " (%s:%d)\n", "lib/csv.nit", 20); -show_backtrace(1); +/* method csv#CsvFormat#delimiter for (self: CsvFormat): Char */ +uint32_t csv___csv__CsvFormat___delimiter(val* self) { +uint32_t var /* : Char */; +uint32_t var1 /* : Char */; +var1 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var = var1; +RET_LABEL:; +return var; } +/* method csv#CsvFormat#delimiter= for (self: CsvFormat, Char) */ +void csv___csv__CsvFormat___delimiter_61d(val* self, uint32_t p0) { +self->attrs[COLOR_csv__CsvFormat___delimiter].c = p0; /* _delimiter on */ +RET_LABEL:; +} +/* method csv#CsvFormat#separator for (self: CsvFormat): Char */ +uint32_t csv___csv__CsvFormat___separator(val* self) { +uint32_t var /* : Char */; +uint32_t var1 /* : Char */; +var1 = self->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on */ var = var1; RET_LABEL:; return var; } -/* method csv#CSVDocument#header for (self: Object): Array[String] */ -val* VIRTUAL_csv__CSVDocument__header(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = csv__CSVDocument__header(self); +/* method csv#CsvFormat#separator= for (self: CsvFormat, Char) */ +void csv___csv__CsvFormat___separator_61d(val* self, uint32_t p0) { +self->attrs[COLOR_csv__CsvFormat___separator].c = p0; /* _separator on */ +RET_LABEL:; +} +/* method csv#CsvFormat#eol for (self: CsvFormat): String */ +val* csv___csv__CsvFormat___eol(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = self->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28); +fatal_exit(1); +} var = var1; RET_LABEL:; return var; } -/* method csv#CSVDocument#header= for (self: CSVDocument, Array[String]) */ -void csv__CSVDocument__header_61d(val* self, val* p0) { -self->attrs[COLOR_csv__CSVDocument___64dheader].val = p0; /* @header on */ +/* method csv#CsvFormat#eol= for (self: CsvFormat, String) */ +void csv___csv__CsvFormat___eol_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvFormat___eol].val = p0; /* _eol on */ RET_LABEL:; } -/* method csv#CSVDocument#header= for (self: Object, Array[String]) */ -void VIRTUAL_csv__CSVDocument__header_61d(val* self, val* p0) { -csv__CSVDocument__header_61d(self, p0); +/* method csv#CsvFormat#escaping for (self: CsvFormat): String */ +val* csv___csv__CsvFormat___escaping(val* self) { +val* var /* : String */; +short int var1 /* : Bool */; +val* var2 /* : String */; +val* var3 /* : NativeArray[String] */; +static val* varonce; +uint32_t var4 /* : Char */; +uint32_t var6 /* : Char */; +val* var7 /* : String */; +uint32_t var8 /* : Char */; +uint32_t var10 /* : Char */; +val* var11 /* : String */; +val* var12 /* : String */; +var1 = self->attrs[COLOR_csv__CsvFormat___escaping].val != NULL; /* _escaping on */ +if(likely(var1)) { +var2 = self->attrs[COLOR_csv__CsvFormat___escaping].val; /* _escaping on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escaping"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 31); +fatal_exit(1); +} +} else { +if (unlikely(varonce==NULL)) { +var3 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String); +} else { +var3 = varonce; +varonce = NULL; +} +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var6 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +var7 = standard__string___Char___Object__to_s(var4); +((struct instance_standard__NativeArray*)var3)->values[0]=var7; +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var10 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +var11 = standard__string___Char___Object__to_s(var8); +((struct instance_standard__NativeArray*)var3)->values[1]=var11; +{ +var12 = ((val*(*)(val* self))(var3->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var3); /* native_to_s on */ +} +varonce = var3; +self->attrs[COLOR_csv__CsvFormat___escaping].val = var12; /* _escaping on */ +var2 = var12; +} +var = var2; RET_LABEL:; +return var; } -/* method csv#CSVDocument#lines for (self: CSVDocument): Array[Array[String]] */ -val* csv__CSVDocument__lines(val* self) { -val* var /* : Array[Array[String]] */; -val* var1 /* : Array[Array[String]] */; -var1 = self->attrs[COLOR_csv__CSVDocument___64dlines].val; /* @lines on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lines"); -fprintf(stderr, " (%s:%d)\n", "lib/csv.nit", 21); -show_backtrace(1); +/* method csv#CsvFormat#escape_cell for (self: CsvFormat, String): Text */ +val* csv___csv__CsvFormat___escape_cell(val* self, val* p0) { +val* var /* : Text */; +val* var_cell /* var cell: String */; +val* var1 /* : RopeBuffer */; +val* var_result /* var result: RopeBuffer */; +uint32_t var2 /* : Char */; +uint32_t var4 /* : Char */; +uint32_t var5 /* : Char */; +uint32_t var7 /* : Char */; +val* var8 /* : String */; +val* var9 /* : String */; +val* var10 /* : Pattern */; +uint32_t var11 /* : Char */; +uint32_t var13 /* : Char */; +var_cell = p0; +var1 = NEW_standard__RopeBuffer(&type_standard__RopeBuffer); +{ +standard___standard__RopeBuffer___standard__kernel__Object__init(var1); /* Direct call ropes#RopeBuffer#init on */ } -var = var1; +var_result = var1; +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var4 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +standard___standard__RopeBuffer___standard__string__Buffer__add(var_result, var2); /* Direct call ropes#RopeBuffer#add on */ +} +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var7 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = csv___csv__CsvFormat___escaping(self); +} +{ +var10 = (val*)((long)(var5)<<2|2); +var9 = standard__string_search___Text___replace(var_cell, var10, var8); +} +{ +standard___standard__RopeBuffer___standard__string__Buffer__append(var_result, var9); /* Direct call ropes#RopeBuffer#append on */ +} +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var13 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +standard___standard__RopeBuffer___standard__string__Buffer__add(var_result, var11); /* Direct call ropes#RopeBuffer#add on */ +} +var = var_result; +goto RET_LABEL; RET_LABEL:; return var; } -/* method csv#CSVDocument#lines for (self: Object): Array[Array[String]] */ -val* VIRTUAL_csv__CSVDocument__lines(val* self) { -val* var /* : Array[Array[String]] */; -val* var1 /* : Array[Array[String]] */; -var1 = csv__CSVDocument__lines(self); -var = var1; +/* method csv#CsvFormat#is_value_clean for (self: CsvFormat, String): Bool */ +short int csv___csv__CsvFormat___is_value_clean(val* self, val* p0) { +short int var /* : Bool */; +val* var_value /* var value: String */; +val* var1 /* : SequenceRead[Char] */; +val* var_ /* var : SequenceRead[Char] */; +val* var2 /* : Iterator[nullable Object] */; +val* var_3 /* var : IndexedIterator[Char] */; +short int var4 /* : Bool */; +val* var5 /* : nullable Object */; +uint32_t var6 /* : Char */; +uint32_t var_c /* var c: Char */; +uint32_t var7 /* : Char */; +uint32_t var9 /* : Char */; +short int var10 /* : Bool */; +short int var12 /* : Bool */; +uint32_t var13 /* : Char */; +uint32_t var15 /* : Char */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +val* var19 /* : String */; +val* var21 /* : String */; +val* var22 /* : SequenceRead[Char] */; +val* var23 /* : nullable Object */; +short int var24 /* : Bool */; +var_value = p0; +{ +var1 = ((val*(*)(val* self))(var_value->class->vft[COLOR_standard__string__Text__chars]))(var_value); /* chars on */ +} +var_ = var1; +{ +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_3 = var2; +for(;;) { +{ +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 */ +} +if (var4){ +{ +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 */ +} +var6 = (uint32_t)((long)(var5)>>2); +var_c = var6; +{ +{ /* Inline csv#CsvFormat#delimiter (self) on */ +var9 = self->attrs[COLOR_csv__CsvFormat___delimiter].c; /* _delimiter on */ +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline kernel#Char#== (var_c,var7) on */ +var12 = var_c == var7; +var10 = var12; +goto RET_LABEL11; +RET_LABEL11:(void)0; +} +} +if (var10){ +var = 0; +goto RET_LABEL; +} else { +} +{ +{ /* Inline csv#CsvFormat#separator (self) on */ +var15 = self->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on */ +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline kernel#Char#== (var_c,var13) on */ +var18 = var_c == var13; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +} +if (var16){ +var = 0; +goto RET_LABEL; +} else { +} +{ +{ /* Inline csv#CsvFormat#eol (self) on */ +var21 = self->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28); +fatal_exit(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +{ +var22 = ((val*(*)(val* self))(var19->class->vft[COLOR_standard__string__Text__chars]))(var19); /* chars on */ +} +{ +var23 = (val*)((long)(var_c)<<2|2); +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 */ +} +if (var24){ +var = 0; +goto RET_LABEL; +} else { +} +{ +((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 */ +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +((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 = 1; +goto RET_LABEL; RET_LABEL:; return var; } -/* method csv#CSVDocument#lines= for (self: CSVDocument, Array[Array[String]]) */ -void csv__CSVDocument__lines_61d(val* self, val* p0) { -self->attrs[COLOR_csv__CSVDocument___64dlines].val = p0; /* @lines on */ +/* method csv#CsvFormat#init for (self: CsvFormat) */ +void csv___csv__CsvFormat___standard__kernel__Object__init(val* self) { +{ +((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvFormat___standard__kernel__Object__init]))(self); /* init on */ +} RET_LABEL:; } -/* method csv#CSVDocument#lines= for (self: Object, Array[Array[String]]) */ -void VIRTUAL_csv__CSVDocument__lines_61d(val* self, val* p0) { -csv__CSVDocument__lines_61d(self, p0); +/* method csv#CsvDocument#format for (self: CsvDocument): CsvFormat */ +val* csv___csv__CsvDocument___format(val* self) { +val* var /* : CsvFormat */; +val* var1 /* : CsvFormat */; +var1 = self->attrs[COLOR_csv__CsvDocument___format].val; /* _format on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 58); +fatal_exit(1); +} +var = var1; RET_LABEL:; +return var; } -/* method csv#CSVDocument#set_header for (self: CSVDocument, Array[Object]) */ -void csv__CSVDocument__set_header(val* self, val* p0) { -val* var_values /* var values: Array[Object] */; +/* method csv#CsvDocument#format= for (self: CsvDocument, CsvFormat) */ +void csv___csv__CsvDocument___format_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvDocument___format].val = p0; /* _format on */ +RET_LABEL:; +} +/* method csv#CsvDocument#header for (self: CsvDocument): Array[String] */ +val* csv___csv__CsvDocument___header(val* self) { val* var /* : Array[String] */; -val* var1 /* : Iterator[nullable Object] */; -short int var2 /* : Bool */; -val* var3 /* : nullable Object */; -val* var_value /* var value: Object */; -val* var4 /* : Array[String] */; -val* var5 /* : String */; -var_values = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__header]))(self) /* header on */; -((void (*)(val*))(var->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var) /* clear on */; -var1 = ((val* (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_values) /* iterator on */; -for(;;) { -var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on */; -if(!var2) break; -var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on */; -var_value = var3; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__header]))(self) /* header on */; -var5 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__to_s]))(var_value) /* to_s on */; -((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var5) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on */; +val* var1 /* : Array[String] */; +var1 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63); +fatal_exit(1); } -BREAK_label: (void)0; +var = var1; +RET_LABEL:; +return var; +} +/* method csv#CsvDocument#header= for (self: CsvDocument, Array[String]) */ +void csv___csv__CsvDocument___header_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvDocument___header].val = p0; /* _header on */ RET_LABEL:; } -/* method csv#CSVDocument#set_header for (self: Object, Array[Object]) */ -void VIRTUAL_csv__CSVDocument__set_header(val* self, val* p0) { -csv__CSVDocument__set_header(self, p0); +/* method csv#CsvDocument#records for (self: CsvDocument): Array[Array[String]] */ +val* csv___csv__CsvDocument___records(val* self) { +val* var /* : Array[Array[String]] */; +val* var1 /* : Array[Array[String]] */; +var1 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68); +fatal_exit(1); +} +var = var1; RET_LABEL:; +return var; } -/* method csv#CSVDocument#add_line for (self: CSVDocument, Array[Object]) */ -void csv__CSVDocument__add_line(val* self, val* p0) { +/* method csv#CsvDocument#add_record for (self: CsvDocument, Array[Object]) */ +void csv___csv__CsvDocument___add_record(val* self, val* p0) { val* var_values /* var values: Array[Object] */; long var /* : Int */; -val* var1 /* : Array[String] */; long var2 /* : Int */; -short int var3 /* : Bool */; -short int var5 /* : Bool */; -short int var6 /* : Bool */; +val* var3 /* : Array[String] */; +val* var5 /* : Array[String] */; +long var6 /* : Int */; +long var8 /* : Int */; +short int var9 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : Sys */; +val* var14 /* : Sys */; +val* var15 /* : Writer */; +val* var16 /* : NativeArray[String] */; static val* varonce; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -val* var11 /* : Array[String] */; -long var12 /* : Int */; -static val* varonce13; -val* var14 /* : String */; -char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; -long var18 /* : Int */; -static val* varonce19; -val* var20 /* : String */; -char* var21 /* : NativeString */; -long var22 /* : Int */; -val* var23 /* : String */; -val* var24 /* : Array[Object] */; -long var25 /* : Int */; -val* var26 /* : NativeArray[Object] */; -val* var27 /* : Object */; -val* var28 /* : Object */; -val* var29 /* : String */; -val* var30 /* : Array[String] */; -val* var_line /* var line: Array[String] */; -val* var31 /* : Iterator[nullable Object] */; -short int var32 /* : Bool */; -val* var33 /* : nullable Object */; +static val* varonce17; +val* var18 /* : String */; +char* var19 /* : NativeString */; +val* var20 /* : FlatString */; +static val* varonce21; +val* var22 /* : String */; +char* var23 /* : NativeString */; +val* var24 /* : FlatString */; +static val* varonce25; +val* var26 /* : String */; +char* var27 /* : NativeString */; +val* var28 /* : FlatString */; +val* var29 /* : Array[String] */; +val* var31 /* : Array[String] */; +long var32 /* : Int */; +long var34 /* : Int */; +val* var35 /* : String */; +long var36 /* : Int */; +long var38 /* : Int */; +val* var39 /* : String */; +val* var40 /* : String */; +val* var41 /* : Array[String] */; +val* var_record /* var record: Array[String] */; +val* var_ /* var : Array[Object] */; +val* var42 /* : ArrayIterator[nullable Object] */; +val* var_43 /* var : ArrayIterator[Object] */; +short int var44 /* : Bool */; +val* var45 /* : nullable Object */; val* var_value /* var value: Object */; -val* var34 /* : String */; -val* var35 /* : Array[Array[String]] */; +val* var46 /* : String */; +val* var47 /* : Array[Array[String]] */; +val* var49 /* : Array[Array[String]] */; var_values = p0; -var = ((long (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__length]))(var_values) /* length on */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__header]))(self) /* header on */; -var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on */; -{ /* Inline kernel#Int#!= (var,var2) */ -var5 = var == var2; -var6 = !var5; -var3 = var6; -goto RET_LABEL4; +{ +{ /* Inline array#AbstractArrayRead#length (var_values) on */ +var2 = var_values->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline csv#CsvDocument#header (self) on */ +var5 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63); +fatal_exit(1); +} +var3 = var5; RET_LABEL4:(void)0; } -if (var3){ -if (varonce) { -var7 = varonce; +} +{ +{ /* Inline array#AbstractArrayRead#length (var3) on */ +var8 = var3->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline kernel#Int#== (var,var6) on */ +var11 = var == var6; +var9 = var11; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +} +if (unlikely(!var9)) { +{ +{ /* Inline kernel#Object#sys (self) on */ +var14 = glob_sys; +var12 = var14; +goto RET_LABEL13; +RET_LABEL13:(void)0; +} +} +{ +var15 = standard__file___Sys___stderr(var12); +} +if (unlikely(varonce==NULL)) { +var16 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String); +if (likely(varonce17!=NULL)) { +var18 = varonce17; } else { -var8 = "CSV error: header declares "; -var9 = 27; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce = var7; -} -var11 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__header]))(self) /* header on */; -var12 = ((long (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__length]))(var11) /* length on */; -if (varonce13) { -var14 = varonce13; +var19 = "CSV error: Header declares "; +var20 = standard___standard__NativeString___to_s_with_length(var19, 27l); +var18 = var20; +varonce17 = var18; +} +((struct instance_standard__NativeArray*)var16)->values[0]=var18; +if (likely(varonce21!=NULL)) { +var22 = varonce21; } else { -var15 = " columns, line contains "; -var16 = 24; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce13 = var14; -} -var18 = ((long (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__length]))(var_values) /* length on */; -if (varonce19) { -var20 = varonce19; +var23 = " columns, record contains "; +var24 = standard___standard__NativeString___to_s_with_length(var23, 26l); +var22 = var24; +varonce21 = var22; +} +((struct instance_standard__NativeArray*)var16)->values[2]=var22; +if (likely(varonce25!=NULL)) { +var26 = varonce25; } else { -var21 = " values"; -var22 = 7; -var23 = string__NativeString__to_s_with_length(var21, var22); -var20 = var23; -varonce19 = var20; -} -var24 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var24 = array_instance Array[Object] */ -var25 = 5; -var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var26)->values[0] = (val*) var7; -var27 = BOX_kernel__Int(var12); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var26)->values[1] = (val*) var27; -((struct instance_array__NativeArray*)var26)->values[2] = (val*) var14; -var28 = BOX_kernel__Int(var18); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var26)->values[3] = (val*) var28; -((struct instance_array__NativeArray*)var26)->values[4] = (val*) var20; -((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on */; -} -var29 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on */; -((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var29) /* print on */; -fprintf(stderr, "Runtime error: %s", "Aborted"); -fprintf(stderr, " (%s:%d)\n", "lib/csv.nit", 33); -show_backtrace(1); +var27 = " values.\n"; +var28 = standard___standard__NativeString___to_s_with_length(var27, 9l); +var26 = var28; +varonce25 = var26; +} +((struct instance_standard__NativeArray*)var16)->values[4]=var26; } else { +var16 = varonce; +varonce = NULL; } -var30 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var30->class->vft[COLOR_array__Array__init]))(var30) /* init on */; -var_line = var30; -var31 = ((val* (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_values) /* iterator on */; +{ +{ /* Inline csv#CsvDocument#header (self) on */ +var31 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63); +fatal_exit(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +{ +{ /* Inline array#AbstractArrayRead#length (var29) on */ +var34 = var29->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var32 = var34; +RET_LABEL33:(void)0; +} +} +var35 = standard__string___Int___Object__to_s(var32); +((struct instance_standard__NativeArray*)var16)->values[1]=var35; +{ +{ /* Inline array#AbstractArrayRead#length (var_values) on */ +var38 = var_values->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var36 = var38; +RET_LABEL37:(void)0; +} +} +var39 = standard__string___Int___Object__to_s(var36); +((struct instance_standard__NativeArray*)var16)->values[3]=var39; +{ +var40 = ((val*(*)(val* self))(var16->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var16); /* native_to_s on */ +} +varonce = var16; +{ +standard___standard__FileWriter___standard__stream__Writer__write(var15, var40); /* Direct call file#FileWriter#write on */ +} +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 81); +fatal_exit(1); +} +var41 = NEW_standard__Array(&type_standard__Array__standard__String); +{ +standard___standard__Array___standard__kernel__Object__init(var41); /* Direct call array#Array#init on */ +} +var_record = var41; +var_ = var_values; +{ +var42 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_); +} +var_43 = var42; for(;;) { -var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on */; -if(!var32) break; -var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on */; -var_value = var33; -var34 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__to_s]))(var_value) /* to_s on */; -((void (*)(val*, val*))(var_line->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_line, var34) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on */; +{ +var44 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_43); +} +if (var44){ +{ +var45 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_43); +} +var_value = var45; +{ +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 */ +} +{ +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_record, var46); /* Direct call array#Array#add on */ +} +{ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_43); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var35 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__lines]))(self) /* lines on */; -((void (*)(val*, val*))(var35->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var35, var_line) /* add on */; -RET_LABEL:; +{ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_43); /* Direct call array#ArrayIterator#finish on */ +} +{ +{ /* Inline csv#CsvDocument#records (self) on */ +var49 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var49 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68); +fatal_exit(1); +} +var47 = var49; +RET_LABEL48:(void)0; +} +} +{ +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var47, var_record); /* Direct call array#Array#add on */ } -/* method csv#CSVDocument#add_line for (self: Object, Array[Object]) */ -void VIRTUAL_csv__CSVDocument__add_line(val* self, val* p0) { -csv__CSVDocument__add_line(self, p0); RET_LABEL:; } -/* method csv#CSVDocument#to_s for (self: CSVDocument): String */ -val* csv__CSVDocument__to_s(val* self) { -val* var /* : String */; -val* var1 /* : Array[String] */; -static val* varonce; -val* var2 /* : String */; -char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; -val* var6 /* : String */; -static val* varonce7; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -val* var12 /* : String */; -val* var_str /* var str: String */; -val* var13 /* : Array[Array[String]] */; -val* var14 /* : Iterator[nullable Object] */; -short int var15 /* : Bool */; -val* var16 /* : nullable Object */; -val* var_line /* var line: Array[String] */; -static val* varonce17; -val* var18 /* : String */; -char* var19 /* : NativeString */; -long var20 /* : Int */; -val* var21 /* : String */; -val* var22 /* : String */; -static val* varonce23; -val* var24 /* : String */; -char* var25 /* : NativeString */; -long var26 /* : Int */; -val* var27 /* : String */; -val* var28 /* : String */; -val* var29 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__header]))(self) /* header on */; -if (varonce) { -var2 = varonce; -} else { -var3 = ";"; -var4 = 1; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; -varonce = var2; -} -var6 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_string__Collection__join]))(var1, var2) /* join on */; -if (varonce7) { -var8 = varonce7; -} else { -var9 = "\n"; -var10 = 1; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce7 = var8; -} -var12 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_string__String___43d]))(var6, var8) /* + on */; -var_str = var12; -var13 = ((val* (*)(val*))(self->class->vft[COLOR_csv__CSVDocument__lines]))(self) /* lines on */; -var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__iterator]))(var13) /* iterator on */; +/* method csv#CsvDocument#write_to for (self: CsvDocument, Writer) */ +void csv___csv__CsvDocument___standard__stream__Writable__write_to(val* self, val* p0) { +val* var_stream /* var stream: Writer */; +val* var /* : CsvWriter */; +val* var1 /* : CsvFormat */; +val* var3 /* : CsvFormat */; +val* var_writer /* var writer: CsvWriter */; +val* var4 /* : Array[String] */; +val* var6 /* : Array[String] */; +val* var7 /* : Array[Array[String]] */; +val* var9 /* : Array[Array[String]] */; +val* var_ /* var : Array[Array[String]] */; +val* var10 /* : ArrayIterator[nullable Object] */; +val* var_11 /* var : ArrayIterator[Array[String]] */; +short int var12 /* : Bool */; +val* var13 /* : nullable Object */; +val* var_record /* var record: Array[String] */; +var_stream = p0; +var = NEW_csv__CsvWriter(&type_csv__CsvWriter); +{ +{ /* Inline csv#CsvDocument#format (self) on */ +var3 = self->attrs[COLOR_csv__CsvDocument___format].val; /* _format on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 58); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +csv___csv__CsvWriter___with_format(var, var_stream, var1); /* Direct call csv#CsvWriter#with_format on */ +} +var_writer = var; +{ +{ /* Inline csv#CsvDocument#header (self) on */ +var6 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 63); +fatal_exit(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +csv___csv__CsvWriter___write_sequence(var_writer, var4); /* Direct call csv#CsvWriter#write_sequence on */ +} +{ +{ /* Inline csv#CsvDocument#records (self) on */ +var9 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 68); +fatal_exit(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_ = var7; +{ +var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_); +} +var_11 = var10; for(;;) { -var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on */; -if(!var15) break; -var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on */; -var_line = var16; -if (varonce17) { -var18 = varonce17; -} else { -var19 = ";"; -var20 = 1; -var21 = string__NativeString__to_s_with_length(var19, var20); -var18 = var21; -varonce17 = var18; +{ +var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11); +} +if (var12){ +{ +var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11); +} +var_record = var13; +{ +csv___csv__CsvWriter___write_sequence(var_writer, var_record); /* Direct call csv#CsvWriter#write_sequence on */ +} +{ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on */ } -var22 = ((val* (*)(val*, val*))(var_line->class->vft[COLOR_string__Collection__join]))(var_line, var18) /* join on */; -if (varonce23) { -var24 = varonce23; } else { -var25 = "\n"; -var26 = 1; -var27 = string__NativeString__to_s_with_length(var25, var26); -var24 = var27; -varonce23 = var24; -} -var28 = ((val* (*)(val*, val*))(var22->class->vft[COLOR_string__String___43d]))(var22, var24) /* + on */; -var29 = ((val* (*)(val*, val*))(var_str->class->vft[COLOR_string__String___43d]))(var_str, var28) /* + on */; -var_str = var29; -CONTINUE_label: (void)0; -((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on */; +goto BREAK_label; +} } BREAK_label: (void)0; -var = var_str; -goto RET_LABEL; +{ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_11); /* Direct call array#ArrayIterator#finish on */ +} +RET_LABEL:; +} +/* method csv#CsvWriter#ostream for (self: CsvWriter): Writer */ +val* csv___csv__CsvWriter___ostream(val* self) { +val* var /* : Writer */; +val* var1 /* : Writer */; +var1 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152); +fatal_exit(1); +} +var = var1; RET_LABEL:; return var; } -/* method csv#CSVDocument#to_s for (self: Object): String */ -val* VIRTUAL_csv__CSVDocument__to_s(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = csv__CSVDocument__to_s(self); +/* method csv#CsvWriter#ostream= for (self: CsvWriter, Writer) */ +void csv___csv__CsvWriter___ostream_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvWriter___ostream].val = p0; /* _ostream on */ +RET_LABEL:; +} +/* method csv#CsvWriter#format for (self: CsvWriter): CsvFormat */ +val* csv___csv__CsvWriter___format(val* self) { +val* var /* : CsvFormat */; +val* var1 /* : CsvFormat */; +var1 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155); +fatal_exit(1); +} var = var1; RET_LABEL:; return var; } -/* method csv#CSVDocument#save for (self: CSVDocument, String) */ -void csv__CSVDocument__save(val* self, val* p0) { -val* var_file /* var file: String */; -val* var /* : OFStream */; -val* var_out /* var out: OFStream */; -val* var1 /* : String */; -var_file = p0; -var = NEW_file__OFStream(&type_file__OFStream); -((void (*)(val*, val*))(var->class->vft[COLOR_file__OFStream__open]))(var, var_file) /* open on */; -var_out = var; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on */; -((void (*)(val*, val*))(var_out->class->vft[COLOR_stream__OStream__write]))(var_out, var1) /* write on */; -((void (*)(val*))(var_out->class->vft[COLOR_stream__IOS__close]))(var_out) /* close on */; +/* method csv#CsvWriter#format= for (self: CsvWriter, CsvFormat) */ +void csv___csv__CsvWriter___format_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvWriter___format].val = p0; /* _format on */ RET_LABEL:; } -/* method csv#CSVDocument#save for (self: Object, String) */ -void VIRTUAL_csv__CSVDocument__save(val* self, val* p0) { -csv__CSVDocument__save(self, p0); +/* method csv#CsvWriter#always_escape for (self: CsvWriter): Bool */ +short int csv___csv__CsvWriter___always_escape(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_csv__CsvWriter___always_escape].s; /* _always_escape on */ +var = var1; RET_LABEL:; +return var; +} +/* method csv#CsvWriter#with_format for (self: CsvWriter, Writer, CsvFormat) */ +void csv___csv__CsvWriter___with_format(val* self, val* p0, val* p1) { +val* var_ostream /* var ostream: Writer */; +val* var_format /* var format: CsvFormat */; +var_ostream = p0; +var_format = p1; +{ +{ /* Inline csv#CsvWriter#ostream= (self,var_ostream) on */ +self->attrs[COLOR_csv__CsvWriter___ostream].val = var_ostream; /* _ostream on */ +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline csv#CsvWriter#format= (self,var_format) on */ +self->attrs[COLOR_csv__CsvWriter___format].val = var_format; /* _format on */ +RET_LABEL2:(void)0; +} } -/* method csv#CSVDocument#init for (self: CSVDocument) */ -void csv__CSVDocument__init(val* self) { RET_LABEL:; } -/* method csv#CSVDocument#init for (self: Object) */ -void VIRTUAL_csv__CSVDocument__init(val* self) { -csv__CSVDocument__init(self); +/* method csv#CsvWriter#write_sequence for (self: CsvWriter, SequenceRead[Object]) */ +void csv___csv__CsvWriter___write_sequence(val* self, val* p0) { +val* var_row /* var row: SequenceRead[Object] */; +short int var /* : Bool */; +short int var1 /* : Bool */; +val* var2 /* : Iterator[nullable Object] */; +val* var_i /* var i: IndexedIterator[Object] */; +val* var3 /* : CsvFormat */; +val* var5 /* : CsvFormat */; +uint32_t var6 /* : Char */; +uint32_t var8 /* : Char */; +val* var9 /* : String */; +val* var_separator /* var separator: String */; +val* var10 /* : nullable Object */; +val* var11 /* : String */; +val* var_ /* var : IndexedIterator[Object] */; +val* var12 /* : Iterator[nullable Object] */; +val* var_13 /* var : Iterator[Object] */; +short int var14 /* : Bool */; +val* var15 /* : nullable Object */; +val* var_cell /* var cell: Object */; +val* var16 /* : Writer */; +val* var18 /* : Writer */; +val* var19 /* : String */; +val* var20 /* : Writer */; +val* var22 /* : Writer */; +val* var23 /* : CsvFormat */; +val* var25 /* : CsvFormat */; +val* var26 /* : String */; +val* var28 /* : String */; +var_row = p0; +{ +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 */ +} +var1 = !var; +if (var1){ +{ +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_i = var2; +{ +{ /* Inline csv#CsvWriter#format (self) on */ +var5 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155); +fatal_exit(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline csv#CsvFormat#separator (var3) on */ +var8 = var3->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +var9 = standard__string___Char___Object__to_s(var6); +} +var_separator = var9; +{ +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 */ +} +{ +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 */ +} +{ +csv___csv__CsvWriter___write_cell(self, var11); /* Direct call csv#CsvWriter#write_cell on */ +} +{ +((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_ = var_i; +{ +var12 = standard___standard__Iterator___iterator(var_); +} +var_13 = var12; +for(;;) { +{ +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 */ +} +if (var14){ +{ +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_cell = var15; +{ +{ /* Inline csv#CsvWriter#ostream (self) on */ +var18 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152); +fatal_exit(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +standard___standard__FileWriter___standard__stream__Writer__write(var16, var_separator); /* Direct call file#FileWriter#write on */ +} +{ +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 */ +} +{ +csv___csv__CsvWriter___write_cell(self, var19); /* Direct call csv#CsvWriter#write_cell on */ +} +{ +((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 */ +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +((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 */ +} +} else { +} +{ +{ /* Inline csv#CsvWriter#ostream (self) on */ +var22 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152); +fatal_exit(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +{ /* Inline csv#CsvWriter#format (self) on */ +var25 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155); +fatal_exit(1); +} +var23 = var25; +RET_LABEL24:(void)0; +} +} +{ +{ /* Inline csv#CsvFormat#eol (var23) on */ +var28 = var23->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28); +fatal_exit(1); +} +var26 = var28; +RET_LABEL27:(void)0; +} +} +{ +standard___standard__FileWriter___standard__stream__Writer__write(var20, var26); /* Direct call file#FileWriter#write on */ +} +RET_LABEL:; +} +/* method csv#CsvWriter#write_cell for (self: CsvWriter, String) */ +void csv___csv__CsvWriter___write_cell(val* self, val* p0) { +val* var_cell /* var cell: String */; +short int var /* : Bool */; +short int var1 /* : Bool */; +short int var2 /* : Bool */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +short int var_ /* var : Bool */; +val* var6 /* : CsvFormat */; +val* var8 /* : CsvFormat */; +short int var9 /* : Bool */; +val* var10 /* : Writer */; +val* var12 /* : Writer */; +val* var13 /* : Writer */; +val* var15 /* : Writer */; +val* var16 /* : CsvFormat */; +val* var18 /* : CsvFormat */; +val* var19 /* : Text */; +var_cell = p0; +{ +var = standard___standard__Text___is_empty(var_cell); +} +if (var){ +goto RET_LABEL; +} else { +} +{ +{ /* Inline csv#CsvWriter#always_escape (self) on */ +var4 = self->attrs[COLOR_csv__CsvWriter___always_escape].s; /* _always_escape on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +var5 = !var2; +var_ = var5; +if (var5){ +{ +{ /* Inline csv#CsvWriter#format (self) on */ +var8 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155); +fatal_exit(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +var9 = csv___csv__CsvFormat___is_value_clean(var6, var_cell); +} +var1 = var9; +} else { +var1 = var_; +} +if (var1){ +{ +{ /* Inline csv#CsvWriter#ostream (self) on */ +var12 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152); +fatal_exit(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +standard___standard__FileWriter___standard__stream__Writer__write(var10, var_cell); /* Direct call file#FileWriter#write on */ +} +} else { +{ +{ /* Inline csv#CsvWriter#ostream (self) on */ +var15 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152); +fatal_exit(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline csv#CsvWriter#format (self) on */ +var18 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155); +fatal_exit(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +var19 = csv___csv__CsvFormat___escape_cell(var16, var_cell); +} +{ +standard___standard__FileWriter___standard__stream__Writer__write(var13, var19); /* Direct call file#FileWriter#write on */ +} +} +RET_LABEL:; +} +/* method csv#CsvWriter#init for (self: CsvWriter) */ +void csv___csv__CsvWriter___standard__kernel__Object__init(val* self) { +{ +((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvWriter___standard__kernel__Object__init]))(self); /* init on */ +} +RET_LABEL:; +} +/* method csv#Sys#rfc4180 for (self: Sys): CsvFormat */ +val* csv___standard__Sys___rfc4180(val* self) { +val* var /* : CsvFormat */; +static val* varonce; +static int varonce_guard; +val* var1 /* : CsvFormat */; +val* var2 /* : CsvFormat */; +static val* varonce3; +val* var4 /* : String */; +char* var5 /* : NativeString */; +val* var6 /* : FlatString */; +if (likely(varonce_guard)) { +var1 = varonce; +} else { +var2 = NEW_csv__CsvFormat(&type_csv__CsvFormat); +if (likely(varonce3!=NULL)) { +var4 = varonce3; +} else { +var5 = "\015\n"; +var6 = standard___standard__NativeString___to_s_with_length(var5, 2l); +var4 = var6; +varonce3 = var4; +} +{ +((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__delimiter_61d]))(var2, '\"'); /* delimiter= on */ +} +{ +((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__separator_61d]))(var2, ','); /* separator= on */ +} +{ +((void(*)(val* self, val* p0))(var2->class->vft[COLOR_csv__CsvFormat__eol_61d]))(var2, var4); /* eol= on */ +} +{ +((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on */ +} +var1 = var2; +varonce = var1; +varonce_guard = 1; +} +var = var1; +goto RET_LABEL; RET_LABEL:; +return var; }