public FdbColumnData(BinaryReader reader, FdbColumnHeader header) { Type = new DataType[header.ColumnCount]; ColumnName = new FdbString[header.ColumnCount]; for (var i = 0; i < header.ColumnCount; i++) { Type[i] = (DataType)reader.ReadUInt32(); ColumnName[i] = new FdbString(reader); } }
public FdbTableHeader(BinaryReader reader, FdbFile file) { ColumnHeaders = new FdbColumnHeader[file.TableCount]; RowTopHeaders = new FdbRowBucket[file.TableCount]; for (var i = 0; i < file.TableCount; i++) { using (new FdbScope(reader)) { ColumnHeaders[i] = new FdbColumnHeader(reader); } using (new FdbScope(reader)) { RowTopHeaders[i] = new FdbRowBucket(reader); } } }
public FdbTableHeader(BinaryReader reader, FdbFile file, Action <uint> onTableLoaded) { ColumnHeaders = new FdbColumnHeader[file.TableCount]; RowTopHeaders = new FdbRowBucket[file.TableCount]; for (var i = 0; i < file.TableCount; i++) { using (new FdbScope(reader)) { ColumnHeaders[i] = new FdbColumnHeader(reader); } using (new FdbScope(reader)) { RowTopHeaders[i] = new FdbRowBucket(reader); } onTableLoaded.Invoke((uint)i); } }
private static void AddTable(FdbFile file) { Console.Write("New Table Name: "); var tableName = Console.ReadLine(); var tableInfo = new List <(string, DataType)>(); int columnIndex = default; while (true) { Console.Write($"[{columnIndex}] Column Name: "); var columnName = Console.ReadLine(); while (true) { Console.Write($"[{columnIndex}] Column Type: "); if (Enum.TryParse(typeof(DataType), Console.ReadLine(), out var newType)) { var data = (DataType)newType; tableInfo.Add((columnName, data)); break; } Console.WriteLine("Invalid type"); } Console.Write("Another column? <y>/<>"); switch (Console.ReadLine()?.ToLower()) { case "y": columnIndex++; continue; default: goto Finish; } } Finish: file.TableCount++; var columnHeader = file.TableHeader.ColumnHeaders.ToList(); var rowsHeader = file.TableHeader.RowTopHeaders.ToList(); var header = new FdbColumnHeader { ColumnCount = (uint)tableInfo.Count, TableName = new FdbString(tableName), Data = new FdbColumnData { ColumnName = tableInfo.Select(s => new FdbString(s.Item1)).ToArray(), Type = tableInfo.Select(s => s.Item2).ToArray() } }; var rowHeader = new FdbRowBucket { RowCount = 128, RowHeader = new FdbRowHeader { RowInfos = Enumerable.Repeat <FdbRowInfo>(null, 128).ToArray() } }; columnHeader.Add(header); rowsHeader.Add(rowHeader); file.TableHeader.ColumnHeaders = columnHeader.ToArray(); file.TableHeader.RowTopHeaders = rowsHeader.ToArray(); }