]> git.bitcoin.ninja Git - ldk-java/blobdiff - csharp_strings.py
[C#] Add support for TxIn, int64_t, and int16_t[]
[ldk-java] / csharp_strings.py
index 5361302be675bc3268437769b18c0f48a584b9c5..b92ece4849accded56500e77264f22a55d7a50c2 100644 (file)
@@ -15,6 +15,7 @@ class Consts:
             uint16_t = ['short'],
             uint32_t = ['int'],
             uint64_t = ['long'],
+            int64_t = ['long'],
         )
         self.java_type_map = dict(
             String = "string"
@@ -79,6 +80,33 @@ public class CommonBase {
 }
 """
 
+        self.txin_defn = """public class TxIn : CommonBase {
+       /** The witness in this input, in serialized form */
+       public readonly byte[] witness;
+       /** The script_sig in this input */
+       public readonly byte[] script_sig;
+       /** The transaction output's sequence number */
+       public readonly int sequence;
+       /** The txid this input is spending */
+       public readonly byte[] previous_txid;
+       /** The output index within the spent transaction of the output this input is spending */
+       public readonly int previous_vout;
+
+       internal TxIn(object _dummy, long ptr) : base(ptr) {
+               this.witness = bindings.TxIn_get_witness(ptr);
+               this.script_sig = bindings.TxIn_get_script_sig(ptr);
+               this.sequence = bindings.TxIn_get_sequence(ptr);
+               this.previous_txid = bindings.TxIn_get_previous_txid(ptr);
+               this.previous_vout = bindings.TxIn_get_previous_vout(ptr);
+       }
+       public TxIn(byte[] witness, byte[] script_sig, int sequence, byte[] previous_txid, int previous_vout)
+       : this(null, bindings.TxIn_new(witness, script_sig, sequence, previous_txid, previous_vout)) {}
+
+       ~TxIn() {
+               if (ptr != 0) { bindings.TxIn_free(ptr); }
+       }
+}"""
+
         self.txout_defn = """public class TxOut : CommonBase {
        /** The script_pubkey in this output */
        public readonly byte[] script_pubkey;
@@ -89,10 +117,7 @@ public class CommonBase {
                this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
                this.value = bindings.TxOut_get_value(ptr);
        }
-    public TxOut(long value, byte[] script_pubkey) : base(bindings.TxOut_new(script_pubkey, value)) {
-               this.script_pubkey = bindings.TxOut_get_script_pubkey(ptr);
-               this.value = bindings.TxOut_get_value(ptr);
-       }
+    public TxOut(long value, byte[] script_pubkey) : this(null, bindings.TxOut_new(script_pubkey, value)) {}
 
        ~TxOut() {
                if (ptr != 0) { bindings.TxOut_free(ptr); }
@@ -415,6 +440,8 @@ namespace org { namespace ldk { namespace structs {
     def set_native_arr_contents(self, arr_name, arr_len, ty_info):
         if ty_info.c_ty == "int8_tArray":
             return ("(*env)->SetByteArrayRegion(env, " + arr_name + ", 0, " + arr_len + ", ", ")")
+        elif ty_info.c_ty == "int16_tArray":
+            return ("(*env)->SetByteArrayRegion(env, " + arr_name + ", 0, " + arr_len + ", ", ")")
         else:
             assert False
     def get_native_arr_contents(self, arr_name, dest_name, arr_len, ty_info, copy):
@@ -703,17 +730,21 @@ namespace org { namespace ldk { namespace structs {
                 java_trait_constr = java_trait_constr + ", " + var.arg_name
             else:
                 java_trait_constr += ", " + var[1] + ".new_impl(" + var[1] + "_impl"
+                suptrait_constr = ""
                 for suparg in var[2]:
                     if isinstance(suparg, ConvInfo):
-                        java_trait_constr += ", " + suparg.arg_name
+                        suptrait_constr += ", " + suparg.arg_name
                     else:
-                        java_trait_constr += ", " + suparg[1]
-                java_trait_constr += ").bindings_instance"
+                        suptrait_constr += ", " + suparg[1] + "_impl"
+                java_trait_constr += suptrait_constr + ").bindings_instance"
                 for suparg in var[2]:
                     if isinstance(suparg, ConvInfo):
                         java_trait_constr += ", " + suparg.arg_name
                     else:
-                        java_trait_constr += ", " + suparg[1]
+                        java_trait_constr += ", " + suparg[1] + ".new_impl("
+                        # Blindly assume that we can just strip the first arg to build the args for the supertrait
+                        java_trait_constr += suptrait_constr.split(", ", 1)[1]
+                        java_trait_constr += ").bindings_instance"
         out_java_trait += "\t}\n" + java_trait_wrapper + "\n"
         out_java_trait += java_trait_constr + ");\n\t\treturn impl_holder.held;\n\t}\n"