| 958 | } |
| 959 | |
| 960 | Status SchemaToFlatbuffer(FBB& fbb, const Schema& schema, |
| 961 | const DictionaryFieldMapper& mapper, |
| 962 | flatbuffers::Offset<flatbuf::Schema>* out) { |
| 963 | std::vector<FieldOffset> field_offsets; |
| 964 | FieldPosition pos; |
| 965 | for (int i = 0; i < schema.num_fields(); ++i) { |
| 966 | FieldOffset offset; |
| 967 | FieldToFlatbufferVisitor field_visitor(fbb, mapper, pos.child(i)); |
| 968 | RETURN_NOT_OK(field_visitor.GetResult(schema.field(i), &offset)); |
| 969 | field_offsets.push_back(offset); |
| 970 | } |
| 971 | |
| 972 | auto fb_offsets = fbb.CreateVector(field_offsets); |
| 973 | auto fb_endianness = schema.endianness() == Endianness::Little |
| 974 | ? flatbuf::Endianness::Endianness_Little |
| 975 | : flatbuf::Endianness::Endianness_Big; |
| 976 | *out = flatbuf::CreateSchema(fbb, fb_endianness, fb_offsets, |
| 977 | SerializeCustomMetadata(fbb, schema.metadata())); |
| 978 | return Status::OK(); |
| 979 | } |
| 980 | |
| 981 | Result<std::shared_ptr<Buffer>> WriteFBMessage( |
| 982 | FBB& fbb, flatbuf::MessageHeader header_type, flatbuffers::Offset<void> header, |
no test coverage detected