X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=typescript_strings.py;h=a3c706ecafc98bf22eb893c41eeb8cf53fcd69db;hb=refs%2Fheads%2F2021-03-license;hp=b5fcdc9696ba2397d07275dc4ca6830b6027d9fd;hpb=4e1ce4212f94b6fa397ce295851fffdc17242f59;p=ldk-java diff --git a/typescript_strings.py b/typescript_strings.py index b5fcdc96..a3c706ec 100644 --- a/typescript_strings.py +++ b/typescript_strings.py @@ -82,6 +82,9 @@ public static native long new_empty_slice_vec(); } """ + self.util_fn_pfx = "" + self.util_fn_sfx = "" + self.common_base = """ export default class CommonBase { ptr: number; @@ -218,10 +221,6 @@ _Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKu8slice, datalen), _Static_assert(sizeof(void*) == 4, "Pointers mut be 32 bits"); -//typedef struct int64_tArray { uint32_t *len; /* len + 1 is data */ } int64_tArray; -//typedef struct uint32_tArray { uint32_t *len; /* len + 1 is data */ } uint32_tArray; -//typedef struct ptrArray { uint32_t *len; /* len + 1 is data */ } ptrArray; -//typedef struct int8_tArray { uint32_t *len; /* len + 1 is data */ } int8_tArray; typedef uint32_t int64_tArray; typedef uint32_t int8_tArray; typedef uint32_t uint32_tArray; @@ -243,6 +242,12 @@ jstring str_ref_to_ts(const char* chars, size_t len) { typedef bool jboolean; +uint32_t __attribute__((visibility("default"))) TS_malloc(uint32_t size) { + return (uint32_t)MALLOC(size, "JS-Called malloc"); +} +void __attribute__((visibility("default"))) TS_free(uint32_t ptr) { + FREE((void*)ptr); +} """ self.hu_struct_file_prefix = f""" @@ -337,9 +342,18 @@ const nextMultipleOfFour = (value: number) => { return Math.ceil(value / 4) * 4; } -const encodeArray = (inputArray) => { - const cArrayPointer = wasm.wasm_malloc((inputArray.length + 1) * 4); - const arrayMemoryView = new Uint32Array(memory.buffer, cArrayPointer + 4, inputArray.length); +const encodeUint8Array = (inputArray) => { + const cArrayPointer = wasm.TS_malloc(inputArray.length + 4); + const arrayLengthView = new Uint32Array(memory.buffer, cArrayPointer, 1); + arrayLengthView[0] = inputArray.length; + const arrayMemoryView = new Uint8Array(memory.buffer, cArrayPointer + 4, inputArray.length); + arrayMemoryView.set(inputArray); + return cArrayPointer; +} + +const encodeUint32Array = (inputArray) => { + const cArrayPointer = wasm.TS_malloc((inputArray.length + 1) * 4); + const arrayMemoryView = new Uint32Array(memory.buffer, cArrayPointer, inputArray.length); arrayMemoryView.set(inputArray, 1); arrayMemoryView[0] = inputArray.length; return cArrayPointer; @@ -364,7 +378,7 @@ const decodeUint8Array = (arrayPointer, free = true) => { // will free the underlying memory when it becomes unreachable instead of copying here. const actualArray = actualArrayViewer.slice(0, arraySize); if (free) { - wasm.free(arrayPointer); + wasm.TS_free(arrayPointer); } return actualArray; } @@ -379,7 +393,7 @@ const decodeUint32Array = (arrayPointer, free = true) => { // will free the underlying memory when it becomes unreachable instead of copying here. const actualArray = actualArrayViewer.slice(0, arraySize); if (free) { - wasm.free(arrayPointer); + wasm.TS_free(arrayPointer); } return actualArray; } @@ -387,7 +401,7 @@ const decodeUint32Array = (arrayPointer, free = true) => { const encodeString = (string) => { // make malloc count divisible by 4 const memoryNeed = nextMultipleOfFour(string.length + 1); - const stringPointer = wasm.wasm_malloc(memoryNeed); + const stringPointer = wasm.TS_malloc(memoryNeed); const stringMemoryView = new Uint8Array( memory.buffer, // value stringPointer, // offset @@ -422,7 +436,7 @@ const decodeString = (stringPointer, free = true) => { def init_str(self): return "" - def native_c_unitary_enum_map(self, struct_name, variants): + def native_c_unitary_enum_map(self, struct_name, variants, enum_doc_comment): out_c = "static inline " + struct_name + " " + struct_name + "_from_js(int32_t ord) {\n" out_c = out_c + "\tswitch (ord) {\n" ord_v = 0 @@ -469,7 +483,7 @@ const decodeString = (stringPointer, free = true) => { ret = ret + "; (void) " + param return ret - def native_c_map_trait(self, struct_name, field_var_conversions, field_function_lines): + def native_c_map_trait(self, struct_name, field_var_conversions, field_function_lines, trait_doc_comment): out_typescript_bindings = "\n\n\n// OUT_TYPESCRIPT_BINDINGS :: MAP_TRAIT :: START\n\n" constructor_arguments = "" @@ -678,7 +692,7 @@ const decodeString = (stringPointer, free = true) => { out_c = out_c + arg_info.ret_conv[1].replace('\n', '\n\t') + "\n" if fn_line.ret_ty_info.c_ty.endswith("Array"): - out_c = out_c + "\t" + fn_line.ret_ty_info.c_ty + " arg = js_invoke_function_" + str(len(fn_line.args_ty)) + "(j_calls->" + fn_line.fn_name + "_meth" + out_c = out_c + "\t" + fn_line.ret_ty_info.c_ty + " ret = js_invoke_function_" + str(len(fn_line.args_ty)) + "(j_calls->" + fn_line.fn_name + "_meth" elif fn_line.ret_ty_info.java_ty == "void": out_c = out_c + "\tjs_invoke_function_" + str(len(fn_line.args_ty)) + "(j_calls->" + fn_line.fn_name + "_meth" elif not fn_line.ret_ty_info.passed_as_ptr: @@ -776,7 +790,7 @@ const decodeString = (stringPointer, free = true) => { def trait_struct_inc_refcnt(self, ty_info): return "" - def map_complex_enum(self, struct_name, variant_list, camel_to_snake): + def map_complex_enum(self, struct_name, variant_list, camel_to_snake, enum_doc_comment): java_hu_type = struct_name.replace("LDK", "") out_java_enum = "" @@ -853,7 +867,7 @@ const decodeString = (stringPointer, free = true) => { out_java_enum += (java_hu_subclasses) return (out_java, out_java_enum, out_c) - def map_opaque_struct(self, struct_name): + def map_opaque_struct(self, struct_name, struct_doc_comment): implementations = "" method_header = "" if struct_name.startswith("LDKLocked"): @@ -883,7 +897,7 @@ const decodeString = (stringPointer, free = true) => { """ return out_opaque_struct_human - def map_function(self, argument_types, c_call_string, is_free, method_name, return_type_info, struct_meth, default_constructor_args, takes_self, args_known, has_out_java_struct: bool, type_mapping_generator): + def map_function(self, argument_types, c_call_string, method_name, return_type_info, struct_meth, default_constructor_args, takes_self, args_known, type_mapping_generator, doc_comment): out_java = "" out_c = "" out_java_struct = None @@ -932,33 +946,31 @@ const decodeString = (stringPointer, free = true) => { }} """ - if has_out_java_struct: - out_java_struct = "" - if not args_known: - out_java_struct += ("\t// Skipped " + method_name + "\n") - has_out_java_struct = False + out_java_struct = "" + if not args_known: + out_java_struct += ("\t// Skipped " + method_name + "\n") + else: + meth_n = method_name[len(struct_meth) + 1:] + if not takes_self: + out_java_struct += ( + "\tpublic static " + return_type_info.java_hu_ty + " constructor_" + meth_n + "(") else: - meth_n = method_name[len(struct_meth) + 1:] - if not takes_self: - out_java_struct += ( - "\tpublic static " + return_type_info.java_hu_ty + " constructor_" + meth_n + "(") - else: - out_java_struct += ("\tpublic " + return_type_info.java_hu_ty + " " + meth_n + "(") - for idx, arg in enumerate(argument_types): - if idx != 0: - if not takes_self or idx > 1: - out_java_struct += (", ") - elif takes_self: - continue - if arg.java_ty != "void": - if arg.arg_name in default_constructor_args: - for explode_idx, explode_arg in enumerate(default_constructor_args[arg.arg_name]): - if explode_idx != 0: - out_java_struct += (", ") - out_java_struct += ( - explode_arg.java_hu_ty + " " + arg.arg_name + "_" + explode_arg.arg_name) - else: - out_java_struct += (arg.java_hu_ty + " " + arg.arg_name) + out_java_struct += ("\tpublic " + return_type_info.java_hu_ty + " " + meth_n + "(") + for idx, arg in enumerate(argument_types): + if idx != 0: + if not takes_self or idx > 1: + out_java_struct += (", ") + elif takes_self: + continue + if arg.java_ty != "void": + if arg.arg_name in default_constructor_args: + for explode_idx, explode_arg in enumerate(default_constructor_args[arg.arg_name]): + if explode_idx != 0: + out_java_struct += (", ") + out_java_struct += ( + explode_arg.java_hu_ty + " " + arg.arg_name + "_" + explode_arg.arg_name) + else: + out_java_struct += (arg.java_hu_ty + " " + arg.arg_name) out_c += (") {\n") if out_java_struct is not None: @@ -997,7 +1009,7 @@ const decodeString = (stringPointer, free = true) => { out_c += ("\n\treturn ret_val;") out_c += ("\n}\n\n") - if has_out_java_struct: + if args_known: out_java_struct += ("\t\t") if return_type_info.java_ty != "void": out_java_struct += (return_type_info.java_ty + " ret = ") @@ -1044,9 +1056,9 @@ const decodeString = (stringPointer, free = true) => { 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")