xamarin-macios/runtime
Rolf Bjarne Kvinge bd32b74347
Add support for delegates as return values in protocol members. Fixes #4102. (#4758)
* Add support for delegates as return values in protocol members. Fixes #4102.

This required a few changes:

* The generator now emits the DelegateProxy attribute for property getters in
  protocol interfaces.
* The generator now emits the DelegateProxy attribute in ProtocolMember
  attributes (and the ProtocolMember attribute has been extended with
  additional properties for this purpose).
* The generator now emits the BlockProxy attribute for the parameter in
  property setters.
* The generator now emits the BlockProxy attribute in ProtocolMember
  attributes for property setters.
* The static registrar now emits the metadata token for the
  DelegateProxy.DelegateType property into the generated code so that the
  DelegateProxy attribute itself isn't needed at runtime. This is required
  when the dynamic registrar has been optimized away.

Fixes https://github.com/xamarin/xamarin-macios/issues/4102.

* [tests] Update MX4105 test to expect new warnings.
2018-09-06 16:20:23 +02:00
..
xamarin Add support for delegates as return values in protocol members. Fixes #4102. (#4758) 2018-09-06 16:20:23 +02:00
.gitignore [runtime] Generate a header with the function declarations to call into managed code. (#3224) 2018-01-15 15:08:59 +01:00
COOP.md Initial review pass for COOP for watchOS. 2016-05-26 17:47:10 +02:00
Delegates.cs.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
EXCEPTIONS.md [runtime] Improve documentation about exceptions a little bit. 2016-06-08 20:11:07 +02:00
Makefile Store the minimum mono version for Xamarin.Mac in one place only (Make.config) and bump it to 5.14. Fixes #4120. (#4695) 2018-08-29 14:28:56 +02:00
README.md Initial review pass for COOP for watchOS. 2016-05-26 17:47:10 +02:00
Xamarin.framework-ios.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
Xamarin.framework-tvos.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
Xamarin.framework-watchos.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
bindings-generator.cs [ModelIO] Adds Xcode 9 Beta 1 to Stable API bindings (#2832) 2017-10-05 20:32:25 +02:00
bindings-generator.csproj Merge xcode9 into d15-4[-xi] (#2710) 2017-09-15 17:53:16 -04:00
bindings.h Merge xcode9 into d15-4[-xi] (#2710) 2017-09-15 17:53:16 -04:00
bindings.m Merge xcode9 into d15-4[-xi] (#2710) 2017-09-15 17:53:16 -04:00
delegates.h.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
delegates.inc.t4 Build our runtime. 2016-04-24 14:47:24 -04:00
delegates.t4 Add support for delegates as return values in protocol members. Fixes #4102. (#4758) 2018-09-06 16:20:23 +02:00
exports.t4 [runtime] Use public mono API to set the pending exception. Fixes #4271. (#4272) 2018-06-15 23:45:02 +02:00
extension-main.m [mtouch/runtime] Implement support for tvOS extensions. 2016-04-25 18:15:02 -04:00
frameworks.h [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
launcher.h Build our runtime. 2016-04-24 14:47:24 -04:00
launcher.m Store the minimum mono version for Xamarin.Mac in one place only (Make.config) and bump it to 5.14. Fixes #4120. (#4695) 2018-08-29 14:28:56 +02:00
libmonotouch.csproj Fix solutions & projects as VSfM wants them. (#2821) 2017-10-02 11:57:50 +02:00
libxammac.csproj [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
main-internal.h [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
mono-runtime.h.t4 [runtime] add support for mono runtime interpreter (#3058) 2018-05-04 23:59:31 +02:00
mono-runtime.m.t4 [runtime] Use public mono API to set the pending exception. Fixes #4271. (#4272) 2018-06-15 23:45:02 +02:00
monotouch-debug.h [runtime] Only enable debugging on watchOS devices if a native debugger is also attached. 2016-09-05 10:05:00 +02:00
monotouch-debug.m [runtime] Store the launch mode in a static variable. 2017-05-09 08:12:39 +02:00
monotouch-main.m [mtouch/mmp] Add support for inlining calls to Runtime.DynamicRegistrarSupported and removal of the dynamic registrar. 2018-02-15 10:18:27 +01:00
monotouch-support.h [runtime] Add dummy _stret symbols for iOS/ARM64 (#66) 2016-05-18 16:51:45 -04:00
nsstring-localization.m Build our runtime. 2016-04-24 14:47:24 -04:00
product.h Build our runtime. 2016-04-24 14:47:24 -04:00
runtime-generated.h.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
runtime-internal.h [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
runtime.m Add support for delegates as return values in protocol members. Fixes #4102. (#4758) 2018-09-06 16:20:23 +02:00
shared.h Share the same block descriptors between copies of a block. Fixes #43592. (#683) 2016-08-26 19:22:38 +02:00
shared.m [runtime] Work around static analyzer warning about incorrect refcount decrement. (#1718) 2017-02-20 19:30:23 +01:00
slinked-list.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-i386-asm.s [runtime] Make the existing trampolines exception-aware. 2016-05-17 11:20:26 +02:00
trampolines-i386-objc_msgSend-copyframe.inc [runtime] Don't store xmm registers where we store other registers. 2016-05-17 11:24:02 +02:00
trampolines-i386-objc_msgSend-post.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend-pre.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-i386.m [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
trampolines-internal.h [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
trampolines-invoke.m [registrar] Improve error message when failing to create a managed wrapper for a native handle. (#4360) 2018-06-29 14:38:28 +02:00
trampolines-varargs.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-varargs.m [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
trampolines-x86_64-asm.s [runtime] Make the existing trampolines exception-aware. 2016-05-17 11:20:26 +02:00
trampolines-x86_64-objc_msgSend-copyframe.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-post.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-pre.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-x86_64.m Merge remote-tracking branch 'origin/master' into bindas-registrar-support 2017-09-22 10:50:07 +02:00
trampolines.m Add support for delegates as return values in protocol members. Fixes #4102. (#4758) 2018-09-06 16:20:23 +02:00
xamarin-support.m [runtime] Fix bug 52308 Console.WriteLine text is not showing in Device Log. (#1821) 2017-03-03 14:19:23 -06:00

README.md

Native runtime

This directory contains the native runtime for Xamarin.iOS and Xamarin.Mac.

Cooperative GC

See COOP.md

Generated code

A few files are generated automatically:

delegates.h|inc, Delegates.cs

These files contain the code required to glue the native runtime and the managed runtime.

mono-runtime.m, xamarin/mono-runtime.h

These files contain code that makes other code, consumers of the mono runtime, oblivious to whether the mono runtime is linked statically, dynamically, or using dlopen at runtime.

If you need to use a new function from the Mono headers, add it to exports.t4.

If you need a new enum / constant / typedef / etc, add it to mono-runtime.h.t4.

Shipped headers

These are the headers shipped with XI/XM (they're not for public consumption, but we need them to build generated code on customers machine, in particular main.m and registrar.m)

xamarin/runtime.h xamarin/trampolines.h xamarin/main.h xamarin/xamarin.h