X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=java_strings.py;h=b93677aa87e0a900c63d4b3ecbe1ac7f5ddf8cd4;hb=39ef1da5adb174818bb6afe0ee9924976018801d;hp=1f4ddaff009dfcf940632e9046082d18f5a7c8d6;hpb=e3ea057ce93fbcd87b10a708bcea0c546e11f701;p=ldk-java diff --git a/java_strings.py b/java_strings.py index 1f4ddaff..b93677aa 100644 --- a/java_strings.py +++ b/java_strings.py @@ -24,6 +24,7 @@ class Consts: self.bindings_header = """package org.ldk.impl; import org.ldk.enums.*; +import org.ldk.impl.version; import java.io.File; import java.io.InputStream; import java.io.IOException; @@ -64,7 +65,7 @@ public class bindings { } init(java.lang.Enum.class, VecOrSliceDef.class); init_class_cache(); - if (!get_lib_version_string().equals(get_ldk_java_bindings_version())) + if (!get_lib_version_string().equals(version.get_ldk_java_bindings_version())) throw new IllegalArgumentException("Compiled LDK library and LDK class failes do not match"); // Fetching the LDK versions from C also checks that the header and binaries match get_ldk_c_bindings_version(); @@ -74,9 +75,6 @@ public class bindings { static native void init_class_cache(); static native String get_lib_version_string(); - public static String get_ldk_java_bindings_version() { - return ""; - } public static native String get_ldk_c_bindings_version(); public static native String get_ldk_version(); @@ -93,6 +91,13 @@ public class bindings { public static native long new_empty_slice_vec(); """ + self.bindings_version_file = """package org.ldk.impl; + +public class version { + public static String get_ldk_java_bindings_version() { + return ""; + } +}""" self.bindings_footer = "}\n" @@ -233,10 +238,11 @@ void backtrace_symbols_fd(void ** buffer, int count, int _fd) { self.c_file_pfx = self.c_file_pfx + "#include \n" self.c_file_pfx = self.c_file_pfx + """ #include -static mtx_t allocation_mtx; +#include +static pthread_mutex_t allocation_mtx; void __attribute__((constructor)) init_mtx() { - DO_ASSERT(mtx_init(&allocation_mtx, mtx_plain) == thrd_success); + DO_ASSERT(!pthread_mutex_init(&allocation_mtx, NULL)); } #define BT_MAX 128 @@ -258,10 +264,10 @@ static void new_allocation(void* res, const char* struct_name, size_t len) { new_alloc->struct_name = struct_name; new_alloc->bt_len = backtrace(new_alloc->bt, BT_MAX); new_alloc->alloc_len = len; - DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success); + DO_ASSERT(!pthread_mutex_lock(&allocation_mtx)); new_alloc->next = allocation_ll; allocation_ll = new_alloc; - DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success); + DO_ASSERT(!pthread_mutex_unlock(&allocation_mtx)); } static void* MALLOC(size_t len, const char* struct_name) { void* res = __real_malloc(len); @@ -271,7 +277,7 @@ static void* MALLOC(size_t len, const char* struct_name) { void __real_free(void* ptr); static void alloc_freed(void* ptr) { allocation* p = NULL; - DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success); + DO_ASSERT(!pthread_mutex_lock(&allocation_mtx)); allocation* it = allocation_ll; while (it->ptr != ptr) { p = it; it = it->next; @@ -281,12 +287,12 @@ static void alloc_freed(void* ptr) { int bt_len = backtrace(bt, BT_MAX); backtrace_symbols_fd(bt, bt_len, STDERR_FILENO); DEBUG_PRINT("\\n\\n"); - DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success); + DO_ASSERT(!pthread_mutex_unlock(&allocation_mtx)); return; // addrsan should catch malloc-unknown and print more info than we have } } if (p) { p->next = it->next; } else { allocation_ll = it->next; } - DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success); + DO_ASSERT(!pthread_mutex_unlock(&allocation_mtx)); DO_ASSERT(it->ptr == ptr); __real_free(it); } @@ -460,16 +466,17 @@ static inline LDKStr java_to_owned_str(JNIEnv *env, jstring str) { return res; } -JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1lib_1version_1string(JNIEnv *env, jclass _c) { - return str_ref_to_java(env, "", strlen("")); -} JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1ldk_1c_1bindings_1version(JNIEnv *env, jclass _c) { return str_ref_to_java(env, check_get_ldk_bindings_version(), strlen(check_get_ldk_bindings_version())); } JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1ldk_1version(JNIEnv *env, jclass _c) { return str_ref_to_java(env, check_get_ldk_version(), strlen(check_get_ldk_version())); } +#include "version.c" """ + self.c_version_file = """JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1lib_1version_1string(JNIEnv *env, jclass _c) { + return str_ref_to_java(env, "", strlen("")); +}""" self.hu_struct_file_prefix = """package org.ldk.structs; @@ -849,6 +856,9 @@ import javax.annotation.Nullable; out_c = out_c + "\t" + fn_line.ret_ty_info.c_ty + " ret = (*env)->CallObjectMethod(env, obj, j_calls->" + fn_line.fn_name + "_meth" elif fn_line.ret_ty_info.c_ty == "void": out_c += "\t(*env)->Call" + fn_line.ret_ty_info.java_ty.title() + "Method(env, obj, j_calls->" + fn_line.fn_name + "_meth" + elif fn_line.ret_ty_info.java_ty == "String": + # Manually write out String methods as they're just an Object + out_c += "\t" + fn_line.ret_ty_info.c_ty + " ret = (*env)->CallObjectMethod(env, obj, j_calls->" + fn_line.fn_name + "_meth" elif not fn_line.ret_ty_info.passed_as_ptr: out_c += "\t" + fn_line.ret_ty_info.c_ty + " ret = (*env)->Call" + fn_line.ret_ty_info.java_ty.title() + "Method(env, obj, j_calls->" + fn_line.fn_name + "_meth" else: