implement static method

NSDecimalNumberBehaviors implement({
  1. required NSRoundingMode roundingMode(),
  2. required int scale(),
  3. required NSDecimalNumber? exceptionDuringOperation_error_leftOperand_rightOperand_(
    1. Pointer<ObjCSelector>,
    2. NSCalculationError,
    3. NSDecimalNumber,
    4. NSDecimalNumber?,
    ),
  4. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSDecimalNumberBehaviors protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSDecimalNumberBehaviors implement({
  required NSRoundingMode Function() roundingMode,
  required int Function() scale,
  required NSDecimalNumber? Function(
    ffi.Pointer<objc.ObjCSelector>,
    NSCalculationError,
    NSDecimalNumber,
    NSDecimalNumber?,
  )
  exceptionDuringOperation_error_leftOperand_rightOperand_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSDecimalNumberBehaviors',
  );
  NSDecimalNumberBehaviors.roundingMode.implement(builder, roundingMode);
  NSDecimalNumberBehaviors.scale.implement(builder, scale);
  NSDecimalNumberBehaviors
      .exceptionDuringOperation_error_leftOperand_rightOperand_
      .implement(
        builder,
        exceptionDuringOperation_error_leftOperand_rightOperand_,
      );
  builder.addProtocol($protocol);
  return NSDecimalNumberBehaviors.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}