X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-java;a=blobdiff_plain;f=java_strings.py;h=6abfe42701edaea931a92e7593b4d948b48c34d9;hp=3a8ba6cb613047a728cb77a09abd7b5557664aba;hb=8f8b6aaddcb1dad3d708327c78850cdb30f2a64b;hpb=ecf12ebc7a74f5fa1726e0316bf77efd65c1c82d diff --git a/java_strings.py b/java_strings.py index 3a8ba6cb..6abfe427 100644 --- a/java_strings.py +++ b/java_strings.py @@ -701,6 +701,15 @@ import javax.annotation.Nullable; def add_ref(self, holder, referent): return holder + ".ptrs_to.add(" + referent + ")" + def fully_qualified_hu_ty_path(self, ty): + if ty.java_fn_ty_arg.startswith("L") and ty.java_fn_ty_arg.endswith(";"): + return ty.java_fn_ty_arg.strip("L;").replace("/", ".") + if ty.java_hu_ty == "UnqualifiedError" or ty.java_hu_ty == "UInt5": + return "org.ldk.util." + ty.java_hu_ty + if ty.rust_obj is not None and not "[]" in ty.java_hu_ty: + return "org.ldk.structs." + ty.java_hu_ty + return ty.java_hu_ty + def native_c_unitary_enum_map(self, struct_name, variants, enum_doc_comment): out_java_enum = "package org.ldk.enums;\n\n" out_java = "" @@ -1166,20 +1175,19 @@ import javax.annotation.Nullable; if idx > 0: init_meth_params = init_meth_params + ", " - if field_ty.java_hu_ty == var.var_name: - field_path = field_ty.java_fn_ty_arg.strip("L;").replace("/", ".") - out_java += "\t\t\tpublic " + field_path + " " + field_ty.arg_name + ";\n" - java_hu_subclasses = java_hu_subclasses + "\t\tpublic final " + field_path + " " + field_ty.arg_name + ";\n" - init_meth_params = init_meth_params + field_path + " " + field_ty.arg_name - else: - out_java += "\t\t\tpublic " + field_ty.java_ty + " " + field_ty.arg_name + ";\n" - if field_docs is not None: - java_hu_subclasses += "\t\t/**\n\t\t * " + field_docs.replace("\n", "\n\t\t * ") + "\n\t\t*/\n" - java_hu_subclasses += "\t\t" - if field_ty.nullable: - java_hu_subclasses += "@Nullable " - java_hu_subclasses += "public final " + field_ty.java_hu_ty + " " + field_ty.arg_name + ";\n" - init_meth_params = init_meth_params + field_ty.java_ty + " " + field_ty.arg_name + java_ty = field_ty.java_ty + if field_ty.java_fn_ty_arg.startswith("L") and field_ty.java_fn_ty_arg.endswith(";"): + # If this is a simple enum, we have to reference it in the low-level bindings differently: + java_ty = field_ty.java_fn_ty_arg.strip("L;").replace("/", ".") + out_java += "\t\t\tpublic " + java_ty + " " + field_ty.arg_name + ";\n" + if field_docs is not None: + java_hu_subclasses += "\t\t/**\n\t\t * " + field_docs.replace("\n", "\n\t\t * ") + "\n\t\t*/\n" + java_hu_subclasses += "\t\t" + if field_ty.nullable: + java_hu_subclasses += "@Nullable " + java_hu_subclasses += "public final " + self.fully_qualified_hu_ty_path(field_ty) + " " + field_ty.arg_name + ";\n" + init_meth_params = init_meth_params + java_ty + " " + field_ty.arg_name + init_meth_body = init_meth_body + "this." + field_ty.arg_name + " = " + field_ty.arg_name + "; " if field_ty.to_hu_conv is not None: hu_conv_body = hu_conv_body + "\t\t\t" + field_ty.java_ty + " " + field_ty.arg_name + " = obj." + field_ty.arg_name + ";\n"