X-Git-Url: http://nitlanguage.org diff --git a/c_src/csv.sep.1.c b/c_src/csv.sep.1.c index 37ec3a8..850e6b3 100644 --- a/c_src/csv.sep.1.c +++ b/c_src/csv.sep.1.c @@ -1,360 +1,1075 @@ #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$Text$escape_to_csv for (self: Text, Char, Char, String): String */ +val* csv___core__Text___escape_to_csv(val* self, uint32_t p0, uint32_t p1, val* p2) { +val* var /* : String */; +uint32_t var_sep_char /* var sep_char: Char */; +uint32_t var_delim_char /* var delim_char: Char */; +val* var_eol /* var eol: String */; +long var1 /* : Int */; +long var_add_sp /* var add_sp: Int */; +short int var2 /* : Bool */; +short int var4 /* : Bool */; +val* var5 /* : String */; +static val* varoncenew; +static int varoncenew_guard; +val* var6 /* : Buffer */; +val* var7 /* : Buffer */; +long var8 /* : Int */; +long var9 /* : Int */; +short int var11 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var12 /* : Int */; +val* var13 /* : Buffer */; +val* var_bf /* var bf: Buffer */; +long var_i /* var i: Int */; +long var14 /* : Int */; +long var_ /* var : Int */; +short int var15 /* : Bool */; +short int var17 /* : Bool */; +int cltype18; +int idtype19; +const char* var_class_name20; +short int var21 /* : Bool */; +uint32_t var22 /* : Char */; +uint32_t var_c /* var c: Char */; +short int var23 /* : Bool */; +short int var25 /* : Bool */; +long var26 /* : Int */; +val* var27 /* : String */; +var_sep_char = p0; +var_delim_char = p1; +var_eol = p2; +{ +var1 = csv___core__Text___chars_to_escape_csv(self, var_sep_char, var_delim_char, var_eol); +} +var_add_sp = var1; +{ +{ /* Inline kernel$Int$== (var_add_sp,0l) on */ +var4 = var_add_sp == 0l; +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +} +if (var2){ +{ +var5 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Object__to_s]))(self); /* to_s on */ +} +var = var5; +goto RET_LABEL; +} else { +} +if (likely(varoncenew_guard)) { +var6 = varoncenew; +} else { +var7 = NEW_core__Buffer(&type_core__Buffer); +var6 = var7; +varoncenew = var6; +varoncenew_guard = 1; +} +{ +var8 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__byte_length]))(self); /* byte_length on */ +} +{ +{ /* Inline kernel$Int$+ (var_add_sp,var8) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var11 = 1; /* easy isa OTHER*/ +if (unlikely(!var11)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var12 = var_add_sp + var8; +var9 = var12; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +} +{ +var13 = core__flat___Buffer___with_cap(var6, var9); +} +var_bf = var13; +{ +((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on */ +} +var_i = 0l; +{ +var14 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on */ +} +var_ = var14; +for(;;) { +{ +{ /* Inline kernel$Int$< (var_i,var_) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var17 = 1; /* easy isa OTHER*/ +if (unlikely(!var17)) { +var_class_name20 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725); +fatal_exit(1); +} +var21 = var_i < var_; +var15 = var21; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +} +if (var15){ +} else { +goto BREAK_label; +} +{ +var22 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on */ +} +var_c = var22; +{ +{ /* Inline kernel$Char$== (var_c,var_delim_char) on */ +var25 = var_c == var_delim_char; +var23 = var25; +goto RET_LABEL24; +RET_LABEL24:(void)0; +} +} +if (var23){ +{ +((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on */ +} +} else { +} +{ +((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on */ +} +{ +var26 = core___core__Int___Discrete__successor(var_i, 1l); +} +var_i = var26; +} +BREAK_label: (void)0; +{ +((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on */ +} +{ +var27 = ((val*(*)(val* self))(var_bf->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_bf); /* to_s on */ +} +var = var27; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method csv$Text$chars_to_escape_csv for (self: Text, Char, Char, String): Int */ +long csv___core__Text___chars_to_escape_csv(val* self, uint32_t p0, uint32_t p1, val* p2) { +long var /* : Int */; +uint32_t var_sep_char /* var sep_char: Char */; +uint32_t var_delim_char /* var delim_char: Char */; +val* var_eol /* var eol: String */; +long var_more_ln /* var more_ln: Int */; +long var1 /* : Int */; +long var_ln /* var ln: Int */; +short int var_need_esc /* var need_esc: Bool */; +uint32_t var2 /* : Char */; +uint32_t var_fst_eol /* var fst_eol: Char */; +long var_i /* var i: Int */; +short int var3 /* : Bool */; +short int var5 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var6 /* : Bool */; +uint32_t var7 /* : Char */; +uint32_t var_c /* var c: Char */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +long var11 /* : Int */; +short int var13 /* : Bool */; +int cltype14; +int idtype15; +const char* var_class_name16; +long var17 /* : Int */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +long var_j /* var j: Int */; +long var21 /* : Int */; +long var_ /* var : Int */; +short int var22 /* : Bool */; +short int var24 /* : Bool */; +int cltype25; +int idtype26; +const char* var_class_name27; +short int var28 /* : Bool */; +long var29 /* : Int */; +short int var31 /* : Bool */; +int cltype32; +int idtype33; +const char* var_class_name34; +long var35 /* : Int */; +uint32_t var36 /* : Char */; +uint32_t var37 /* : Char */; +short int var38 /* : Bool */; +short int var40 /* : Bool */; +short int var41 /* : Bool */; +long var42 /* : Int */; +short int var44 /* : Bool */; +int cltype45; +int idtype46; +const char* var_class_name47; +long var48 /* : Int */; +long var49 /* : Int */; +short int var50 /* : Bool */; +short int var52 /* : Bool */; +long var53 /* : Int */; +short int var55 /* : Bool */; +int cltype56; +int idtype57; +const char* var_class_name58; +long var59 /* : Int */; +long var61 /* : Int */; +long var62 /* : Int */; +short int var64 /* : Bool */; +int cltype65; +int idtype66; +const char* var_class_name67; +long var68 /* : Int */; +long var_more /* var more: Int */; +long var69 /* : Int */; +short int var71 /* : Bool */; +int cltype72; +int idtype73; +const char* var_class_name74; +long var75 /* : Int */; +var_sep_char = p0; +var_delim_char = p1; +var_eol = p2; +var_more_ln = 0l; +{ +var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on */ +} +var_ln = var1; +var_need_esc = 0; +{ +var2 = core___core__Text___first(var_eol); +} +var_fst_eol = var2; +var_i = 0l; +for(;;) { +{ +{ /* Inline kernel$Int$< (var_i,var_ln) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var5 = 1; /* easy isa OTHER*/ +if (unlikely(!var5)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725); +fatal_exit(1); +} +var6 = var_i < var_ln; +var3 = var6; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +} +if (var3){ +{ +var7 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on */ +} +var_c = var7; +{ +{ /* Inline kernel$Char$== (var_c,var_delim_char) on */ +var10 = var_c == var_delim_char; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +if (var8){ +{ +{ /* Inline kernel$Int$+ (var_more_ln,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var13 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var13)) { +var_class_name16 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var17 = var_more_ln + 1l; +var11 = var17; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +} +var_more_ln = var11; +} else { +} +{ +{ /* Inline kernel$Char$== (var_c,var_fst_eol) on */ +var20 = var_c == var_fst_eol; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; +} +} +if (var18){ +var_need_esc = 1; +var_j = 1l; +{ +var21 = ((long(*)(val* self))(var_eol->class->vft[COLOR_core__abstract_text__Text__length]))(var_eol); /* length on */ +} +var_ = var21; +for(;;) { +{ +{ /* Inline kernel$Int$< (var_j,var_) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var24 = 1; /* easy isa OTHER*/ +if (unlikely(!var24)) { +var_class_name27 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725); +fatal_exit(1); } +var28 = var_j < var_; +var22 = var28; +goto RET_LABEL23; +RET_LABEL23:(void)0; +} +} +if (var22){ +} else { +goto BREAK_label; +} +{ +{ /* Inline kernel$Int$+ (var_i,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var31 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var31)) { +var_class_name34 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var35 = var_i + 1l; +var29 = var35; +goto RET_LABEL30; +RET_LABEL30:(void)0; +} +} +var_i = var29; +{ +var36 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on */ +} +var_c = var36; +{ +var37 = ((uint32_t(*)(val* self, long p0))(var_eol->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(var_eol, var_j); /* [] on */ +} +{ +{ /* Inline kernel$Char$!= (var_c,var37) on */ +var40 = var_c == var37; +var41 = !var40; +var38 = var41; +goto RET_LABEL39; +RET_LABEL39:(void)0; +} +} +if (var38){ +{ +{ /* Inline kernel$Int$- (var_i,var_j) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var44 = 1; /* easy isa OTHER*/ +if (unlikely(!var44)) { +var_class_name47 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731); +fatal_exit(1); +} +var48 = var_i - var_j; +var42 = var48; +goto RET_LABEL43; +RET_LABEL43:(void)0; +} +} +var_i = var42; +var_need_esc = 0; +goto BREAK_label; +} else { +} +{ +var49 = core___core__Int___Discrete__successor(var_j, 1l); +} +var_j = var49; +} +BREAK_label: (void)0; +} else { +} +{ +{ /* Inline kernel$Char$== (var_c,var_sep_char) on */ +var52 = var_c == var_sep_char; +var50 = var52; +goto RET_LABEL51; +RET_LABEL51:(void)0; +} +} +if (var50){ +var_need_esc = 1; +} else { +} +{ +{ /* Inline kernel$Int$+ (var_i,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var55 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var55)) { +var_class_name58 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var59 = var_i + 1l; +var53 = var59; +goto RET_LABEL54; +RET_LABEL54:(void)0; +} +} +var_i = var53; +} else { +goto BREAK_label60; +} +} +BREAK_label60: (void)0; +{ +var61 = core__abstract_text___Char___u8char_len(var_delim_char); +} +{ +{ /* Inline kernel$Int$* (var_more_ln,var61) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var64 = 1; /* easy isa OTHER*/ +if (unlikely(!var64)) { +var_class_name67 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name67); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 732); +fatal_exit(1); +} +var68 = var_more_ln * var61; +var62 = var68; +goto RET_LABEL63; +RET_LABEL63:(void)0; +} +} +var_more = var62; +if (var_need_esc){ +{ +{ /* Inline kernel$Int$+ (var_more,2l) on */ +/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */ +/* <2l:Int> isa OTHER */ +var71 = 1; /* easy <2l:Int> isa OTHER*/ +if (unlikely(!var71)) { +var_class_name74 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var75 = var_more + 2l; +var69 = var75; +goto RET_LABEL70; +RET_LABEL70:(void)0; +} +} +var_more = var69; +} else { +} +var = var_more; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method csv$CsvStream$delimiter for (self: CsvStream): Char */ +uint32_t csv___csv__CsvStream___delimiter(val* self) { +uint32_t var /* : Char */; +uint32_t var1 /* : Char */; +var1 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter 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$CsvStream$delimiter= for (self: CsvStream, Char) */ +void csv___csv__CsvStream___delimiter_61d(val* self, uint32_t p0) { +self->attrs[COLOR_csv__CsvStream___delimiter].c = p0; /* _delimiter on */ +RET_LABEL:; +} +/* method csv$CsvStream$separator for (self: CsvStream): Char */ +uint32_t csv___csv__CsvStream___separator(val* self) { +uint32_t var /* : Char */; +uint32_t var1 /* : Char */; +var1 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on */ 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$CsvStream$separator= for (self: CsvStream, Char) */ +void csv___csv__CsvStream___separator_61d(val* self, uint32_t p0) { +self->attrs[COLOR_csv__CsvStream___separator].c = p0; /* _separator 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$CsvStream$eol for (self: CsvStream): String */ +val* csv___csv__CsvStream___eol(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on */ +if (unlikely(var1 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112); +fatal_exit(1); +} +var = var1; 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$CsvStream$eol= for (self: CsvStream, String) */ +void csv___csv__CsvStream___eol_61d(val* self, val* p0) { +self->attrs[COLOR_csv__CsvStream___eol].val = p0; /* _eol 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 /* : Array[String] */; +var1 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var1 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method csv#CSVDocument#lines for (self: Object): Array[Array[String]] */ -val* VIRTUAL_csv__CSVDocument__lines(val* self) { +/* method csv$CsvDocument$header= for (self: CsvDocument, nullable Array[String]) */ +void csv___csv__CsvDocument___header_61d(val* self, val* p0) { +val* var /* : Array[String] */; +val* var1 /* : Array[String] */; +if (p0 == NULL) { +var1 = NEW_core__Array(&type_core__Array__core__String); +{ +core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on */ +} +self->attrs[COLOR_csv__CsvDocument___header].val = var1; /* _header on */ +var = var1; +} else { +var = p0; +} +self->attrs[COLOR_csv__CsvDocument___header].val = var; /* _header on */ +RET_LABEL:; +} +/* 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 = csv__CSVDocument__lines(self); +var1 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var1 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126); +fatal_exit(1); +} var = var1; 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 */ -RET_LABEL:; +/* method csv$CsvDocument$records= for (self: CsvDocument, nullable Array[Array[String]]) */ +void csv___csv__CsvDocument___records_61d(val* self, val* p0) { +val* var /* : Array[Array[String]] */; +val* var1 /* : Array[Array[String]] */; +if (p0 == NULL) { +var1 = NEW_core__Array(&type_core__Array__core__Array__core__String); +{ +core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on */ } -/* 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); +self->attrs[COLOR_csv__CsvDocument___records].val = var1; /* _records on */ +var = var1; +} else { +var = p0; +} +self->attrs[COLOR_csv__CsvDocument___records].val = var; /* _records on */ RET_LABEL:; } -/* 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$add_record for (self: CsvDocument, Array[Object]) */ +void csv___csv__CsvDocument___add_record(val* self, val* p0) { +val* var_objs /* var objs: Array[Object] */; 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 */; +long var1 /* : Int */; +long var3 /* : Int */; +val* var_ln /* var ln: Array[String] */; +val* var_ /* var : Array[Object] */; +val* var4 /* : IndexedIterator[nullable Object] */; +val* var_5 /* var : IndexedIterator[Object] */; +short int var6 /* : Bool */; +val* var7 /* : nullable Object */; +val* var_i /* var i: Object */; +val* var8 /* : String */; +val* var9 /* : Array[Array[String]] */; +val* var11 /* : Array[Array[String]] */; +var_objs = p0; +var = NEW_core__Array(&type_core__Array__core__String); +{ +{ /* Inline array$AbstractArrayRead$length (var_objs) on */ +var3 = var_objs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +core___core__Array___with_capacity(var, var1); /* Direct call array$Array$with_capacity on */ +} +var_ln = var; +var_ = var_objs; +{ +var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_); +} +var_5 = var4; 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 */; +{ +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 */ +} +if (var6){ +} else { +goto BREAK_label; +} +{ +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_i = var7; +{ +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 */ +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var_ln, var8); /* Direct call array$Array$add on */ +} +{ +((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 */ +} } BREAK_label: (void)0; -RET_LABEL:; +{ +((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 */ +} +{ +{ /* Inline csv$CsvDocument$records (self) on */ +var11 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var11 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126); +fatal_exit(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var9, var_ln); /* Direct call array$Array$add on */ } -/* 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); RET_LABEL:; } -/* method csv#CSVDocument#add_line for (self: CSVDocument, Array[Object]) */ -void csv__CSVDocument__add_line(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 */; -static val* varonce; +/* method csv$CsvDocument$write_to for (self: CsvDocument, Writer) */ +void csv___csv__CsvDocument___core__stream__Writable__write_to(val* self, val* p0) { +val* var_stream /* var stream: Writer */; +val* var /* : CsvWriter */; +val* var_s /* var s: CsvWriter */; +uint32_t var1 /* : Char */; +uint32_t var3 /* : Char */; +val* var5 /* : String */; 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 */; -val* var_value /* var value: Object */; -val* var34 /* : String */; -val* var35 /* : 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; +uint32_t var9 /* : Char */; +uint32_t var11 /* : Char */; +val* var13 /* : Array[String] */; +val* var15 /* : Array[String] */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +val* var18 /* : Array[String] */; +val* var20 /* : Array[String] */; +val* var21 /* : Array[Array[String]] */; +val* var23 /* : Array[Array[String]] */; +var_stream = p0; +var = NEW_csv__CsvWriter(&type_csv__CsvWriter); +{ +((void(*)(val* self, val* p0))(var->class->vft[COLOR_csv__CsvWriter__ostream_61d]))(var, var_stream); /* ostream= on */ +} +{ +((void(*)(val* self))(var->class->vft[COLOR_core__kernel__Object__init]))(var); /* init on */ +} +var_s = var; +{ +{ /* Inline csv$CsvStream$separator (self) on */ +var3 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline csv$CsvStream$separator= (var_s,var1) on */ +var_s->attrs[COLOR_csv__CsvStream___separator].c = var1; /* _separator on */ RET_LABEL4:(void)0; } -if (var3){ -if (varonce) { -var7 = varonce; -} 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; -} 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; -} 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); +} +{ +{ /* Inline csv$CsvStream$eol (self) on */ +var7 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on */ +if (unlikely(var7 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112); +fatal_exit(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline csv$CsvStream$eol= (var_s,var5) on */ +var_s->attrs[COLOR_csv__CsvStream___eol].val = var5; /* _eol on */ +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline csv$CsvStream$delimiter (self) on */ +var11 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter on */ +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline csv$CsvStream$delimiter= (var_s,var9) on */ +var_s->attrs[COLOR_csv__CsvStream___delimiter].c = var9; /* _delimiter on */ +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline csv$CsvDocument$header (self) on */ +var15 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var15 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121); +fatal_exit(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +var16 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var13); +} +var17 = !var16; +if (var17){ +{ +{ /* Inline csv$CsvDocument$header (self) on */ +var20 = self->attrs[COLOR_csv__CsvDocument___header].val; /* _header on */ +if (unlikely(var20 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 121); +fatal_exit(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +csv___csv__CsvWriter___write_line(var_s, var18); /* Direct call csv$CsvWriter$write_line on */ +} } else { } -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$records (self) on */ +var23 = self->attrs[COLOR_csv__CsvDocument___records].val; /* _records on */ +if (unlikely(var23 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _records"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 126); +fatal_exit(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +csv___csv__CsvWriter___write_lines(var_s, var21); /* Direct call csv$CsvWriter$write_lines on */ +} +RET_LABEL:; +} +/* method csv$CsvDocument$init for (self: CsvDocument) */ +void csv___csv__CsvDocument___core__kernel__Object__init(val* self) { +{ +((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvDocument___core__kernel__Object__init]))(self); /* init 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)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 186); +fatal_exit(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* 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$write_lines for (self: CsvWriter, Array[Array[Object]]) */ +void csv___csv__CsvWriter___write_lines(val* self, val* p0) { +val* var_lines /* var lines: Array[Array[Object]] */; +val* var_ /* var : Array[Array[Object]] */; +val* var /* : IndexedIterator[nullable Object] */; +val* var_1 /* var : IndexedIterator[Array[Object]] */; +short int var2 /* : Bool */; +val* var3 /* : nullable Object */; +val* var_i /* var i: Array[Object] */; +var_lines = p0; +var_ = var_lines; +{ +var = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_); +} +var_1 = var; 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 */; +{ +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 */ +} +if (var2){ +} else { +goto BREAK_label; +} +{ +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_i = var3; +{ +csv___csv__CsvWriter___write_line(self, var_i); /* Direct call csv$CsvWriter$write_line on */ +} +{ +((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 */ +} } 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:; +{ +((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 */ } -/* 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 */; +/* method csv$CsvWriter$write_line for (self: CsvWriter, Array[Object]) */ +void csv___csv__CsvWriter___write_line(val* self, val* p0) { +val* var_line /* var line: Array[Object] */; +val* var /* : Writer */; +val* var2 /* : Writer */; +val* var_os /* var os: Writer */; +uint32_t var3 /* : Char */; +uint32_t var5 /* : Char */; +uint32_t var_esc /* var esc: Char */; +uint32_t var6 /* : Char */; +uint32_t var8 /* : Char */; +uint32_t var_sep /* var sep: Char */; +val* var9 /* : String */; 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* var_eol /* var eol: String */; +long var_i /* var i: Int */; +long var12 /* : Int */; +long var14 /* : Int */; +long var15 /* : Int */; +short int var17 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var18 /* : Int */; +long var_ /* var : Int */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; +int cltype22; +int idtype23; +const char* var_class_name24; +short int var25 /* : Bool */; +val* var26 /* : nullable Object */; 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 */; +long var29 /* : Int */; +val* var30 /* : nullable Object */; +val* var31 /* : String */; +val* var32 /* : String */; +var_line = p0; +{ +{ /* Inline csv$CsvWriter$ostream (self) on */ +var2 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on */ +if (unlikely(var2 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 186); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +var_os = var; +{ +{ /* Inline csv$CsvStream$delimiter (self) on */ +var5 = self->attrs[COLOR_csv__CsvStream___delimiter].c; /* _delimiter on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +var_esc = var3; +{ +{ /* Inline csv$CsvStream$separator (self) on */ +var8 = self->attrs[COLOR_csv__CsvStream___separator].c; /* _separator on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +var_sep = var6; +{ +{ /* Inline csv$CsvStream$eol (self) on */ +var11 = self->attrs[COLOR_csv__CsvStream___eol].val; /* _eol on */ +if (unlikely(var11 == NULL)) { +if(catchStack.cursor >= 0){ +longjmp(catchStack.envs[catchStack.cursor], 1); +} +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol"); +PRINT_ERROR(" (%s:%d)\n", FILE_csv, 112); +fatal_exit(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +var_eol = var9; +var_i = 0l; +{ +{ /* Inline array$AbstractArrayRead$length (var_line) on */ +var14 = var_line->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on */ +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline kernel$Int$- (var12,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var17 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var17)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731); +fatal_exit(1); +} +var18 = var12 - 1l; +var15 = var18; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +} +var_ = var15; 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; -} -var22 = ((val* (*)(val*, val*))(var_line->class->vft[COLOR_string__Collection__join]))(var_line, var18) /* join on */; -if (varonce23) { -var24 = varonce23; +{ +{ /* Inline kernel$Int$< (var_i,var_) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var21 = 1; /* easy isa OTHER*/ +if (unlikely(!var21)) { +var_class_name24 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725); +fatal_exit(1); +} +var25 = var_i < var_; +var19 = var25; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +} +if (var19){ } 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; +} +{ +var26 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_line, var_i); +} +{ +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 */ +} +{ +var28 = csv___core__Text___escape_to_csv(var27, var_sep, var_esc, var_eol); +} +{ +core___core__FileWriter___core__stream__Writer__write(var_os, var28); /* Direct call file$FileWriter$write on */ +} +{ +core___core__Writer___write_char(var_os, var_sep); /* Direct call stream$Writer$write_char on */ +} +{ +var29 = core___core__Int___Discrete__successor(var_i, 1l); +} +var_i = var29; } BREAK_label: (void)0; -var = var_str; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var30 = core___core__SequenceRead___last(var_line); } -/* 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); -var = var1; -RET_LABEL:; -return var; +{ +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 */ } -/* 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 */; -RET_LABEL:; +{ +var32 = csv___core__Text___escape_to_csv(var31, var_sep, var_esc, var_eol); } -/* method csv#CSVDocument#save for (self: Object, String) */ -void VIRTUAL_csv__CSVDocument__save(val* self, val* p0) { -csv__CSVDocument__save(self, p0); -RET_LABEL:; +{ +core___core__FileWriter___core__stream__Writer__write(var_os, var32); /* Direct call file$FileWriter$write on */ +} +{ +core___core__FileWriter___core__stream__Writer__write(var_os, var_eol); /* Direct call file$FileWriter$write on */ } -/* 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$init for (self: CsvWriter) */ +void csv___csv__CsvWriter___core__kernel__Object__init(val* self) { +{ +((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvWriter___core__kernel__Object__init]))(self); /* init on */ +} RET_LABEL:; }