X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=genbindings.py;h=a5fb3c25a9d3fe4741ad20f8d2d1e0055c2d7271;hb=f477813d9dfeb6ab6a78fb7324cee5dc05656c77;hp=ca66da196ce963abd2940449ecd9cc1b08f9912f;hpb=8cc58d0ad88e41a365fb4599b1b10b010ede2d20;p=ldk-java diff --git a/genbindings.py b/genbindings.py index ca66da19..a5fb3c25 100755 --- a/genbindings.py +++ b/genbindings.py @@ -677,65 +677,13 @@ with open(sys.argv[1]) as in_h, open(f"{sys.argv[2]}/bindings{consts.file_ext}", def map_result(struct_name, res_ty, err_ty): result_types.add(struct_name) human_ty = struct_name.replace("LDKCResult", "Result") + res_map = type_mapping_generator.map_type(res_ty + " res", True, None, False, True) + err_map = type_mapping_generator.map_type(err_ty + " err", True, None, False, True) + java_hu_struct = consts.map_result(struct_name, res_map, err_map) + create_getter(struct_name, res_ty, "ok", ("*", "->contents.result"), ("", "->result_ok")) + create_getter(struct_name, err_ty, "err", ("*", "->contents.err"), ("!", "->result_ok")) with open(f"{sys.argv[3]}/structs/{human_ty}{consts.file_ext}", "w") as out_java_struct: - out_java_struct.write(consts.hu_struct_file_prefix) - out_java_struct.write("public class " + human_ty + " extends CommonBase {\n") - out_java_struct.write("\tprivate " + human_ty + "(Object _dummy, long ptr) { super(ptr); }\n") - out_java_struct.write("\tprotected void finalize() throws Throwable {\n") - out_java_struct.write("\t\tif (ptr != 0) { bindings." + struct_name.replace("LDK","") + "_free(ptr); } super.finalize();\n") - out_java_struct.write("\t}\n\n") - out_java_struct.write("\tstatic " + human_ty + " constr_from_ptr(long ptr) {\n") - out_java_struct.write("\t\tif (bindings." + struct_name.replace("LDK", "") + "_is_ok(ptr)) {\n") - out_java_struct.write("\t\t\treturn new " + human_ty + "_OK(null, ptr);\n") - out_java_struct.write("\t\t} else {\n") - out_java_struct.write("\t\t\treturn new " + human_ty + "_Err(null, ptr);\n") - out_java_struct.write("\t\t}\n") - out_java_struct.write("\t}\n") - - res_map = type_mapping_generator.map_type(res_ty + " res", True, None, False, True) - err_map = type_mapping_generator.map_type(err_ty + " err", True, None, False, True) - can_clone = True - if not res_map.is_native_primitive and (res_map.rust_obj.replace("LDK", "") + "_clone" not in clone_fns): - can_clone = False - if not err_map.is_native_primitive and (err_map.rust_obj.replace("LDK", "") + "_clone" not in clone_fns): - can_clone = False - - create_getter(struct_name, res_ty, "ok", ("*", "->contents.result"), ("", "->result_ok")) - create_getter(struct_name, err_ty, "err", ("*", "->contents.err"), ("!", "->result_ok")) - - out_java_struct.write("\tpublic static final class " + human_ty + "_OK extends " + human_ty + " {\n") - - if res_map.java_hu_ty != "void": - out_java_struct.write("\t\tpublic final " + res_map.java_hu_ty + " res;\n") - out_java_struct.write("\t\tprivate " + human_ty + "_OK(Object _dummy, long ptr) {\n") - out_java_struct.write("\t\t\tsuper(_dummy, ptr);\n") - if res_map.java_hu_ty == "void": - pass - elif res_map.to_hu_conv is not None: - out_java_struct.write("\t\t\t" + res_map.java_ty + " res = bindings." + struct_name.replace("LDK", "") + "_get_ok(ptr);\n") - out_java_struct.write("\t\t\t" + res_map.to_hu_conv.replace("\n", "\n\t\t\t")) - out_java_struct.write("\n\t\t\tthis.res = " + res_map.to_hu_conv_name + ";\n") - else: - out_java_struct.write("\t\t\tthis.res = bindings." + struct_name.replace("LDK", "") + "_get_ok(ptr);\n") - out_java_struct.write("\t\t}\n") - out_java_struct.write("\t}\n\n") - - out_java_struct.write("\tpublic static final class " + human_ty + "_Err extends " + human_ty + " {\n") - if err_map.java_hu_ty != "void": - out_java_struct.write("\t\tpublic final " + err_map.java_hu_ty + " err;\n") - out_java_struct.write("\t\tprivate " + human_ty + "_Err(Object _dummy, long ptr) {\n") - out_java_struct.write("\t\t\tsuper(_dummy, ptr);\n") - if err_map.java_hu_ty == "void": - pass - elif err_map.to_hu_conv is not None: - out_java_struct.write("\t\t\t" + err_map.java_ty + " err = bindings." + struct_name.replace("LDK", "") + "_get_err(ptr);\n") - out_java_struct.write("\t\t\t" + err_map.to_hu_conv.replace("\n", "\n\t\t\t")) - out_java_struct.write("\n\t\t\tthis.err = " + err_map.to_hu_conv_name + ";\n") - else: - out_java_struct.write("\t\t\tthis.err = bindings." + struct_name.replace("LDK", "") + "_get_err(ptr);\n") - out_java_struct.write("\t\t}\n") - - out_java_struct.write("\t}\n\n") + out_java_struct.write(java_hu_struct) def create_getter(struct_name, field_decl, field_name, accessor, check_sfx): field_ty = java_c_types(field_decl + " " + field_name, None)