public CSVRow(CSVTable table)
 {
     this.m_table     = table;
     this.m_rowOffset = table.GetColumnRowCount();
 }
        public void Load(string[] lines)
        {
            this.m_table = new CSVTable(this, lines.Length);

            if (lines.Length >= 2)
            {
                LogicArrayList <string> columnNames = this.ParseLine(lines[0]);
                LogicArrayList <string> columnTypes = this.ParseLine(lines[1]);

                for (int i = 0; i < columnNames.Size(); i++)
                {
                    this.m_table.AddColumn(columnNames[i]);
                }

                for (int i = 0; i < columnTypes.Size(); i++)
                {
                    string type       = columnTypes[i];
                    int    columnType = -1;

                    if (!string.IsNullOrEmpty(type))
                    {
                        if (string.Equals(type, "string", StringComparison.OrdinalIgnoreCase))
                        {
                            columnType = 0;
                        }
                        else if (string.Equals(type, "int", StringComparison.OrdinalIgnoreCase))
                        {
                            columnType = 1;
                        }
                        else if (string.Equals(type, "boolean", StringComparison.OrdinalIgnoreCase))
                        {
                            columnType = 2;
                        }
                        else
                        {
                            Debugger.Error(string.Format("Invalid column type '{0}', column name {1}, file {2}. Expecting: int/string/boolean.", columnTypes[i], columnNames[i], this.m_fileName));
                        }
                    }

                    this.m_table.AddColumnType(columnType);
                }

                this.m_table.ValidateColumnTypes();

                if (lines.Length > 2)
                {
                    for (int i = 2; i < lines.Length; i++)
                    {
                        LogicArrayList <string> values = this.ParseLine(lines[i]);

                        if (values.Size() > 0)
                        {
                            if (!string.IsNullOrEmpty(values[0]))
                            {
                                this.m_table.CreateRow();
                            }

                            for (int j = 0; j < values.Size(); j++)
                            {
                                this.m_table.AddAndConvertValue(values[j], j);
                            }
                        }
                    }
                }
            }
        }