implement static method

NSOutlineViewDataSource implement({
  1. DartNSInteger outlineView_numberOfChildrenOfItem_(
    1. NSOutlineView,
    2. ObjCObjectBase?
    )?,
  2. ObjCObjectBase outlineView_child_ofItem_(
    1. NSOutlineView,
    2. DartNSInteger,
    3. ObjCObjectBase?
    )?,
  3. bool outlineView_isItemExpandable_(
    1. NSOutlineView,
    2. ObjCObjectBase
    )?,
  4. ObjCObjectBase? outlineView_objectValueForTableColumn_byItem_(
    1. NSOutlineView,
    2. NSTableColumn?,
    3. ObjCObjectBase?
    )?,
  5. void outlineView_setObjectValue_forTableColumn_byItem_(
    1. NSOutlineView,
    2. ObjCObjectBase?,
    3. NSTableColumn?,
    4. ObjCObjectBase?,
    )?,
  6. ObjCObjectBase? outlineView_itemForPersistentObject_(
    1. NSOutlineView,
    2. ObjCObjectBase
    )?,
  7. ObjCObjectBase? outlineView_persistentObjectForItem_(
    1. NSOutlineView,
    2. ObjCObjectBase?
    )?,
  8. void outlineView_sortDescriptorsDidChange_(
    1. NSOutlineView,
    2. NSArray
    )?,
  9. NSPasteboardWriting? outlineView_pasteboardWriterForItem_(
    1. NSOutlineView,
    2. ObjCObjectBase
    )?,
  10. void outlineView_draggingSession_willBeginAtPoint_forItems_(
    1. NSOutlineView,
    2. NSDraggingSession,
    3. NSPoint,
    4. NSArray,
    )?,
  11. void outlineView_draggingSession_endedAtPoint_operation_(
    1. NSOutlineView,
    2. NSDraggingSession,
    3. NSPoint,
    4. NSDragOperation,
    )?,
  12. bool outlineView_writeItems_toPasteboard_(
    1. NSOutlineView,
    2. NSArray,
    3. NSPasteboard
    )?,
  13. void outlineView_updateDraggingItemsForDrag_(
    1. NSOutlineView,
    2. NSDraggingInfo
    )?,
  14. NSDragOperation outlineView_validateDrop_proposedItem_proposedChildIndex_(
    1. NSOutlineView,
    2. NSDraggingInfo,
    3. ObjCObjectBase?,
    4. DartNSInteger,
    )?,
  15. bool outlineView_acceptDrop_item_childIndex_(
    1. NSOutlineView,
    2. NSDraggingInfo,
    3. ObjCObjectBase?,
    4. DartNSInteger,
    )?,
  16. NSArray outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_(
    1. NSOutlineView,
    2. NSURL,
    3. NSArray
    )?,
  17. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSOutlineViewDataSource 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 NSOutlineViewDataSource implement({
  DartNSInteger Function(NSOutlineView, objc.ObjCObjectBase?)?
  outlineView_numberOfChildrenOfItem_,
  objc.ObjCObjectBase Function(
    NSOutlineView,
    DartNSInteger,
    objc.ObjCObjectBase?,
  )?
  outlineView_child_ofItem_,
  bool Function(NSOutlineView, objc.ObjCObjectBase)?
  outlineView_isItemExpandable_,
  objc.ObjCObjectBase? Function(
    NSOutlineView,
    NSTableColumn?,
    objc.ObjCObjectBase?,
  )?
  outlineView_objectValueForTableColumn_byItem_,
  void Function(
    NSOutlineView,
    objc.ObjCObjectBase?,
    NSTableColumn?,
    objc.ObjCObjectBase?,
  )?
  outlineView_setObjectValue_forTableColumn_byItem_,
  objc.ObjCObjectBase? Function(NSOutlineView, objc.ObjCObjectBase)?
  outlineView_itemForPersistentObject_,
  objc.ObjCObjectBase? Function(NSOutlineView, objc.ObjCObjectBase?)?
  outlineView_persistentObjectForItem_,
  void Function(NSOutlineView, objc.NSArray)?
  outlineView_sortDescriptorsDidChange_,
  NSPasteboardWriting? Function(NSOutlineView, objc.ObjCObjectBase)?
  outlineView_pasteboardWriterForItem_,
  void Function(NSOutlineView, NSDraggingSession, NSPoint, objc.NSArray)?
  outlineView_draggingSession_willBeginAtPoint_forItems_,
  void Function(NSOutlineView, NSDraggingSession, NSPoint, NSDragOperation)?
  outlineView_draggingSession_endedAtPoint_operation_,
  bool Function(NSOutlineView, objc.NSArray, NSPasteboard)?
  outlineView_writeItems_toPasteboard_,
  void Function(NSOutlineView, NSDraggingInfo)?
  outlineView_updateDraggingItemsForDrag_,
  NSDragOperation Function(
    NSOutlineView,
    NSDraggingInfo,
    objc.ObjCObjectBase?,
    DartNSInteger,
  )?
  outlineView_validateDrop_proposedItem_proposedChildIndex_,
  bool Function(
    NSOutlineView,
    NSDraggingInfo,
    objc.ObjCObjectBase?,
    DartNSInteger,
  )?
  outlineView_acceptDrop_item_childIndex_,
  objc.NSArray Function(NSOutlineView, objc.NSURL, objc.NSArray)?
  outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSOutlineViewDataSource',
  );
  NSOutlineViewDataSource.outlineView_numberOfChildrenOfItem_.implement(
    builder,
    outlineView_numberOfChildrenOfItem_,
  );
  NSOutlineViewDataSource.outlineView_child_ofItem_.implement(
    builder,
    outlineView_child_ofItem_,
  );
  NSOutlineViewDataSource.outlineView_isItemExpandable_.implement(
    builder,
    outlineView_isItemExpandable_,
  );
  NSOutlineViewDataSource.outlineView_objectValueForTableColumn_byItem_
      .implement(builder, outlineView_objectValueForTableColumn_byItem_);
  NSOutlineViewDataSource.outlineView_setObjectValue_forTableColumn_byItem_
      .implement(builder, outlineView_setObjectValue_forTableColumn_byItem_);
  NSOutlineViewDataSource.outlineView_itemForPersistentObject_.implement(
    builder,
    outlineView_itemForPersistentObject_,
  );
  NSOutlineViewDataSource.outlineView_persistentObjectForItem_.implement(
    builder,
    outlineView_persistentObjectForItem_,
  );
  NSOutlineViewDataSource.outlineView_sortDescriptorsDidChange_.implement(
    builder,
    outlineView_sortDescriptorsDidChange_,
  );
  NSOutlineViewDataSource.outlineView_pasteboardWriterForItem_.implement(
    builder,
    outlineView_pasteboardWriterForItem_,
  );
  NSOutlineViewDataSource
      .outlineView_draggingSession_willBeginAtPoint_forItems_
      .implement(
        builder,
        outlineView_draggingSession_willBeginAtPoint_forItems_,
      );
  NSOutlineViewDataSource.outlineView_draggingSession_endedAtPoint_operation_
      .implement(
        builder,
        outlineView_draggingSession_endedAtPoint_operation_,
      );
  NSOutlineViewDataSource.outlineView_writeItems_toPasteboard_.implement(
    builder,
    outlineView_writeItems_toPasteboard_,
  );
  NSOutlineViewDataSource.outlineView_updateDraggingItemsForDrag_.implement(
    builder,
    outlineView_updateDraggingItemsForDrag_,
  );
  NSOutlineViewDataSource
      .outlineView_validateDrop_proposedItem_proposedChildIndex_
      .implement(
        builder,
        outlineView_validateDrop_proposedItem_proposedChildIndex_,
      );
  NSOutlineViewDataSource.outlineView_acceptDrop_item_childIndex_.implement(
    builder,
    outlineView_acceptDrop_item_childIndex_,
  );
  NSOutlineViewDataSource
      .outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_
      .implement(
        builder,
        outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_,
      );
  builder.addProtocol($protocol);
  return NSOutlineViewDataSource.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}