From 4b75327c6b57b9819938eb0008667c86c39d6ca7 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 7 Jan 2022 20:59:42 +0000 Subject: [PATCH] Make human -> C array mapping language-specific --- gen_type_mapping.py | 9 +-------- java_strings.py | 8 ++++++++ typescript_strings.py | 3 +++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gen_type_mapping.py b/gen_type_mapping.py index f4d6b380..76510119 100644 --- a/gen_type_mapping.py +++ b/gen_type_mapping.py @@ -198,14 +198,7 @@ class TypeMappingGenerator: hu_conv_b = "" if subty.from_hu_conv[1] != "": hu_conv_b = "for (" + subty.java_hu_ty + " " + conv_name + ": " + arr_name + ") { " + subty.from_hu_conv[1] + "; }" - if subty.java_ty == "long" and subty.java_hu_ty != "long": - from_hu_conv = (arr_name + " != null ? Arrays.stream(" + arr_name + ").mapToLong(" + conv_name + " -> " + subty.from_hu_conv[0] + ").toArray() : null", - hu_conv_b) - elif subty.java_ty == "long": - from_hu_conv = (arr_name + " != null ? Arrays.stream(" + arr_name + ").map(" + conv_name + " -> " + subty.from_hu_conv[0] + ").toArray() : null", "/* TODO 2 " + subty.java_hu_ty + " */") - else: - from_hu_conv = (arr_name + " != null ? Arrays.stream(" + arr_name + ").map(" + conv_name + " -> " + subty.from_hu_conv[0] + ").toArray(" + ty_info.java_ty + "::new) : null", - hu_conv_b) + from_hu_conv = (self.consts.map_hu_array_elems(arr_name, conv_name, ty_info, subty), hu_conv_b) return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name, arg_conv = arg_conv, arg_conv_name = arg_conv_name, arg_conv_cleanup = arg_conv_cleanup, diff --git a/java_strings.py b/java_strings.py index ada526fc..cb23b56a 100644 --- a/java_strings.py +++ b/java_strings.py @@ -595,6 +595,14 @@ import javax.annotation.Nullable; else: return "(*env)->Release" + ty_info.java_ty.strip("[]").title() + "ArrayElements(env, " + arr_name + ", " + dest_name + ", 0)" + def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty): + if elem_ty.java_ty == "long" and elem_ty.java_hu_ty != "long": + return arr_name + " != null ? Arrays.stream(" + arr_name + ").mapToLong(" + conv_name + " -> " + elem_ty.from_hu_conv[0] + ").toArray() : null" + elif elem_ty.java_ty == "long": + return arr_name + " != null ? Arrays.stream(" + arr_name + ").map(" + conv_name + " -> " + elem_ty.from_hu_conv[0] + ").toArray() : null" + else: + return arr_name + " != null ? Arrays.stream(" + arr_name + ").map(" + conv_name + " -> " + elem_ty.from_hu_conv[0] + ").toArray(" + arr_ty.java_ty + "::new) : null" + def str_ref_to_native_call(self, var_name, str_len): return "str_ref_to_java(env, " + var_name + ", " + str_len + ")" def str_ref_to_c_call(self, var_name): diff --git a/typescript_strings.py b/typescript_strings.py index faa13d57..01096343 100644 --- a/typescript_strings.py +++ b/typescript_strings.py @@ -358,6 +358,9 @@ import * as InternalUtils from '../InternalUtils.mjs' else: return None + def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty): + return arr_name + " != null ? " + arr_name + ".map(" + conv_name + " => " + elem_ty.from_hu_conv[0] + ") : null" + def str_ref_to_native_call(self, var_name, str_len): return "str_ref_to_ts(" + var_name + ", " + str_len + ")" def str_ref_to_c_call(self, var_name): -- 2.39.5