X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=java_strings.py;h=bc3c73cf05f2ea841bd68123264e8287c0d967fb;hb=f08de1c11de2cca22d2caadc368d3ef1e000e39a;hp=e1ea1e868e0b60655949ddb4b073a524aa1deed4;hpb=d236cdeb79c96691aff80ccb7d546220ed9b94d8;p=ldk-java diff --git a/java_strings.py b/java_strings.py index e1ea1e86..bc3c73cf 100644 --- a/java_strings.py +++ b/java_strings.py @@ -51,10 +51,17 @@ public class bindings { self.bindings_footer = "}\n" + self.util_fn_pfx = """package org.ldk.structs; +import org.ldk.impl.bindings; +import java.util.Arrays; + +public class UtilMethods { +""" + self.util_fn_sfx = "}" self.common_base = """package org.ldk.structs; import java.util.LinkedList; class CommonBase { - final long ptr; + long ptr; LinkedList ptrs_to = new LinkedList(); protected CommonBase(long ptr) { this.ptr = ptr; } public long _test_only_get_ptr() { return this.ptr; } @@ -103,16 +110,18 @@ typedef struct allocation { const char* struct_name; void* bt[BT_MAX]; int bt_len; + size_t alloc_len; } allocation; static allocation* allocation_ll = NULL; void* __real_malloc(size_t len); void* __real_calloc(size_t nmemb, size_t len); -static void new_allocation(void* res, const char* struct_name) { +static void new_allocation(void* res, const char* struct_name, size_t len) { allocation* new_alloc = __real_malloc(sizeof(allocation)); new_alloc->ptr = res; 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); new_alloc->next = allocation_ll; allocation_ll = new_alloc; @@ -120,7 +129,7 @@ static void new_allocation(void* res, const char* struct_name) { } static void* MALLOC(size_t len, const char* struct_name) { void* res = __real_malloc(len); - new_allocation(res, struct_name); + new_allocation(res, struct_name, len); return res; } void __real_free(void* ptr); @@ -153,12 +162,12 @@ static void FREE(void* ptr) { void* __wrap_malloc(size_t len) { void* res = __real_malloc(len); - new_allocation(res, "malloc call"); + new_allocation(res, "malloc call", len); return res; } void* __wrap_calloc(size_t nmemb, size_t len) { void* res = __real_calloc(nmemb, len); - new_allocation(res, "calloc call"); + new_allocation(res, "calloc call", len); return res; } void __wrap_free(void* ptr) { @@ -171,7 +180,7 @@ void* __real_realloc(void* ptr, size_t newlen); void* __wrap_realloc(void* ptr, size_t len) { if (ptr != NULL) alloc_freed(ptr); void* res = __real_realloc(ptr, len); - new_allocation(res, "realloc call"); + new_allocation(res, "realloc call", len); return res; } void __wrap_reallocarray(void* ptr, size_t new_sz) { @@ -181,13 +190,15 @@ void __wrap_reallocarray(void* ptr, size_t new_sz) { void __attribute__((destructor)) check_leaks() { size_t alloc_count = 0; + size_t alloc_size = 0; for (allocation* a = allocation_ll; a != NULL; a = a->next) { fprintf(stderr, "%s %p remains:\\n", a->struct_name, a->ptr); backtrace_symbols_fd(a->bt, a->bt_len, STDERR_FILENO); fprintf(stderr, "\\n\\n"); alloc_count++; + alloc_size += a->alloc_len; } - fprintf(stderr, "%lu allocations remained.\\n", alloc_count); + fprintf(stderr, "%lu allocations remained for %lu bytes.\\n", alloc_count, alloc_size); DO_ASSERT(allocation_ll == NULL); } """ @@ -484,7 +495,7 @@ import java.util.Arrays; for var in field_vars: if isinstance(var, ConvInfo): if var.from_hu_conv is not None and var.from_hu_conv[1] != "": - out_java_trait = out_java_trait + "\t\t" + var.from_hu_conv[1] + ";\n" + out_java_trait = out_java_trait + "\t\t" + var.from_hu_conv[1].replace("\n", "\n\t\t") + ";\n" else: out_java_trait = out_java_trait + "\t\tthis.ptrs_to.add(" + var[1] + ");\n" out_java_trait = out_java_trait + "\t\tthis.bindings_instance = arg;\n" @@ -969,9 +980,9 @@ import java.util.Arrays; elif info.from_hu_conv is not None and info.from_hu_conv[1] != "": if not takes_self and return_type_info.to_hu_conv_name is not None: out_java_struct += ( - "\t\t" + info.from_hu_conv[1].replace("this", return_type_info.to_hu_conv_name) + ";\n") + "\t\t" + info.from_hu_conv[1].replace("this", return_type_info.to_hu_conv_name).replace("\n", "\n\t\t") + ";\n") else: - out_java_struct += ("\t\t" + info.from_hu_conv[1] + ";\n") + out_java_struct += ("\t\t" + info.from_hu_conv[1].replace("\n", "\n\t\t") + ";\n") if return_type_info.to_hu_conv_name is not None: out_java_struct += ("\t\treturn " + return_type_info.to_hu_conv_name + ";\n")