// Fetching the LDK versions from C also checks that the header and binaries match
System.err.println("Loaded LDK-Java Bindings " + version.get_ldk_java_bindings_version() + " with LDK " + get_ldk_version() + " and LDK-C-Bindings " + get_ldk_c_bindings_version());
}
+ public static void run_statics() { /* Useful to force the statics to run */ }
static native void init(java.lang.Class c);
static native void init_class_cache();
static native String get_lib_version_string();
}
}"""
+ self.witness_program_defn = """public class WitnessProgram extends CommonBase {
+ /** The witness program bytes themselves */
+ public final byte[] program;
+ /** The witness version */
+ public final WitnessVersion version;
+
+ WitnessProgram(java.lang.Object _dummy, long ptr) {
+ super(ptr);
+ this.program = bindings.WitnessProgram_get_program(ptr);
+ this.version = new WitnessVersion(bindings.WitnessProgram_get_version(ptr));
+ }
+ static byte check_args(byte[] program, WitnessVersion version) {
+ if (program.length < 2 || program.length > 40) throw new IllegalArgumentException();
+ if (version.getVal() == 0 && program.length != 20 && program.length != 32) throw new IllegalArgumentException();
+ return version.getVal();
+ }
+ public WitnessProgram(byte[] program, WitnessVersion version) {
+ super(bindings.WitnessProgram_new(check_args(program, version), program));
+ this.program = bindings.WitnessProgram_get_program(ptr);
+ this.version = new WitnessVersion(bindings.WitnessProgram_get_version(ptr));
+ }
+
+ @Override @SuppressWarnings(\"deprecation\")
+ protected void finalize() throws Throwable {
+ super.finalize();
+ if (ptr != 0) { bindings.WitnessProgram_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
self.usize_c_ty = "int64_t"
self.usize_native_ty = "long"
self.native_zero_ptr = "0"
- self.result_c_ty = "jclass"
+ self.unitary_enum_c_ty = "jclass"
self.ptr_arr = "jobjectArray"
self.is_arr_some_check = ("", " != NULL")
self.get_native_arr_len_call = ("(*env)->GetArrayLength(env, ", ")")
out_c = out_c + "\t\tcase %d: return %s;\n" % (ord_v, var)
ord_v = ord_v + 1
out_java_enum = out_java_enum + "\t; static native void init();\n"
- out_java_enum = out_java_enum + "\tstatic { init(); }\n"
+ out_java_enum = out_java_enum + "\tstatic { org.ldk.impl.bindings.run_statics(); init(); }\n"
out_java_enum = out_java_enum + "}"
out_java = out_java + "\tstatic { " + struct_name + ".values(); /* Force enum statics to run */ }\n"
out_c += "\t}\n"