X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-java;a=blobdiff_plain;f=typescript_strings.py;h=625716806f5f15c516286d0ac8ac7a9389151ca8;hp=b66181f37ddb5a840098680eefbaf27cf015b22b;hb=HEAD;hpb=7811d2191440c55034e1abfbf3be442d4b25481b diff --git a/typescript_strings.py b/typescript_strings.py index b66181f3..9704a48f 100644 --- a/typescript_strings.py +++ b/typescript_strings.py @@ -129,7 +129,7 @@ async function finishInitializeWasm(wasmInstance: WebAssembly.Instance) { } const fn_list = ["uuuuuu", "buuuuu", "bbuuuu", "bbbuuu", "bbbbuu", "bbbbbu", - "bbbbbb", "ubuubu", "ubuuuu", "ubbuuu", "uubuuu", "uububu", "ububuu"]; + "bbbbbb", "ubuubu", "ubuuuu", "ubbuuu", "uubuuu", "uubbuu", "uububu", "ububuu", "uuuubu"]; /* @internal */ export async function initializeWasmFromUint8Array(wasmBinary: Uint8Array) { @@ -489,6 +489,28 @@ export class UnqualifiedError { }""" self.obj_defined(["BigEndianScalar"], "structs") + self.witness_program_defn = """export class WitnessProgram extends CommonBase { + /** The witness program bytes themselves */ + public program: Uint8Array; + /** The witness program version */ + public version: WitnessVersion; + + /* @internal */ + public constructor(_dummy: null, ptr: bigint) { + super(ptr, bindings.WitnessProgram_free); + this.program = bindings.decodeUint8Array(bindings.WitnessProgram_get_program(ptr)); + this.version = new WitnessVersion(bindings.WitnessProgram_get_version(ptr)); + } + public static constructor_new(program: Uint8Array, version: WitnessVersion): WitnessProgram { + if (program.length < 2 || program.length > 40) + throw new Error("WitnessProgram must be between 2 and 40 bytes long"); + if (version.getVal() == 0 && program.length != 20 && program.length != 32) + throw new Error("WitnessProgram for version 0 must be between either 20 or 30 bytes"); + return new WitnessProgram(null, bindings.WitnessProgram_new(version.getVal(), bindings.encodeUint8Array(program))); + } +}""" + self.obj_defined(["WitnessProgram"], "structs") + self.c_file_pfx = """#include "js-wasm.h" #include #include @@ -752,7 +774,7 @@ import * as bindings from '../bindings.mjs' self.usize_c_ty = "uint32_t" self.usize_native_ty = "number" self.native_zero_ptr = "0n" - self.result_c_ty = "uint32_t" + self.unitary_enum_c_ty = "uint32_t" self.ptr_arr = "ptrArray" self.is_arr_some_check = ("", " != 0") self.get_native_arr_len_call = ("", "->arr_len") @@ -1365,7 +1387,7 @@ export class {struct_name.replace("LDK","")} extends CommonBase {{ out_c += "\t" + struct_name + " *obj = (" + struct_name + "*)untag_ptr(ptr);\n" out_c += f"\tassert(obj->tag == {struct_name}_{var.var_name});\n" if field_map.ret_conv is not None: - out_c += ("\t\t\t" + field_map.ret_conv[0].replace("\n", "\n\t\t\t")) + out_c += ("\t" + field_map.ret_conv[0].replace("\n", "\n\t")) if var.tuple_variant: out_c += "obj->" + camel_to_snake(var.var_name) else: @@ -1387,7 +1409,7 @@ export class {struct_name.replace("LDK","")} extends CommonBase {{ def map_opaque_struct(self, struct_name, struct_doc_comment): method_header = "" - hu_name = struct_name.replace("LDKC2Tuple", "TwoTuple").replace("LDKC3Tuple", "ThreeTuple").replace("LDK", "") + hu_name = struct_name.replace("LDKC2Tuple", "TwoTuple").replace("LDKC3Tuple", "ThreeTuple").replace("LDKC4Tuple", "FourTuple").replace("LDK", "") out_opaque_struct_human = f"{self.hu_struct_file_prefix}" constructor_body = "super(ptr, bindings." + struct_name.replace("LDK","") + "_free);" extra_docs = ""