JSValue.newArrayBuffer constructor

JSValue.newArrayBuffer(
  1. JSContext _ctx,
  2. Uint8List buf, {
  3. JSFreeArrayBufferDataFunc? freeFunc,
  4. Uint8List? user_data,
  5. int isShared = 0,
  6. bool autoDispose = true,
})

Implementation

JSValue.newArrayBuffer(
  this._ctx,
  Uint8List buf, {
  JSFreeArrayBufferDataFunc? freeFunc,
  Uint8List? user_data,
  int isShared = 0,
  bool autoDispose = true,
}) {
  _freeArrayBufferDataFuncNC = NativeCallable.isolateLocal((
    Pointer<JSRuntime_> rt,
    Pointer<Void> opaque,
    Pointer<Void> ptr,
  ) {
    return freeFunc?.call(JSRuntime(rt), user_data ?? Uint8List(0), buf);
  });
  _ref = calloc.call<JSValue_>(sizeOf<JSValue_>())
    ..ref = JS_NewArrayBuffer(
      _ctx.ref,
      buf.toCAny() as Pointer<Uint8>,
      buf.length,
      _freeArrayBufferDataFuncNC!.nativeFunction,
      user_data?.toCAny() ?? nullptr,
      isShared,
    );
  attach(Q_JS_FreeValueAddress.cast(), _ref.cast(), autoDispose: autoDispose);
}