X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=java_strings.py;h=2fcf836d23b900bcf87bd3b7e5875c5ee0c52523;hb=ebef1f83fe4f70ba2f5c683a69f08e7ba32c8ad3;hp=8338bc176156b056c77c367674faa9b37ff32996;hpb=153c5653d39ca5dc40e4cd9bfbab41936b850768;p=ldk-java diff --git a/java_strings.py b/java_strings.py index 8338bc17..2fcf836d 100644 --- a/java_strings.py +++ b/java_strings.py @@ -16,6 +16,12 @@ class Consts: uint32_t = ['int'], uint64_t = ['long'], ) + self.java_type_map = dict( + String = "String" + ) + self.java_hu_type_map = dict( + String = "String" + ) self.to_hu_conv_templates = dict( ptr = '{human_type} {var_name}_hu_conv = null; if ({var_name} < 0 || {var_name} > 4096) { {var_name}_hu_conv = new {human_type}(null, {var_name}); }', @@ -631,6 +637,10 @@ import javax.annotation.Nullable; return "str_ref_to_java(env, " + var_name + ", " + str_len + ")" def str_ref_to_c_call(self, var_name): return "java_to_owned_str(env, " + var_name + ")" + def str_to_hu_conv(self, var_name): + return None + def str_from_hu_conv(self, var_name): + return None def c_fn_name_define_pfx(self, fn_name, has_args): if has_args: @@ -652,6 +662,30 @@ import javax.annotation.Nullable; def var_decl_statement(self, ty_string, var_name, statement): return ty_string + " " + var_name + " = " + statement + def get_java_arr_len(self, arr_name): + return arr_name + ".length" + def get_java_arr_elem(self, elem_ty, arr_name, idx): + return arr_name + "[" + idx + "]" + def constr_hu_array(self, ty_info, arr_len): + base_ty = ty_info.subty.java_hu_ty.split("[")[0].split("<")[0] + conv = "new " + base_ty + "[" + arr_len + "]" + if "[" in ty_info.subty.java_hu_ty.split("<")[0]: + # Do a bit of a dance to move any excess [] to the end + conv += "[" + ty_info.subty.java_hu_ty.split("<")[0].split("[")[1] + return conv + def cleanup_converted_native_array(self, ty_info, arr_name): + return None + + def primitive_arr_from_hu(self, mapped_ty, fixed_len, arr_name): + if fixed_len is not None: + return ("InternalUtils.check_arr_len(" + arr_name + ", " + fixed_len + ")", "") + return None + def primitive_arr_to_hu(self, primitive_ty, fixed_len, arr_name, conv_name): + return None + + def java_arr_ty_str(self, elem_ty_str): + return elem_ty_str + "[]" + def for_n_in_range(self, n, minimum, maximum): return "for (int " + n + " = " + minimum + "; " + n + " < " + maximum + "; " + n + "++) {" def for_n_in_arr(self, n, arr_name, arr_elem_ty): @@ -942,7 +976,7 @@ import javax.annotation.Nullable; out_c = out_c + "\t" + fn_line.ret_ty_info.c_ty + " ret = (*env)->CallObjectMethod(env, obj, j_calls->" + fn_line.fn_name + "_meth" elif fn_line.ret_ty_info.c_ty == "void": out_c += "\t(*env)->Call" + fn_line.ret_ty_info.java_ty.title() + "Method(env, obj, j_calls->" + fn_line.fn_name + "_meth" - elif fn_line.ret_ty_info.java_ty == "String": + elif fn_line.ret_ty_info.java_hu_ty == "String": # Manually write out String methods as they're just an Object out_c += "\t" + fn_line.ret_ty_info.c_ty + " ret = (*env)->CallObjectMethod(env, obj, j_calls->" + fn_line.fn_name + "_meth" elif not fn_line.ret_ty_info.passed_as_ptr: