JSClassDefinition.create constructor

JSClassDefinition.create({
  1. int version = 0,
  2. JSClassAttributes attributes = JSClassAttributes.kJSClassAttributeNone,
  3. required String className,
  4. JSClass? parentClass,
  5. List<JSStaticVale>? staticValues,
  6. List<JSStaticFunction>? staticFunctions,
  7. JSObjectInitializeCallback? initialize,
  8. JSObjectFinalizeCallback? finalize,
  9. JSObjectHasPropertyCallback? hasProperty,
  10. JSObjectGetPropertyCallback? getProperty,
  11. JSObjectSetPropertyCallback? setProperty,
  12. JSObjectDeletePropertyCallback? deleteProperty,
  13. JSObjectGetPropertyNamesCallback? getPropertyNames,
  14. JSObjectCallAsConstructorCallback? callAsConstructor,
  15. JSObjectCallAsFunctionCallback? callAsFunction,
  16. JSObjectHasInstanceCallback? hasInstance,
  17. JSObjectConvertToTypeCallback? convertToType,
})

Implementation

JSClassDefinition.create({
  // The version number of this structure. The current version is 0.
  int version = 0,
  // A logically ORed set of [JSClassAttributes] to give to the class.
  JSClassAttributes attributes = JSClassAttributes.kJSClassAttributeNone,
  // A null-terminated UTF8 string containing the class's name.
  required String className,
  // A JSClass to set as the class's parent class. Pass NULL use the default object class.
  JSClass? parentClass,
  // A JSStaticValue array containing the class's statically declared value properties. Pass NULL to specify no statically declared value properties. The array must be terminated by a JSStaticValue whose name field is NULL.
  List<JSStaticVale>? staticValues,
  // A JSStaticFunction array containing the class's statically declared function properties. Pass NULL to specify no statically declared function properties. The array must be terminated by a JSStaticFunction whose name field is NULL.
  List<JSStaticFunction>? staticFunctions,
  JSObjectInitializeCallback? initialize,
  JSObjectFinalizeCallback? finalize,
  JSObjectHasPropertyCallback? hasProperty,
  JSObjectGetPropertyCallback? getProperty,
  JSObjectSetPropertyCallback? setProperty,
  JSObjectDeletePropertyCallback? deleteProperty,
  JSObjectGetPropertyNamesCallback? getPropertyNames,
  JSObjectCallAsConstructorCallback? callAsConstructor,
  JSObjectCallAsFunctionCallback? callAsFunction,
  JSObjectHasInstanceCallback? hasInstance,
  JSObjectConvertToTypeCallback? convertToType,
}) {
  _staticValues = staticValues;
  _staticFunctions = staticFunctions;
  _initializeNC = initializeCallbackDartToNativeConverter(initialize);
  _finalizeNC = finalizeCallbackDartToNativeConverter(finalize);
  _hasPropertyNC = hasPropertyCallbackDartToNativeConverter(hasProperty);
  _getPropertyNC = getPropertyCallbackDartToNativeConverter(getProperty);
  _setPropertyNC = setPropertyCallbackDartToNativeConverter(setProperty);
  _deletePropertyNC = deletePropertyCallbackDartToNativeConverter(
    deleteProperty,
  );
  _getPropertyNamesNC = getPropertyNamesCallbackDartToNativeConverter(
    getPropertyNames,
  );
  _callAsFunctionNC = callAsFunctionCallbackDartToNativeConverter(
    callAsFunction,
  );
  _callAsConstructorNC = callAsConstructorCallbackDartToNativeConverter(
    callAsConstructor,
  );
  _hasInstanceNC = hasInstanceCallbackDartToNativeConverter(hasInstance);
  _convertToTypeNC = convertToTypeCallbackDartToNativeConverter(
    convertToType,
  );
  _ref = JSClassDefinitionPointer.alloc(
    className: className.toNativeUtf8(),
    version: version,
    attributes: JSClassAttributesRef.kJSClassAttributeNone,
    parentClass: parentClass?.ref ?? nullptr,
    staticValues: staticValues?.ref ?? nullptr,
    staticFunctions: staticFunctions?.ref ?? nullptr,
    initialize: _initializeNC?.nativeFunction ?? nullptr,
    finalize: _finalizeNC?.nativeFunction ?? nullptr,
    hasProperty: _hasPropertyNC?.nativeFunction ?? nullptr,
    getProperty: _getPropertyNC?.nativeFunction ?? nullptr,
    setProperty: _setPropertyNC?.nativeFunction ?? nullptr,
    deleteProperty: _deletePropertyNC?.nativeFunction ?? nullptr,
    getPropertyNames: _getPropertyNamesNC?.nativeFunction ?? nullptr,
    callAsFunction: _callAsFunctionNC?.nativeFunction ?? nullptr,
    callAsConstructor: _callAsConstructorNC?.nativeFunction ?? nullptr,
    hasInstance: _hasInstanceNC?.nativeFunction ?? nullptr,
    convertToType: _convertToTypeNC?.nativeFunction ?? nullptr,
  );
  attach(calloc.nativeFree, _ref.cast());
}