X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=java_strings.py;h=ada526fcbaa512952d4fdd7b172c6a3a77201767;hb=6fd82c1b987893a8c6ffd7979743196ab60e20fc;hp=3a72a5b8d83a27d4579c7f658df149ccfed293d3;hpb=e2aa598aa07fde645c4fab04df6f49db84a5e6db;p=ldk-java diff --git a/java_strings.py b/java_strings.py index 3a72a5b8..ada526fc 100644 --- a/java_strings.py +++ b/java_strings.py @@ -106,6 +106,7 @@ import org.ldk.impl.bindings; import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; +import java.lang.ref.Reference; import javax.annotation.Nullable; public class UtilMethods { @@ -616,6 +617,17 @@ import javax.annotation.Nullable; res = res + "}\n" return res + def var_decl_statement(self, ty_string, var_name, statement): + return ty_string + " " + var_name + " = " + statement + + def get_ptr(self, var): + return var + ".ptr" + def set_null_skip_free(self, var): + return var + ".ptr" + " = 0;" + + def add_ref(self, holder, referent): + return holder + ".ptrs_to.add(" + referent + ")" + def native_c_unitary_enum_map(self, struct_name, variants, enum_doc_comment): out_java_enum = "package org.ldk.enums;\n\n" out_java = "" @@ -1170,6 +1182,58 @@ import javax.annotation.Nullable; def map_tuple(self, struct_name): return self.map_opaque_struct(struct_name, "A Tuple") + def map_result(self, struct_name, res_map, err_map): + human_ty = struct_name.replace("LDKCResult", "Result") + java_hu_struct = "" + java_hu_struct += self.hu_struct_file_prefix + java_hu_struct += "public class " + human_ty + " extends CommonBase {\n" + java_hu_struct += "\tprivate " + human_ty + "(Object _dummy, long ptr) { super(ptr); }\n" + java_hu_struct += "\tprotected void finalize() throws Throwable {\n" + java_hu_struct += "\t\tif (ptr != 0) { bindings." + struct_name.replace("LDK","") + "_free(ptr); } super.finalize();\n" + java_hu_struct += "\t}\n\n" + java_hu_struct += "\tstatic " + human_ty + " constr_from_ptr(long ptr) {\n" + java_hu_struct += "\t\tif (bindings." + struct_name.replace("LDK", "") + "_is_ok(ptr)) {\n" + java_hu_struct += "\t\t\treturn new " + human_ty + "_OK(null, ptr);\n" + java_hu_struct += "\t\t} else {\n" + java_hu_struct += "\t\t\treturn new " + human_ty + "_Err(null, ptr);\n" + java_hu_struct += "\t\t}\n" + java_hu_struct += "\t}\n" + + java_hu_struct += "\tpublic static final class " + human_ty + "_OK extends " + human_ty + " {\n" + + if res_map.java_hu_ty != "void": + java_hu_struct += "\t\tpublic final " + res_map.java_hu_ty + " res;\n" + java_hu_struct += "\t\tprivate " + human_ty + "_OK(Object _dummy, long ptr) {\n" + java_hu_struct += "\t\t\tsuper(_dummy, ptr);\n" + if res_map.java_hu_ty == "void": + pass + elif res_map.to_hu_conv is not None: + java_hu_struct += "\t\t\t" + res_map.java_ty + " res = bindings." + struct_name.replace("LDK", "") + "_get_ok(ptr);\n" + java_hu_struct += "\t\t\t" + res_map.to_hu_conv.replace("\n", "\n\t\t\t") + java_hu_struct += "\n\t\t\tthis.res = " + res_map.to_hu_conv_name + ";\n" + else: + java_hu_struct += "\t\t\tthis.res = bindings." + struct_name.replace("LDK", "") + "_get_ok(ptr);\n" + java_hu_struct += "\t\t}\n" + java_hu_struct += "\t}\n\n" + + java_hu_struct += "\tpublic static final class " + human_ty + "_Err extends " + human_ty + " {\n" + if err_map.java_hu_ty != "void": + java_hu_struct += "\t\tpublic final " + err_map.java_hu_ty + " err;\n" + java_hu_struct += "\t\tprivate " + human_ty + "_Err(Object _dummy, long ptr) {\n" + java_hu_struct += "\t\t\tsuper(_dummy, ptr);\n" + if err_map.java_hu_ty == "void": + pass + elif err_map.to_hu_conv is not None: + java_hu_struct += "\t\t\t" + err_map.java_ty + " err = bindings." + struct_name.replace("LDK", "") + "_get_err(ptr);\n" + java_hu_struct += "\t\t\t" + err_map.to_hu_conv.replace("\n", "\n\t\t\t") + java_hu_struct += "\n\t\t\tthis.err = " + err_map.to_hu_conv_name + ";\n" + else: + java_hu_struct += "\t\t\tthis.err = bindings." + struct_name.replace("LDK", "") + "_get_err(ptr);\n" + java_hu_struct += "\t\t}\n" + + java_hu_struct += "\t}\n\n" + return java_hu_struct + def map_function(self, argument_types, c_call_string, method_name, meth_n, return_type_info, struct_meth, default_constructor_args, takes_self, takes_self_as_ref, args_known, type_mapping_generator, doc_comment): out_java = "" out_c = "" @@ -1209,7 +1273,7 @@ import javax.annotation.Nullable; out_java_struct += "\tpublic static " + return_type_info.java_hu_ty + " with_default(" else: out_java_struct += "\tpublic static " + return_type_info.java_hu_ty + " " + meth_n + "(" - elif meth_n == "clone_ptr": + elif meth_n == "clone_ptr" or (struct_meth.startswith("LDKCResult") and (meth_n == "get_ok" or meth_n == "get_err")): out_java_struct += ("\t" + return_type_info.java_hu_ty + " " + meth_n + "(") else: if meth_n == "hash" and return_type_info.java_hu_ty == "long": @@ -1383,3 +1447,6 @@ import javax.annotation.Nullable; out_java_struct += ("\t}\n\n") return (out_java, out_c, out_java_struct + extra_java_struct_out) + + def cleanup(self): + pass