Example #1
0
        public FdbRowHeader(BinaryReader reader, FdbRowBucket rowBucket)
        {
            RowInfos = new FdbRowInfo[rowBucket.RowCount];

            for (var i = 0; i < rowBucket.RowCount; i++)
            {
                using (var s = new FdbScope(reader, true))
                {
                    if (s)
                    {
                        RowInfos[i] = new FdbRowInfo(reader);
                    }
                }
            }
        }
Example #2
0
        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);
            }
        }
Example #4
0
        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();
        }