Make TxOut language-specific, fix typescript UtilMethods compilation
authorMatt Corallo <git@bluematt.me>
Fri, 7 Jan 2022 23:02:42 +0000 (23:02 +0000)
committerMatt Corallo <git@bluematt.me>
Sat, 8 Jan 2022 04:12:35 +0000 (04:12 +0000)
genbindings.py
java_strings.py
typescript_strings.py

index a5fb3c25a9d3fe4741ad20f8d2d1e0055c2d7271..06827cf02b5abb93fe254d4a0c3dffa2ad67517e 100755 (executable)
@@ -911,30 +911,7 @@ with open(sys.argv[1]) as in_h, open(f"{sys.argv[2]}/bindings{consts.file_ext}",
                 elif struct_name == "LDKTxOut":
                     with open(f"{sys.argv[3]}/structs/TxOut{consts.file_ext}", "w") as out_java_struct:
                         out_java_struct.write(consts.hu_struct_file_prefix)
-                        out_java_struct.write("public class TxOut extends CommonBase{\n")
-                        out_java_struct.write("\t/** The script_pubkey in this output */\n")
-                        out_java_struct.write("\tpublic final byte[] script_pubkey;\n")
-                        out_java_struct.write("\t/** The value, in satoshis, of this output */\n")
-                        out_java_struct.write("\tpublic final long value;\n")
-                        out_java_struct.write("\n")
-                        out_java_struct.write("\tTxOut(java.lang.Object _dummy, long ptr) {\n")
-                        out_java_struct.write("\t\tsuper(ptr);\n")
-                        out_java_struct.write("\t\tthis.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);\n")
-                        out_java_struct.write("\t\tthis.value = bindings.TxOut_get_value(ptr);\n")
-                        out_java_struct.write("\t}\n")
-                        out_java_struct.write("\tpublic TxOut(long value, byte[] script_pubkey) {\n")
-                        out_java_struct.write("\t\tsuper(bindings.TxOut_new(script_pubkey, value));\n")
-                        out_java_struct.write("\t\tthis.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);\n")
-                        out_java_struct.write("\t\tthis.value = bindings.TxOut_get_value(ptr);\n")
-                        out_java_struct.write("\t}\n")
-                        out_java_struct.write("\n")
-                        out_java_struct.write("\t@Override @SuppressWarnings(\"deprecation\")\n")
-                        out_java_struct.write("\tprotected void finalize() throws Throwable {\n")
-                        out_java_struct.write("\t\tsuper.finalize();\n")
-                        out_java_struct.write("\t\tif (ptr != 0) { bindings.TxOut_free(ptr); }\n")
-                        out_java_struct.write("\t}\n")
-                        out_java_struct.write("\n")
-                        out_java_struct.write("}")
+                        out_java_struct.write(consts.txout_defn)
                         fn_line = "struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing)"
                         write_c(fn_line + " {")
                         write_c("\treturn CVec_u8Z_clone(&thing->script_pubkey);")
index 535646b94ad623ac0d2b8cbdd73fc83921954014..8338bc176156b056c77c367674faa9b37ff32996 100644 (file)
@@ -121,6 +121,30 @@ class CommonBase {
 }
 """
 
+        self.txout_defn = """public class TxOut extends CommonBase {
+       /** The script_pubkey in this output */
+       public final byte[] script_pubkey;
+       /** The value, in satoshis, of this output */
+       public final long value;
+
+       TxOut(java.lang.Object _dummy, long ptr) {
+               super(ptr);
+               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
+               this.value = bindings.TxOut_get_value(ptr);
+       }
+       public TxOut(long value, byte[] script_pubkey) {
+               super(bindings.TxOut_new(script_pubkey, value));
+               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
+               this.value = bindings.TxOut_get_value(ptr);
+       }
+
+       @Override @SuppressWarnings(\"deprecation\")
+       protected void finalize() throws Throwable {
+               super.finalize();
+               if (ptr != 0) { bindings.TxOut_free(ptr); }
+       }
+}"""
+
         self.c_file_pfx = """#include <jni.h>
 // On OSX jlong (ie long long) is not equivalent to int64_t, so we override here
 #define int64_t jlong
index f889519b76dbd9509235d35ce04513447eba4ec6..d595e4d2351470ae4f86eb4fe666ec2b783df9da 100644 (file)
@@ -76,9 +76,6 @@ public static native long new_empty_slice_vec();
 
         self.bindings_footer = ""
 
-        self.util_fn_pfx = ""
-        self.util_fn_sfx = ""
-
         self.common_base = """
 function freer(f: () => void) { f() }
 const finalizer = new FinalizationRegistry(freer);
@@ -113,6 +110,24 @@ export default class CommonBase {
 }
 """
 
+        self.txout_defn = """export class TxOut extends CommonBase {
+       /** The script_pubkey in this output */
+       public script_pubkey: Uint8Array;
+       /** The value, in satoshis, of this output */
+       public value: number;
+
+       /* @internal */
+       public constructor(_dummy: object, ptr: number) {
+               super(ptr, bindings.TxOut_free);
+               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
+               this.value = bindings.TxOut_get_value(ptr);
+       }
+       public constructor_new(value: number, script_pubkey: Uint8Array): TxOut {
+               return new TxOut(null, bindings.TxOut_new(script_pubkey, value));
+       }
+}"""
+        self.obj_defined(["TxOut"], "structs")
+
         self.c_file_pfx = """#include "js-wasm.h"
 #include <stdatomic.h>
 #include <lightning.h>
@@ -309,6 +324,8 @@ import * as bindings from '../bindings.mjs'
 import * as InternalUtils from '../InternalUtils.mjs'
 
 """
+        self.util_fn_pfx = self.hu_struct_file_prefix + "\nexport class UtilMethods extends CommonBase {\n"
+        self.util_fn_sfx = "}"
         self.c_fn_ty_pfx = ""
         self.file_ext = ".mts"
         self.ptr_c_ty = "uint32_t"