call method

ObjCObjectBase? call(
  1. Pointer<Void> arg0,
  2. NSWindow arg1,
  3. ObjCObjectBase? arg2
)

Implementation

objc.ObjCObjectBase? call(
  ffi.Pointer<ffi.Void> arg0,
  NSWindow arg1,
  objc.ObjCObjectBase? arg2,
) =>
    ref.pointer.ref.invoke
            .cast<
              ffi.NativeFunction<
                ffi.Pointer<objc.ObjCObject> Function(
                  ffi.Pointer<objc.ObjCBlockImpl> block,
                  ffi.Pointer<ffi.Void> arg0,
                  ffi.Pointer<objc.ObjCObject> arg1,
                  ffi.Pointer<objc.ObjCObject> arg2,
                )
              >
            >()
            .asFunction<
              ffi.Pointer<objc.ObjCObject> Function(
                ffi.Pointer<objc.ObjCBlockImpl>,
                ffi.Pointer<ffi.Void>,
                ffi.Pointer<objc.ObjCObject>,
                ffi.Pointer<objc.ObjCObject>,
              )
            >()(
              ref.pointer,
              arg0,
              arg1.ref.pointer,
              arg2?.ref.pointer ?? ffi.nullptr,
            )
            .address ==
        0
    ? null
    : objc.ObjCObjectBase(
        ref.pointer.ref.invoke
            .cast<
              ffi.NativeFunction<
                ffi.Pointer<objc.ObjCObject> Function(
                  ffi.Pointer<objc.ObjCBlockImpl> block,
                  ffi.Pointer<ffi.Void> arg0,
                  ffi.Pointer<objc.ObjCObject> arg1,
                  ffi.Pointer<objc.ObjCObject> arg2,
                )
              >
            >()
            .asFunction<
              ffi.Pointer<objc.ObjCObject> Function(
                ffi.Pointer<objc.ObjCBlockImpl>,
                ffi.Pointer<ffi.Void>,
                ffi.Pointer<objc.ObjCObject>,
                ffi.Pointer<objc.ObjCObject>,
              )
            >()(
          ref.pointer,
          arg0,
          arg1.ref.pointer,
          arg2?.ref.pointer ?? ffi.nullptr,
        ),
        retain: true,
        release: true,
      );