implementAsBlocking static method

NSFilePresenter implementAsBlocking({
  1. required NSURL? presentedItemURL(),
  2. required NSOperationQueue presentedItemOperationQueue(),
  3. NSURL? primaryPresentedItemURL()?,
  4. void relinquishPresentedItemToReader_(
    1. ObjCBlock<Void Function(ObjCBlock<Void Function()>?)>
    )?,
  5. void relinquishPresentedItemToWriter_(
    1. ObjCBlock<Void Function(ObjCBlock<Void Function()>?)>
    )?,
  6. void savePresentedItemChangesWithCompletionHandler_(
    1. ObjCBlock<Void Function(NSError?)>
    )?,
  7. void accommodatePresentedItemDeletionWithCompletionHandler_(
    1. ObjCBlock<Void Function(NSError?)>
    )?,
  8. void accommodatePresentedItemEvictionWithCompletionHandler_(
    1. ObjCBlock<Void Function(NSError?)>
    )?,
  9. void presentedItemDidMoveToURL_(
    1. NSURL
    )?,
  10. void presentedItemDidChange()?,
  11. void presentedItemDidChangeUbiquityAttributes_(
    1. NSSet
    )?,
  12. NSSet observedPresentedItemUbiquityAttributes()?,
  13. void presentedItemDidGainVersion_(
    1. NSFileVersion
    )?,
  14. void presentedItemDidLoseVersion_(
    1. NSFileVersion
    )?,
  15. void presentedItemDidResolveConflictVersion_(
    1. NSFileVersion
    )?,
  16. void accommodatePresentedSubitemDeletionAtURL_completionHandler_(
    1. NSURL,
    2. ObjCBlock<Void Function(NSError?)>
    )?,
  17. void presentedSubitemDidAppearAtURL_(
    1. NSURL
    )?,
  18. void presentedSubitemAtURL_didMoveToURL_(
    1. NSURL,
    2. NSURL
    )?,
  19. void presentedSubitemDidChangeAtURL_(
    1. NSURL
    )?,
  20. void presentedSubitemAtURL_didGainVersion_(
    1. NSURL,
    2. NSFileVersion
    )?,
  21. void presentedSubitemAtURL_didLoseVersion_(
    1. NSURL,
    2. NSFileVersion
    )?,
  22. void presentedSubitemAtURL_didResolveConflictVersion_(
    1. NSURL,
    2. NSFileVersion
    )?,
  23. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSFilePresenter protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly. All methods that can be implemented as blocking listeners will be.

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

Implementation

static NSFilePresenter implementAsBlocking({
  required objc.NSURL? Function() presentedItemURL,
  required NSOperationQueue Function() presentedItemOperationQueue,
  objc.NSURL? Function()? primaryPresentedItemURL,
  void Function(
    objc.ObjCBlock<ffi.Void Function(objc.ObjCBlock<ffi.Void Function()>?)>,
  )?
  relinquishPresentedItemToReader_,
  void Function(
    objc.ObjCBlock<ffi.Void Function(objc.ObjCBlock<ffi.Void Function()>?)>,
  )?
  relinquishPresentedItemToWriter_,
  void Function(objc.ObjCBlock<ffi.Void Function(objc.NSError?)>)?
  savePresentedItemChangesWithCompletionHandler_,
  void Function(objc.ObjCBlock<ffi.Void Function(objc.NSError?)>)?
  accommodatePresentedItemDeletionWithCompletionHandler_,
  void Function(objc.ObjCBlock<ffi.Void Function(objc.NSError?)>)?
  accommodatePresentedItemEvictionWithCompletionHandler_,
  void Function(objc.NSURL)? presentedItemDidMoveToURL_,
  void Function()? presentedItemDidChange,
  void Function(objc.NSSet)? presentedItemDidChangeUbiquityAttributes_,
  objc.NSSet Function()? observedPresentedItemUbiquityAttributes,
  void Function(NSFileVersion)? presentedItemDidGainVersion_,
  void Function(NSFileVersion)? presentedItemDidLoseVersion_,
  void Function(NSFileVersion)? presentedItemDidResolveConflictVersion_,
  void Function(objc.NSURL, objc.ObjCBlock<ffi.Void Function(objc.NSError?)>)?
  accommodatePresentedSubitemDeletionAtURL_completionHandler_,
  void Function(objc.NSURL)? presentedSubitemDidAppearAtURL_,
  void Function(objc.NSURL, objc.NSURL)? presentedSubitemAtURL_didMoveToURL_,
  void Function(objc.NSURL)? presentedSubitemDidChangeAtURL_,
  void Function(objc.NSURL, NSFileVersion)?
  presentedSubitemAtURL_didGainVersion_,
  void Function(objc.NSURL, NSFileVersion)?
  presentedSubitemAtURL_didLoseVersion_,
  void Function(objc.NSURL, NSFileVersion)?
  presentedSubitemAtURL_didResolveConflictVersion_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSFilePresenter');
  NSFilePresenter.presentedItemURL.implement(builder, presentedItemURL);
  NSFilePresenter.presentedItemOperationQueue.implement(
    builder,
    presentedItemOperationQueue,
  );
  NSFilePresenter.primaryPresentedItemURL.implement(
    builder,
    primaryPresentedItemURL,
  );
  NSFilePresenter.relinquishPresentedItemToReader_.implementAsBlocking(
    builder,
    relinquishPresentedItemToReader_,
  );
  NSFilePresenter.relinquishPresentedItemToWriter_.implementAsBlocking(
    builder,
    relinquishPresentedItemToWriter_,
  );
  NSFilePresenter.savePresentedItemChangesWithCompletionHandler_
      .implementAsBlocking(
        builder,
        savePresentedItemChangesWithCompletionHandler_,
      );
  NSFilePresenter.accommodatePresentedItemDeletionWithCompletionHandler_
      .implementAsBlocking(
        builder,
        accommodatePresentedItemDeletionWithCompletionHandler_,
      );
  NSFilePresenter.accommodatePresentedItemEvictionWithCompletionHandler_
      .implementAsBlocking(
        builder,
        accommodatePresentedItemEvictionWithCompletionHandler_,
      );
  NSFilePresenter.presentedItemDidMoveToURL_.implementAsBlocking(
    builder,
    presentedItemDidMoveToURL_,
  );
  NSFilePresenter.presentedItemDidChange.implementAsBlocking(
    builder,
    presentedItemDidChange,
  );
  NSFilePresenter.presentedItemDidChangeUbiquityAttributes_
      .implementAsBlocking(
        builder,
        presentedItemDidChangeUbiquityAttributes_,
      );
  NSFilePresenter.observedPresentedItemUbiquityAttributes.implement(
    builder,
    observedPresentedItemUbiquityAttributes,
  );
  NSFilePresenter.presentedItemDidGainVersion_.implementAsBlocking(
    builder,
    presentedItemDidGainVersion_,
  );
  NSFilePresenter.presentedItemDidLoseVersion_.implementAsBlocking(
    builder,
    presentedItemDidLoseVersion_,
  );
  NSFilePresenter.presentedItemDidResolveConflictVersion_.implementAsBlocking(
    builder,
    presentedItemDidResolveConflictVersion_,
  );
  NSFilePresenter.accommodatePresentedSubitemDeletionAtURL_completionHandler_
      .implementAsBlocking(
        builder,
        accommodatePresentedSubitemDeletionAtURL_completionHandler_,
      );
  NSFilePresenter.presentedSubitemDidAppearAtURL_.implementAsBlocking(
    builder,
    presentedSubitemDidAppearAtURL_,
  );
  NSFilePresenter.presentedSubitemAtURL_didMoveToURL_.implementAsBlocking(
    builder,
    presentedSubitemAtURL_didMoveToURL_,
  );
  NSFilePresenter.presentedSubitemDidChangeAtURL_.implementAsBlocking(
    builder,
    presentedSubitemDidChangeAtURL_,
  );
  NSFilePresenter.presentedSubitemAtURL_didGainVersion_.implementAsBlocking(
    builder,
    presentedSubitemAtURL_didGainVersion_,
  );
  NSFilePresenter.presentedSubitemAtURL_didLoseVersion_.implementAsBlocking(
    builder,
    presentedSubitemAtURL_didLoseVersion_,
  );
  NSFilePresenter.presentedSubitemAtURL_didResolveConflictVersion_
      .implementAsBlocking(
        builder,
        presentedSubitemAtURL_didResolveConflictVersion_,
      );
  builder.addProtocol($protocol);
  return NSFilePresenter.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}