diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index d3b285d0c1c4297a5c4115e5e7b5d2edb9887a14..88ec0db2555f94af119edbd3b8c3648e2e8ade83 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -1215,7 +1215,8 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += "); }\n"; } } - if (struct_def.has_key) { + if (struct_def.has_key && (lang_.language == IDLOptions::kJava || + lang_.language == IDLOptions::kCSharp)) { if (lang_.language == IDLOptions::kJava) { code += "\n @Override\n protected int keysCompare("; code += "Integer o1, Integer o2, ByteBuffer _bb) {"; @@ -1240,12 +1241,14 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { if (key_field->value.type.base_type == BASE_TYPE_STRING) { code += " byte[] byteKey = "; if (lang_.language == IDLOptions::kJava) - code += "key.getBytes(StandardCharsets.UTF_8);\n"; + code += "key.getBytes(java.nio.charset.StandardCharsets.UTF_8);\n"; else code += "System.Text.Encoding.UTF8.GetBytes(key);\n"; } code += " int vectorLocation = " + GenByteBufferLength("bb"); - code += " - vectorOffset.Value;\n int span = "; + code += " - vectorOffset"; + if (lang_.language == IDLOptions::kCSharp) code += ".Value"; + code += ";\n int span = "; code += "bb." + FunctionStart('G') + "etInt(vectorLocation), "; code += "middle, start = 0, comp, tableOffset; \n"; code += " vectorLocation += 4;\n";