Я получаю эту ошибку, когда пытаюсь использовать векторы союзов и генерировать двоичные файлы формата проводника (--binary)
flatc.exe --cpp --java --js --csharp --binary c.fbs
error: D:\FlatbuffersVectorOfUnions\c.fbs(13, 9): error: Vectors of unions are not yet supported in all the specified programming languages.
Без --binary-switch flatc.exe не жалуется:
flatc.exe --cpp --java --js --csharp c.fbs
Действительно ли невозможно использовать векторы объединений при генерации двоичных файлов форматов проводов? Я думал, что это двоичная сериализация текстовой схемы и должен поддерживать все, что возможно с файлами .fbs.
Мне было любопытно и изменил Parser :: SupportsVectorOfUnions () в idl_parser.cpp (| IDLOptions ::kBinary) и, кажется, работает.
bool Parser::SupportsVectorOfUnions() const {
return opts.lang_to_generate != 0 &&
(opts.lang_to_generate & ~(IDLOptions::kCpp | IDLOptions::kJs |
IDLOptions::kTs | IDLOptions::kPhp |
IDLOptions::kJava | IDLOptions::kCSharp | IDLOptions::kBinary)) == 0;
}
Это c.fbs
table A {
}
table B {
}
union U {
A,
B
}
table C {
v : [U];
}
root_type C;