#include <stdatomic.h>
""")
- if sys.argv[4] == "false":
+ if sys.argv[5] == "false":
out_c.write("#define MALLOC(a, _) malloc(a)\n")
- out_c.write("#define FREE(p) if ((p) > 1024) { free(p); }\n")
+ out_c.write("#define FREE(p) if ((long)(p) > 1024) { free(p); }\n")
out_c.write("#define DO_ASSERT(a) (void)(a)\n")
out_c.write("#define CHECK(a)\n")
else:
public static native long bytes_to_u8_vec(byte[] bytes);
public static native long new_txpointer_copy_data(byte[] txdata);
public static native void txpointer_free(long ptr);
+ public static native byte[] txpointer_get_buffer(long ptr);
public static native long vec_slice_len(long vec);
public static native long new_empty_slice_vec();
(*_env)->GetByteArrayRegion (_env, bytes, 0, vec->datalen, vec->data);
return (long)vec;
}
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_txpointer_1get_1buffer (JNIEnv * env, jclass _b, jlong ptr) {
+ LDKTransaction *txdata = (LDKTransaction*)ptr;
+ LDKu8slice slice;
+ slice.data = txdata->data;
+ slice.datalen = txdata->datalen;
+ return Java_org_ldk_impl_bindings_get_1u8_1slice_1bytes(env, _b, (long)&slice);
+}
JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_new_1txpointer_1copy_1data (JNIEnv * env, jclass _b, jbyteArray bytes) {
LDKTransaction *txdata = (LDKTransaction*)MALLOC(sizeof(LDKTransaction), "LDKTransaction");
txdata->datalen = (*env)->GetArrayLength(env, bytes);
out_java_struct.write("\tTransaction(java.lang.Object _dummy, long ptr) { super(ptr); }\n")
out_java_struct.write("\tpublic Transaction(byte[] data) { super(bindings.new_txpointer_copy_data(data)); }\n")
out_java_struct.write("\t@Override public void finalize() throws Throwable { super.finalize(); bindings.txpointer_free(ptr); }\n")
+ out_java_struct.write("\tpublic byte[] get_contents() { return bindings.txpointer_get_buffer(ptr); }\n")
# TODO: Transaction body
out_java_struct.write("}")
else:
for idx, ty_info in enumerate(tuple_types[alias_match.group(1)][0]):
e = chr(ord('a') + idx)
out_java.write("\tpublic static native " + ty_info.java_ty + " " + alias_match.group(2) + "_get_" + e + "(long ptr);\n")
- # XXX: Write C method!
+ out_c.write("JNIEXPORT " + ty_info.c_ty + " JNICALL Java_org_ldk_impl_bindings_" + alias_match.group(2).replace("_", "_1") + "_1get_1" + e + "(JNIEnv *_env, jclass _b, jlong ptr) {\n")
+ out_c.write("\t" + alias_match.group(1) + " *tuple = (" + alias_match.group(1) + "*)ptr;\n")
+ conv_info = map_type_with_info(ty_info, False, None, False, True)
+ if conv_info.ret_conv is not None:
+ out_c.write("\t" + conv_info.ret_conv[0].replace("\n", "\n\t") + "tuple->" + e + conv_info.ret_conv[1].replace("\n", "\n\t") + "\n")
+ out_c.write("\treturn " + conv_info.ret_conv_name + ";\n")
+ else:
+ out_c.write("\treturn tuple->" + e + ";\n")
+ out_c.write("}\n")
elif alias_match.group(1) in result_templ_structs:
result_types.add(alias_match.group(2))
human_ty = alias_match.group(2).replace("LDKCResult", "Result")