mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-10 15:16:28 +00:00
Java/C#/Python prefixed size support (#4445)
* initial changes to support size prefixed buffers in Java * add slice equivalent to CSharp ByteBuffer * resolve TODO for slicing in CSharp code generation * add newly generated Java and CSharp test sources * fix typo in comment * add FinishSizePrefixed methods to CSharp FlatBufferBuilder as well * add option to allow writing the prefix as well * generate size-prefixed monster binary as well * extend JavaTest to test the size prefixed binary as well * use constants for size prefix length * fuse common code for getRootAs and getSizePrefixedRootAs * pulled file identifier out of if * add FinishSizePrefixed, GetSizePrefixedRootAs support for Python * Revert "extend JavaTest to test the size prefixed binary as well" This reverts commit68be4420dd. * Revert "generate size-prefixed monster binary as well" This reverts commit2939516fdf. * fix ByteBuffer.cs Slice() method; add proper CSharp and Java tests * fix unused parameter * increment version number * pulled out generated methods into separate utility class * pulled out generated methods into separate utility class for Python * fix indentation * remove unnecessary comment * fix newline and copyright * add ByteBufferUtil to csproj compilation * hide ByteBuffer's internal data; track offset into parent's array * test unsafe versions as well; compile and run in debug mode * clarify help text for size prefix * move ByteBuffer slicing behavior to subclass * fix protection levels * add size prefix support for text generation * add ByteBufferSlice to csproj compilation * revert size prefix handling for nested buffers * use duplicate instead of slice for removing size prefix * remove slice subclass and use duplicate for removing size prefix * remove slice specific tests * remove superfluous command line option
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
6b3f057bdc
commit
08cf50c54a
@@ -1331,17 +1331,22 @@ class GeneralGenerator : public BaseGenerator {
|
||||
}
|
||||
code += " return " + GenOffsetConstruct(struct_def, "o") + ";\n }\n";
|
||||
if (parser_.root_struct_def_ == &struct_def) {
|
||||
code += " public static void ";
|
||||
code += FunctionStart('F') + "inish" + struct_def.name;
|
||||
code +=
|
||||
"Buffer(FlatBufferBuilder builder, " + GenOffsetType(struct_def);
|
||||
code += " offset) {";
|
||||
code += " builder." + FunctionStart('F') + "inish(offset";
|
||||
if (lang_.language == IDLOptions::kCSharp) { code += ".Value"; }
|
||||
std::string size_prefix[] = { "", "SizePrefixed" };
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
code += " public static void ";
|
||||
code += FunctionStart('F') + "inish" + size_prefix[i] +
|
||||
struct_def.name;
|
||||
code += "Buffer(FlatBufferBuilder builder, " +
|
||||
GenOffsetType(struct_def);
|
||||
code += " offset) {";
|
||||
code += " builder." + FunctionStart('F') + "inish" + size_prefix[i] +
|
||||
"(offset";
|
||||
if (lang_.language == IDLOptions::kCSharp) { code += ".Value"; }
|
||||
|
||||
if (parser_.file_identifier_.length())
|
||||
code += ", \"" + parser_.file_identifier_ + "\"";
|
||||
code += "); }\n";
|
||||
if (parser_.file_identifier_.length())
|
||||
code += ", \"" + parser_.file_identifier_ + "\"";
|
||||
code += "); }\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
// Only generate key compare function for table,
|
||||
|
||||
Reference in New Issue
Block a user