Java + C#, reuse object in lookup_by_key (#4648)

* Java + C#, reuse object in lookup_by_key

* Java + C#, reuse object in lookup_by_key
This commit is contained in:
Mitchel
2018-03-02 18:22:46 -05:00
committed by Wouter van Oortmerssen
parent 0068b25132
commit 4ea1be53d4
5 changed files with 31 additions and 12 deletions

View File

@@ -1041,7 +1041,17 @@ class GeneralGenerator : public BaseGenerator {
code += MakeCamel(field.name, lang_.first_camel_upper) + "ByKey(";
code += GenTypeNameDest(key_field.value.type) + " key)";
code += offset_prefix;
code += qualified_name + ".__lookup_by_key(";
code += qualified_name + ".__lookup_by_key(null, ";
code += lang_.accessor_prefix + "__vector(o), key, ";
code += lang_.accessor_prefix + "bb) : null; ";
code += "}\n";
code += " public " + qualified_name + lang_.optional_suffix + " ";
code += MakeCamel(field.name, lang_.first_camel_upper) + "ByKey(";
code += qualified_name + lang_.optional_suffix + " obj, ";
code += GenTypeNameDest(key_field.value.type) + " key)";
code += offset_prefix;
code += qualified_name + ".__lookup_by_key(obj, ";
code += lang_.accessor_prefix + "__vector(o), key, ";
code += lang_.accessor_prefix + "bb) : null; ";
code += "}\n";
@@ -1368,7 +1378,8 @@ class GeneralGenerator : public BaseGenerator {
}
code += "\n public static " + struct_def.name + lang_.optional_suffix;
code += " __lookup_by_key(int vectorLocation, ";
code += " __lookup_by_key(" + struct_def.name;
code += " obj, int vectorLocation, ";
code += GenTypeNameDest(key_field->value.type);
code += " key, ByteBuffer bb) {\n";
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
@@ -1391,8 +1402,9 @@ class GeneralGenerator : public BaseGenerator {
code += " start += middle;\n";
code += " span -= middle;\n";
code += " } else {\n";
code += " return new " + struct_def.name;
code += "().__assign(tableOffset, bb);\n";
code += " return (obj == null ? ";
code += "new " + struct_def.name;
code += "(), obj).__assign(tableOffset, bb);\n";
code += " }\n }\n";
code += " return null;\n";
code += " }\n";