From 4026117ba1109e22c9e046ea9f268621c350331c Mon Sep 17 00:00:00 2001 From: TGIshib Date: Fri, 26 Aug 2016 23:15:25 +0300 Subject: [PATCH 1/5] Correct idl_gen_general --- src/idl_gen_general.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index 04deb9a0b..6984d8260 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -1237,11 +1237,13 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += "ookupByKey(" + GenVectorOffsetType(); code += " vectorOffset, " + GenTypeGet(key_field->value.type); code += " key, ByteBuffer bb) {\n"; - code += " byte[] byteKey = "; - if (lang_.language == IDLOptions::kJava) - code += "key.getBytes(StandardCharsets.UTF_8);\n"; - else - code += "System.Text.Encoding.UTF8.GetBytes(key);\n"; + 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"; + else + code += "System.Text.Encoding.UTF8.GetBytes(key);\n"; + } code += " int vectorLocation = " + GenByteBufferLength("bb"); code += " - vectorOffset.Value;\n int span = "; code += "bb." + FunctionStart('G') + "etInt(vectorLocation), "; From ea9ee4c99eca9b3ffbd47ac46065e9de48f332bf Mon Sep 17 00:00:00 2001 From: TGIshib Date: Fri, 26 Aug 2016 23:47:23 +0300 Subject: [PATCH 2/5] Update idl_gen_general.cpp --- src/idl_gen_general.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index 6984d8260..d3b285d0c 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -705,7 +705,7 @@ std::string GenLookupKeyGetter(flatbuffers::FieldDef *key_field) { auto get_val = GenGetter(key_field->value.type) + "(" + GenOffsetGetter(key_field) + ")"; if (lang_.language == IDLOptions::kCSharp) { - key_getter += "comp = " + get_val + ".CompateTo(key);\n"; + key_getter += "comp = " + get_val + ".CompareTo(key);\n"; } else { key_getter += GenTypeGet(key_field->value.type) + " val = "; @@ -1250,7 +1250,7 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += "middle, start = 0, comp, tableOffset; \n"; code += " vectorLocation += 4;\n"; code += " while (span != 0) {\n"; - code += " int middle = span / 2;\n"; + code += " middle = span / 2;\n"; code += GenLookupKeyGetter(key_field); code += " if (comp > 0) span = middle;\n"; code += " else if (comp < 0) {\n"; From 1a18122e3f76a90c4b131e4c6b2d779c02f1cf62 Mon Sep 17 00:00:00 2001 From: TGIshib Date: Sat, 27 Aug 2016 00:04:25 +0300 Subject: [PATCH 3/5] Last idl_gen_general.cpp update --- src/idl_gen_general.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index d3b285d0c..88ec0db25 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"; From 2ff6152204816d6775ba3431ac8cc6e8132b2124 Mon Sep 17 00:00:00 2001 From: TGIshib Date: Sat, 27 Aug 2016 00:42:06 +0300 Subject: [PATCH 4/5] Update idl_gen_general.cpp --- src/idl_gen_general.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index 274a22f5e..f8d54fe71 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -703,7 +703,7 @@ std::string GenLookupKeyGetter(flatbuffers::FieldDef *key_field) { auto get_val = GenGetter(key_field->value.type) + "(" + GenOffsetGetter(key_field) + ")"; if (lang_.language == IDLOptions::kCSharp) { - key_getter += "int comp = " + get_val + ".CompateTo(key);\n"; + key_getter += "int comp = " + get_val + ".CompareTo(key);\n"; } else { key_getter += GenTypeGet(key_field->value.type) + " val = "; key_getter += get_val + ";\n"; @@ -1212,7 +1212,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) {"; @@ -1234,11 +1235,13 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += "ookupByKey(" + GenVectorOffsetType(); code += " vectorOffset, " + GenTypeGet(key_field->value.type); code += " key, ByteBuffer bb) {\n"; - code += " byte[] byteKey = "; - if (lang_.language == IDLOptions::kJava) - code += "key.getBytes(Table.UTF8_CHARSET.get());\n"; - else - code += "System.Text.Encoding.UTF8.GetBytes(key);\n"; + if (key_field->value.type.base_type == BASE_TYPE_STRING) { + code += " byte[] byteKey = "; + if (lang_.language == IDLOptions::kJava) + code += "key.getBytes(Table.UTF8_CHARSET.get());\n"; + else + code += "System.Text.Encoding.UTF8.GetBytes(key);\n"; + } code += " int vectorLocation = " + GenByteBufferLength("bb"); code += " - vectorOffset"; if (lang_.language == IDLOptions::kCSharp) code += ".Value"; From 722b903f89dc3ae88d7448ef1a065967872ab4f9 Mon Sep 17 00:00:00 2001 From: TGIshib Date: Sat, 27 Aug 2016 01:21:15 +0300 Subject: [PATCH 5/5] Remove languages check --- src/idl_gen_general.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp index f8d54fe71..b303d8855 100644 --- a/src/idl_gen_general.cpp +++ b/src/idl_gen_general.cpp @@ -1212,8 +1212,7 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) { code += "); }\n"; } } - if (struct_def.has_key && (lang_.language == IDLOptions::kJava || - lang_.language == IDLOptions::kCSharp)) { + if (struct_def.has_key) { if (lang_.language == IDLOptions::kJava) { code += "\n @Override\n protected int keysCompare("; code += "Integer o1, Integer o2, ByteBuffer _bb) {";