JSClass.subclass constructor

JSClass.subclass(
  1. JSContext ctx, {
  2. required JSClassDef classDef,
  3. required List<JSCFunctionListEntry>? funcs,
  4. required JSValue parentProto,
  5. required JSValue constructor,
  6. bool autoDispose = true,
})

Implementation

JSClass.subclass(
  this.ctx, {
  required this.classDef,
  required this.funcs,
  required JSValue parentProto,
  required JSValue constructor,
  bool autoDispose = true,
}) {
  _classID = calloc.call(sizeOf<Uint32>());
  assert(_classID != null);
  classID = newClassID(_classID!);
  final rt = ctx.runtime.ref;
  JS_NewClass(rt, _classID!.value, classDef.ref);
  proto = JSValue.newObjectProto(ctx, parentProto);
  JS_SetConstructor(ctx.ref, constructor.ref.ref, proto!.ref.ref);
  ctx.setClassProto(_classID!.value, proto!);
  if (funcs != null && funcs!.isNotEmpty) {
    proto!.setPropertyFunctionList(funcs!);
  }
  attach(calloc.nativeFree, _classID!.cast(), autoDispose: autoDispose);
}