diff --git a/interop/src/cpp/napi/convertors-napi.h b/interop/src/cpp/napi/convertors-napi.h index d1551ad4addffb7f2b741f09d1f6066827865af1..5bcd4a3ca8f4af23f78a673d7503d9aa7cca3869 100644 --- a/interop/src/cpp/napi/convertors-napi.h +++ b/interop/src/cpp/napi/convertors-napi.h @@ -686,494 +686,158 @@ public: #define MAKE_INTEROP_NODE_EXPORT(name) MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) -#define KOALA_INTEROP_0(name, Ret) \ +namespace details { +template +using RemoveReference = std::remove_cv_t>; + +template +constexpr inline bool HasNonConstReference = + std::disjunction_v>>...>; + +// A prvalue expression cannot be bind to non-const ref. +template +std::enable_if_t, Ret> + callImplSeq(Ret (*impl)(Args...), CallbackInfo const& info, std::index_sequence) +{ + auto args = std::make_tuple(getArgument>(info, Index)...); // non-const refs + return impl(std::get(args)...); +} + +template +std::enable_if_t, Ret> + callImplSeq(Ret (*impl)(Args...), CallbackInfo const& info, std::index_sequence) +{ + return impl(getArgument>(info, Index)...); // may be const refs +} + +template +struct CallHelper { + using FunctionType = Ret(*)(Args...); + + static napi_value call(FunctionType fn, CallbackInfo const& info) + { + return makeResult(info, callImplSeq(fn, info, std::make_index_sequence{})); + } +}; + +template +struct CallHelper { + using FunctionType = void(*)(Args...); + + static napi_value call(FunctionType fn, CallbackInfo const& info) + { + callImplSeq(fn, info, std::make_index_sequence{}); + return makeVoid(info); + } +}; + +template +napi_value callImpl(Ret (*impl)(Args...), CallbackInfo const& info) +{ + return CallHelper::call(impl, info); +} +} + +#define KOALA_INTEROP_COMMON(name, Ret) \ napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ KOALA_MAYBE_LOG(name) \ CallbackInfo info(env, cbinfo); \ - return makeResult(info, impl_##name()); \ + return details::callImpl(&impl_##name, info); \ } \ MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) +#define KOALA_INTEROP_0(name, Ret) \ + KOALA_INTEROP_COMMON(name, Ret) + #define KOALA_INTEROP_1(name, Ret, P0) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - return makeResult(info, impl_##name(p0)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_2(name, Ret, P0, P1) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - return makeResult(info, impl_##name(p0, p1)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_3(name, Ret, P0, P1, P2) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - return makeResult(info, impl_##name(p0, p1, p2)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_4(name, Ret, P0, P1, P2, P3) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - return makeResult(info, impl_##name(p0, p1, p2, p3)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_5(name, Ret, P0, P1, P2, P3, P4) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_6(name, Ret, P0, P1, P2, P3, P4, P5) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_7(name, Ret, P0, P1, P2, P3, P4, P5, P6) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_8(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_9(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_10(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_11(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_12(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_13(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - P12 p12 = getArgument(info, 12); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_14(name, Ret, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - P12 p12 = getArgument(info, 12); \ - P13 p13 = getArgument(info, 13); \ - return makeResult(info, impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13)); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_COMMON(name, Ret) #define KOALA_INTEROP_V0(name) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - impl_##name(); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_0(name, void) #define KOALA_INTEROP_V1(name, P0) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - impl_##name(p0); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_1(name, void, P0) #define KOALA_INTEROP_V2(name, P0, P1) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - impl_##name(p0, p1); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_2(name, void, P0, P1) #define KOALA_INTEROP_V3(name, P0, P1, P2) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - impl_##name(p0, p1, p2); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_3(name, void, P0, P1, P2) #define KOALA_INTEROP_V4(name, P0, P1, P2, P3) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - impl_##name(p0, p1, p2, p3); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_4(name, void, P0, P1, P2, P3) \ #define KOALA_INTEROP_V5(name, P0, P1, P2, P3, P4) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - impl_##name(p0, p1, p2, p3, p4); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_5(name, void, P0, P1, P2, P3, P4) #define KOALA_INTEROP_V6(name, P0, P1, P2, P3, P4, P5) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - impl_##name(p0, p1, p2, p3, p4, p5); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_6(name, void, P0, P1, P2, P3, P4, P5) #define KOALA_INTEROP_V7(name, P0, P1, P2, P3, P4, P5, P6) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_7(name, void, P0, P1, P2, P3, P4, P5, P6) #define KOALA_INTEROP_V8(name, P0, P1, P2, P3, P4, P5, P6, P7) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_8(name, void, P0, P1, P2, P3, P4, P5, P6, P7) #define KOALA_INTEROP_V9(name, P0, P1, P2, P3, P4, P5, P6, P7, P8) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(impl_##name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_9(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8) #define KOALA_INTEROP_V10(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_10(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9) #define KOALA_INTEROP_V11(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(impl_##name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_11(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) #define KOALA_INTEROP_V12(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(impl_##name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_12(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) #define KOALA_INTEROP_V13(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(impl_##name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - P12 p12 = getArgument(info, 12); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_13(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) #define KOALA_INTEROP_V14(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - P12 p12 = getArgument(info, 12); \ - P13 p13 = getArgument(info, 13); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_14(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) #define KOALA_INTEROP_V15(name, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ - napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ - KOALA_MAYBE_LOG(name) \ - CallbackInfo info(env, cbinfo); \ - P0 p0 = getArgument(info, 0); \ - P1 p1 = getArgument(info, 1); \ - P2 p2 = getArgument(info, 2); \ - P3 p3 = getArgument(info, 3); \ - P4 p4 = getArgument(info, 4); \ - P5 p5 = getArgument(info, 5); \ - P6 p6 = getArgument(info, 6); \ - P7 p7 = getArgument(info, 7); \ - P8 p8 = getArgument(info, 8); \ - P9 p9 = getArgument(info, 9); \ - P10 p10 = getArgument(info, 10); \ - P11 p11 = getArgument(info, 11); \ - P12 p12 = getArgument(info, 12); \ - P13 p13 = getArgument(info, 13); \ - P14 p14 = getArgument(info, 14); \ - impl_##name(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); \ - return makeVoid(info); \ - } \ - MAKE_NODE_EXPORT(KOALA_INTEROP_MODULE, name) + KOALA_INTEROP_15(name, void, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) #define KOALA_INTEROP_CTX_0(name, Ret) \ napi_value Node_##name(napi_env env, napi_callback_info cbinfo) { \ @@ -1437,4 +1101,4 @@ napi_value getKoalaNapiCallbackDispatcher(napi_env env); #endif // KOALA_NAPI -#endif // _CONVERTORS_NAPI_H_ \ No newline at end of file +#endif // _CONVERTORS_NAPI_H_