X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=inline;f=ts%2Fjs-wasm.h;h=94466cf4562cb5ae9cd7cdeacec178991cea238c;hb=5d982a968d2a33e2f121ec29fff9aaf5fd63ca8a;hp=886c4e852db18b5446fe53993228197c08b40a30;hpb=271f5c2d87e62896da5d27b5b9b81d898df90038;p=ldk-java diff --git a/ts/js-wasm.h b/ts/js-wasm.h index 886c4e85..94466cf4 100644 --- a/ts/js-wasm.h +++ b/ts/js-wasm.h @@ -2,46 +2,48 @@ #include #include -static inline size_t strlen(const char *str) { - const char *s; - for (s = str; *s; ++s) ; - return (s - str); -} +extern size_t strlen(const char *s); + +// We only support two call types - u32 and u64. u32 is mapped to a JavaScript +// "number" whereas u64 is mapped to a JavaScript "bigint". Ultimately it all +// calls through to the same function, but at the FFI boundary itself we have +// to use proper types. typedef uint32_t JSValue; -extern JSValue js_invoke_function(JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue); +extern uint64_t js_invoke_function_u(JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue,JSValue) __attribute__((import_name("js_invoke_function_u"))); +extern uint64_t js_invoke_function_b(JSValue,JSValue,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t) __attribute__((import_name("js_invoke_function_b"))); -static inline JSValue js_invoke_function_0(JSValue obj, JSValue fn){ - return js_invoke_function(obj,fn,0,0,0,0,0,0,0,0,0,0); -} -static inline JSValue js_invoke_function_1(JSValue obj, JSValue fn, JSValue a){ - return js_invoke_function(obj,fn,a,0,0,0,0,0,0,0,0,0); +static inline JSValue js_invoke_function_u_(JSValue obj, JSValue fn){ + return js_invoke_function_u(obj,fn,0,0,0,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_2(JSValue obj, JSValue fn, JSValue a, JSValue b){ - return js_invoke_function(obj,fn,a,b,0,0,0,0,0,0,0,0); +static inline JSValue js_invoke_function_u_u(JSValue obj, JSValue fn, JSValue a){ + return js_invoke_function_u(obj,fn,a,0,0,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_3(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c){ - return js_invoke_function(obj,fn,a,b,c,0,0,0,0,0,0,0); +static inline JSValue js_invoke_function_u_uu(JSValue obj, JSValue fn, JSValue a, JSValue b){ + return js_invoke_function_u(obj,fn,a,b,0,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_4(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d){ - return js_invoke_function(obj,fn,a,b,c,d,0,0,0,0,0,0); +static inline JSValue js_invoke_function_u_uuu(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c){ + return js_invoke_function_u(obj,fn,a,b,c,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_5(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e){ - return js_invoke_function(obj,fn,a,b,c,d,e,0,0,0,0,0); +static inline JSValue js_invoke_function_u_uuuu(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d){ + return js_invoke_function_u(obj,fn,a,b,c,d,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_6(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e, JSValue f){ - return js_invoke_function(obj,fn,a,b,c,d,e,f,0,0,0,0); +static inline JSValue js_invoke_function_u_uuuuu(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e){ + return js_invoke_function_u(obj,fn,a,b,c,d,e,0,0,0,0,0); } -static inline JSValue js_invoke_function_7(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e, JSValue f, JSValue g){ - return js_invoke_function(obj,fn,a,b,c,d,e,f,g,0,0,0); + +static inline uint64_t js_invoke_function_b_(JSValue obj, JSValue fn){ + return js_invoke_function_u(obj,fn,0,0,0,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_8(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e, JSValue f, JSValue g, JSValue h){ - return js_invoke_function(obj,fn,a,b,c,d,e,f,g,h,0,0); + +static inline uint64_t js_invoke_function_b_uuuu(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d){ + return js_invoke_function_u(obj,fn,a,b,c,d,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_9(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e, JSValue f, JSValue g, JSValue h, JSValue i){ - return js_invoke_function(obj,fn,a,b,c,d,e,f,g,h,i,0); +static inline JSValue js_invoke_function_u_b(JSValue obj, JSValue fn, uint64_t a){ + return js_invoke_function_b(obj,fn,a,0,0,0,0,0,0,0,0,0); } -static inline JSValue js_invoke_function_10(JSValue obj, JSValue fn, JSValue a, JSValue b, JSValue c, JSValue d, JSValue e, JSValue f, JSValue g, JSValue h, JSValue i, JSValue j){ - return js_invoke_function(obj,fn,a,b,c,d,e,f,g,h,i,j); +static inline JSValue js_invoke_function_u_bb(JSValue obj, JSValue fn, uint64_t a, uint64_t b){ + return js_invoke_function_b(obj,fn,a,b,0,0,0,0,0,0,0,0); } + #endif