Skip to content

Commit 569f3d9

Browse files
committed
[Java] Handle array-of-strings for 0.0.115
1 parent f6a3795 commit 569f3d9

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

java_strings.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,8 @@ def create_native_arr_call(self, arr_len, ty_info):
521521
clz_var = ty_info.java_fn_ty_arg[1:].replace("[", "arr_of_")
522522
self.c_array_class_caches.add(clz_var)
523523
return "(*env)->NewObjectArray(env, " + arr_len + ", " + clz_var + "_clz, NULL);\n"
524+
elif ty_info.subty.c_ty == "jstring":
525+
return "(*env)->NewObjectArray(env, " + arr_len + ", String_clz, NULL);\n"
524526
else:
525527
return "(*env)->New" + ty_info.java_ty.strip("[]").title() + "Array(env, " + arr_len + ")"
526528
def set_native_arr_contents(self, arr_name, arr_len, ty_info):
@@ -531,6 +533,8 @@ def set_native_arr_contents(self, arr_name, arr_len, ty_info):
531533
else:
532534
assert False
533535
def get_native_arr_contents(self, arr_name, dest_name, arr_len, ty_info, copy):
536+
if "String" in ty_info.java_ty:
537+
return None
534538
if ty_info.c_ty == "int8_tArray" or ty_info.c_ty == "int16_tArray":
535539
fn_ty = "Byte" if ty_info.c_ty == "int8_tArray" else "Short"
536540
if copy:
@@ -590,11 +594,16 @@ def init_str(self):
590594
res = ""
591595
for ty in sorted(self.c_array_class_caches):
592596
res = res + "static jclass " + ty + "_clz = NULL;\n"
597+
res = res + "static jclass String_clz = NULL;\n"
593598
res = res + "JNIEXPORT void Java_org_ldk_impl_bindings_init_1class_1cache(JNIEnv * env, jclass clz) {\n"
594599
for ty in sorted(self.c_array_class_caches):
595600
res = res + "\t" + ty + "_clz = (*env)->FindClass(env, \"" + ty.replace("arr_of_", "[") + "\");\n"
596601
res = res + "\tCHECK(" + ty + "_clz != NULL);\n"
597602
res = res + "\t" + ty + "_clz = (*env)->NewGlobalRef(env, " + ty + "_clz);\n"
603+
res = res + "\tString_clz = (*env)->FindClass(env, \"Ljava/lang/String;\");\n"
604+
res = res + "\tCHECK(String_clz != NULL);\n"
605+
res = res + "\tString_clz = (*env)->NewGlobalRef(env, String_clz);\n"
606+
598607
res = res + "}\n"
599608
return res
600609

0 commit comments

Comments
 (0)