From 9f506f57c0eab871b0b3f6e47b112afd58c966e8 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Wed, 3 Sep 2014 15:34:40 -0700 Subject: [PATCH] Made sure GetRootAs..() functions are generated for all Java tables. Previously they were only generated for the root_type, making it impossible to use the other types in the file as the root of a buffer. Bug: 17206174 Change-Id: Ie71bed42ac3b22dcceae6385cbd5846c37e5f1b8 Tested: on Linux --- src/idl_gen_java.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/idl_gen_java.cpp b/src/idl_gen_java.cpp index 3009d4b..7c57ffb 100755 --- a/src/idl_gen_java.cpp +++ b/src/idl_gen_java.cpp @@ -154,9 +154,7 @@ static void GenStructBody(const StructDef &struct_def, std::string *code_ptr, } } -static void GenStruct(StructDef &struct_def, - std::string *code_ptr, - StructDef *root_struct_def) { +static void GenStruct(StructDef &struct_def, std::string *code_ptr) { if (struct_def.generated) return; std::string &code = *code_ptr; @@ -170,9 +168,9 @@ static void GenStruct(StructDef &struct_def, code += "public class " + struct_def.name + " extends "; code += struct_def.fixed ? "Struct" : "Table"; code += " {\n"; - if (&struct_def == root_struct_def) { - // Generate a special accessor for the table that has been declared as - // the root type. + if (!struct_def.fixed) { + // Generate a special accessor for the table that when used as the root + // of a FlatBuffer code += " public static " + struct_def.name + " getRootAs"; code += struct_def.name; code += "(ByteBuffer _bb, int offset) { "; @@ -377,7 +375,7 @@ bool GenerateJava(const Parser &parser, for (auto it = parser.structs_.vec.begin(); it != parser.structs_.vec.end(); ++it) { std::string declcode; - GenStruct(**it, &declcode, parser.root_struct_def); + GenStruct(**it, &declcode); if (!SaveClass(parser, **it, declcode, path, true)) return false; } -- 2.7.4