callAsFunctionCallbackDartToNativeConverter function

NativeCallable<JSObjectCallAsFunctionCallback_> callAsFunctionCallbackDartToNativeConverter(
  1. JSObjectCallAsFunctionCallback? callAsFunction
)

Implementation

NativeCallable<JSObjectCallAsFunctionCallback_>
callAsFunctionCallbackDartToNativeConverter(
  JSObjectCallAsFunctionCallback? callAsFunction,
) {
  return NativeCallable.isolateLocal((
    JSContextRef ctx1,
    JSObjectRef function,
    JSObjectRef thiz,
    int argc,
    Pointer<JSValueRef> argv,
    Pointer<JSValueRef> exception,
  ) {
    final ctxw = JSContext(ctx1);
    final jsfunc = JSObject(ctxw, function);
    final jsthiz = JSObject(ctxw, thiz);
    final argvlist = <JSValue>[];

    for (int i = 0; i < argc; i++) {
      argvlist.add(JSValue(ctxw, argv[i]));
    }
    final jsexc = JSException(ctxw, exception);
    return callAsFunction
            ?.call(ctxw, jsfunc, jsthiz, argc, argvlist, jsexc)
            .ref ??
        nullptr;
  });
}