2 public import "CSVParser"
6 public enum ColumnType { null = 1, string = 2, number = 4, floater = 8, date = 12 };
7 public const String columnTypeNames[ColumnType] = { "", "Null", "String", "", "Number", "", "", "", "Float", "", "", "", "Date" };
9 public class Column : struct
26 public class CSVDataParser : public CSVParser
29 ColumnType * columnsTypes;
31 Array<Column> columns { };
41 bool OnRowStrings(Array<String> strings)
53 buffer.size = strlen(s) * 3 + 1;
54 len = ISO8859_1toUTF8(s, buffer.array, buffer.size);
55 str = new char[len + 1];
56 memcpy(str, buffer.array, len + 1);
57 column = Column { s = str };
60 column = Column { s = CopyString("") };
61 switch(columnsTypes[c])
66 d.OnGetDataFromString(s);
68 if(d.month >= january && d.month <= december)
72 ::Print/*Ln*/("bdate"/*"BAD DATE -- FIXME FIXME -- ", s*/);
78 column.type = floater;
79 column.f = (float)strtod(s, null);
83 column.i = strtol(s, null, 10);
90 switch(columnsTypes[c])
101 ::PrintLn("WHAT'S GOING ON?", s);
104 if(++c >= options.expectedFieldCount) break;
113 Array<char> buffer { minAllocSize = 1024 };