private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema) { // Build metadata VectorOffset metadataVectorOffset = default; if (schema.HasMetadata) { Offset <Flatbuf.KeyValue>[] metadataOffsets = GetMetadataOffsets(schema.Metadata); metadataVectorOffset = Flatbuf.Schema.CreateCustomMetadataVector(Builder, metadataOffsets); } // Build fields var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count]; for (int i = 0; i < fieldOffsets.Length; i++) { Field field = schema.GetFieldByIndex(i); StringOffset fieldNameOffset = Builder.CreateString(field.Name); ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field); VectorOffset fieldChildrenVectorOffset = GetChildrenFieldOffset(field); VectorOffset fieldMetadataVectorOffset = GetFieldMetadataOffset(field); fieldOffsets[i] = Flatbuf.Field.CreateField(Builder, fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema) { // TODO: Serialize schema metadata // Build fields var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count]; for (int i = 0; i < fieldOffsets.Length; i++) { Field field = schema.GetFieldByIndex(i); StringOffset fieldNameOffset = Builder.CreateString(field.Name); ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field); VectorOffset fieldChildrenVectorOffset = Builder.CreateVectorOfTables(GetChildrenFieldOffsets(field)); fieldOffsets[i] = Flatbuf.Field.CreateField(Builder, fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema) { // TODO: Serialize schema metadata // Build fields var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count]; var fieldChildren = new List <Offset <Flatbuf.Field> >(); for (var i = 0; i < fieldOffsets.Length; i++) { var field = schema.GetFieldByIndex(i); var fieldNameOffset = Builder.CreateString(field.Name); var fieldType = _fieldTypeBuilder.BuildFieldType(field); var fieldChildrenOffsets = Builder.CreateVectorOfTables(fieldChildren.ToArray()); fieldOffsets[i] = Flatbuf.Field.CreateField(Builder, fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema) { // Build metadata VectorOffset metadataVectorOffset = default; if (schema.HasMetadata) { Offset <Flatbuf.KeyValue>[] metadataOffsets = GetMetadataOffsets(schema.Metadata); metadataVectorOffset = Flatbuf.Schema.CreateCustomMetadataVector(Builder, metadataOffsets); } // Build fields var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count]; for (int i = 0; i < fieldOffsets.Length; i++) { Field field = schema.GetFieldByIndex(i); StringOffset fieldNameOffset = Builder.CreateString(field.Name); ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field); VectorOffset fieldChildrenVectorOffset = GetChildrenFieldOffset(field); VectorOffset fieldMetadataVectorOffset = GetFieldMetadataOffset(field); Offset <Flatbuf.DictionaryEncoding> dictionaryOffset = GetDictionaryOffset(field); fieldOffsets[i] = Flatbuf.Field.CreateField(Builder, fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset, dictionaryOffset, fieldChildrenVectorOffset, fieldMetadataVectorOffset); } VectorOffset fieldsVectorOffset = Flatbuf.Schema.CreateFieldsVector(Builder, fieldOffsets); // Build schema Flatbuf.Endianness endianness = BitConverter.IsLittleEndian ? Flatbuf.Endianness.Little : Flatbuf.Endianness.Big; return(Flatbuf.Schema.CreateSchema( Builder, endianness, fieldsVectorOffset, metadataVectorOffset)); }