@@ -10,40 +10,37 @@ extern size_t strlen(const char *s);
1010// to use proper types.
1111
1212typedef uint32_t JSValue ;
13- 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" )));
14- 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" )));
15-
16- static inline JSValue js_invoke_function_u_ (JSValue obj , JSValue fn ){
17- return js_invoke_function_u (obj ,fn ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
18- }
19- static inline JSValue js_invoke_function_u_u (JSValue obj , JSValue fn , JSValue a ){
20- return js_invoke_function_u (obj ,fn ,a ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
21- }
22- static inline JSValue js_invoke_function_u_uu (JSValue obj , JSValue fn , JSValue a , JSValue b ){
23- return js_invoke_function_u (obj ,fn ,a ,b ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
24- }
25- static inline JSValue js_invoke_function_u_uuu (JSValue obj , JSValue fn , JSValue a , JSValue b , JSValue c ){
26- return js_invoke_function_u (obj ,fn ,a ,b ,c ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
27- }
28- static inline JSValue js_invoke_function_u_uuuu (JSValue obj , JSValue fn , JSValue a , JSValue b , JSValue c , JSValue d ){
29- return js_invoke_function_u (obj ,fn ,a ,b ,c ,d ,0 ,0 ,0 ,0 ,0 ,0 );
30- }
31- static inline JSValue js_invoke_function_u_uuuuu (JSValue obj , JSValue fn , JSValue a , JSValue b , JSValue c , JSValue d , JSValue e ){
32- return js_invoke_function_u (obj ,fn ,a ,b ,c ,d ,e ,0 ,0 ,0 ,0 ,0 );
33- }
34-
35- static inline uint64_t js_invoke_function_b_ (JSValue obj , JSValue fn ){
36- return js_invoke_function_u (obj ,fn ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
37- }
38-
39- static inline uint64_t js_invoke_function_b_uuuu (JSValue obj , JSValue fn , JSValue a , JSValue b , JSValue c , JSValue d ){
40- return js_invoke_function_u (obj ,fn ,a ,b ,c ,d ,0 ,0 ,0 ,0 ,0 ,0 );
41- }
42- static inline JSValue js_invoke_function_u_b (JSValue obj , JSValue fn , uint64_t a ){
43- return js_invoke_function_b (obj ,fn ,a ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
44- }
45- static inline JSValue js_invoke_function_u_bb (JSValue obj , JSValue fn , uint64_t a , uint64_t b ){
46- return js_invoke_function_b (obj ,fn ,a ,b ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 );
47- }
13+
14+ #define N_TYPE_u uint32_t
15+ #define N_TYPE_b uint64_t
16+
17+ #define TOK (a ) a
18+ #define R_CAT2 (a , b ) a ## b
19+ #define CAT2 (a , b ) R_CAT2(a, b)
20+ #define R_CAT3 (a , b , c ) a ## b ## c
21+ #define CAT3 (a , b , c ) R_CAT3(a, b, c)
22+ #define R_CAT4 (a , b , c , d ) a ## b ## c ## d
23+ #define CAT4 (a , b , c , d ) R_CAT4(a, b, c, d)
24+ #define R_CAT5 (a , b , c , d , e ) a ## b ## c ## d ## e
25+ #define CAT5 (a , b , c , d , e ) R_CAT5(a, b, c, d, e)
26+ #define R_CAT6 (a , b , c , d , e , f ) a ## b ## c ## d ## e ## f
27+ #define CAT6 (a , b , c , d , e , f ) R_CAT6(a, b, c, d, e, f)
28+
29+ #define _GET_CONCAT (_1 , _2 , _3 , _4 , _5 , _6 , CONC , ...) CONC
30+ #define CAT (...) _GET_CONCAT(__VA_ARGS__, CAT6, CAT5, CAT4, CAT3, CAT2, TOK)(__VA_ARGS__)
31+
32+ #define DO_STRING (a ) #a
33+ #define STRINGIZE (a ) DO_STRING(a)
34+
35+ #define DECL_IMPORT (A1 , A2 , A3 , A4 , A5 , A6 ) \
36+ extern uint64_t CAT(js_invoke_function_, CAT(A1, A2, A3, A4, A5, A6)) \
37+ (JSValue obj, JSValue fn, N_TYPE_##A1, N_TYPE_##A2, N_TYPE_##A3, N_TYPE_##A4, N_TYPE_##A5, N_TYPE_##A6) \
38+ __attribute__((import_name(STRINGIZE(CAT(js_invoke_function_, CAT(A1, A2, A3, A4, A5, A6))))));
39+
40+ DECL_IMPORT (u , u , u , u , u , u )
41+ DECL_IMPORT (b , u , u , u , u , u )
42+ DECL_IMPORT (b , b , b , b , b , b )
43+ DECL_IMPORT (u , b , u , u , u , u )
44+ DECL_IMPORT (u , u , b , u , u , u )
4845
4946#endif
0 commit comments