[intro] check for duplicate or inconsistent availability attributes (#9825)

This can easily happen when existing type(s) or framework are added to a platform. E.g.

```csharp
[Watch (6,0)][iOS (9,0)]
interface AVFoo {
   [Watch (6,0)][iOS (13,0)]
   void NewMember ();
}
```

Here we have duplicate attributes and, while not confusing, it does mean extra (and non required) metadata into the platform assemblies.

```csharp
[Watch (6,0)][iOS (9,0)]
interface AVFoo {
   [Watch (5,0)][iOS (13,0)]
   void NewMember ();
}
```

Here we declare a member as available when the type is not. I'm not sure how the IDE will react - but this should be audited since one of them is wrong (whatever the IDE behaviour is).

Fix https://github.com/xamarin/xamarin-macios/issues/6856
This commit is contained in:
Sebastien Pouliot 2020-10-13 14:16:33 -04:00 коммит произвёл GitHub
Родитель 86cb7468b9
Коммит 11aafadd86
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
71 изменённых файлов: 252 добавлений и 316 удалений

Просмотреть файл

@ -8,8 +8,6 @@ using ObjCRuntime;
namespace AVFoundation {
public partial class AVAssetDownloadStorageManagementPolicy {
[iOS (11,0)]
[NoTV][NoMac][NoWatch]
public virtual AVAssetDownloadedAssetEvictionPriority Priority {
get { return AVAssetDownloadedAssetEvictionPriorityExtensions.GetValue (_Priority); }
set { throw new NotImplementedException (); }
@ -18,8 +16,6 @@ namespace AVFoundation {
public partial class AVMutableAssetDownloadStorageManagementPolicy {
[iOS (11,0)]
[NoTV][NoMac][NoWatch]
public override AVAssetDownloadedAssetEvictionPriority Priority {
get { return AVAssetDownloadedAssetEvictionPriorityExtensions.GetValue (_Priority); }
set { _Priority = value.GetConstant (); }

Просмотреть файл

@ -14,7 +14,7 @@ using ObjCRuntime;
namespace AVFoundation {
#if IOS
public partial class AVCaptureDeviceDiscoverySession {
[iOS (10,0)]
public static AVCaptureDeviceDiscoverySession Create (AVCaptureDeviceType [] deviceTypes, string mediaType, AVCaptureDevicePosition position)
{
var arr = new NSMutableArray ();

Просмотреть файл

@ -25,7 +25,7 @@ namespace AVFoundation {
public static AVContentKeyResponse Create (NSData fairPlayStreamingKeyResponseData) => Create (fairPlayStreamingKeyResponseData, AVContentKeyResponseDataType.FairPlayStreamingKeyResponseData);
[TV (10,2), Mac (10,12,4), iOS (10,3), NoWatch]
[NoWatch]
public static AVContentKeyResponse Create (NSData data, AVContentKeyResponseDataType dataType = AVContentKeyResponseDataType.FairPlayStreamingKeyResponseData) {
switch (dataType) {
case AVContentKeyResponseDataType.AuthorizationTokenData:

Просмотреть файл

@ -16,7 +16,6 @@ namespace AVKit {
// the resulting syntax does not look good in user code so we provide a better looking API
// https://trello.com/c/iQpXOxCd/227-category-and-static-methods-selectors
// note: we cannot reuse the same method name - as it would break compilation of existing apps
[iOS (8,0)]
static public void PrepareForPrerollAds ()
{
(null as AVPlayerViewController).PreparePrerollAds ();

Просмотреть файл

@ -16,7 +16,7 @@ namespace CloudKit {
#if !XAMCORE_4_0
public partial class CKQueryNotification {
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Empty stub (not public API). Use 'DatabaseScope' instead.")]
public virtual bool IsPublicDatabase { get; }
}
@ -46,33 +46,27 @@ namespace CloudKit {
public partial class CKContainer {
#if __IOS__ || MONOMAC
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverAllIdentities' instead.")]
public virtual void DiscoverAllContactUserInfos (Action<CKDiscoveredUserInfo[], NSError> completionHandler)
=> throw new NotSupportedException ();
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverAllIdentities' instead.")]
public virtual Task<CKDiscoveredUserInfo[]> DiscoverAllContactUserInfosAsync ()
=> Task.FromException<CKDiscoveredUserInfo[]> (new NotSupportedException ());
#endif
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverUserIdentityWithEmailAddress' instead.")]
public virtual void DiscoverUserInfo (string email, Action<CKDiscoveredUserInfo, NSError> completionHandler)
=> throw new NotSupportedException ();
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverUserIdentityWithEmailAddress' instead.")]
public virtual Task<CKDiscoveredUserInfo> DiscoverUserInfoAsync (string email)
=> Task.FromException<CKDiscoveredUserInfo> (new NotSupportedException ());
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverUserIdentity' instead.")]
public virtual void DiscoverUserInfo (CKRecordID userRecordId, Action<CKDiscoveredUserInfo, NSError> completionHandler)
=> throw new NotSupportedException ();
[iOS (8, 0), Mac (10, 10)]
[Obsolete ("Always throw a 'NotSupportedException' (not a public API). Use 'DiscoverUserIdentity' instead.")]
public virtual Task<CKDiscoveredUserInfo> DiscoverUserInfoAsync (CKRecordID userRecordId)
=> Task.FromException<CKDiscoveredUserInfo> (new NotSupportedException ());

Просмотреть файл

@ -104,7 +104,7 @@ namespace CloudKit
Query = 1,
RecordZone = 2,
ReadNotification = 3,
[iOS (10,0), TV (10,0), Mac (10,12), Watch (3,0)] Database = 4,
[iOS (10,0), TV (10,0), Mac (10,12)] Database = 4,
}
// NSInteger -> CKNotification.h
@ -127,7 +127,7 @@ namespace CloudKit
public enum CKRecordZoneCapabilities : ulong {
FetchChanges = 1 << 0,
Atomic = 1 << 1,
[iOS (10,0), Watch (3,0), TV (10,0), Mac (10,12)] Sharing = 1 << 2,
[iOS (10,0), TV (10,0), Mac (10,12)] Sharing = 1 << 2,
}
// NSUInteger -> CKReference.h

Просмотреть файл

@ -116,11 +116,9 @@ namespace CoreGraphics {
throw new Exception ("Failed to create CGColorConverter");
}
[iOS (10,0)][Mac (10,12)]
[DllImport(Constants.CoreGraphicsLibrary)]
extern static IntPtr CGColorConversionInfoCreate (/* cg_nullable CGColorSpaceRef */ IntPtr src, /* cg_nullable CGColorSpaceRef */ IntPtr dst);
[iOS (10,0)][Mac (10,12)]
public CGColorConversionInfo (CGColorSpace source, CGColorSpace destination)
{
// API accept null arguments but returns null, which we can't use

Просмотреть файл

@ -14,7 +14,6 @@ using ObjCRuntime;
namespace CoreML {
public partial class MLDictionaryFeatureProvider {
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public MLFeatureValue this [string featureName] {
get { return GetFeatureValue (featureName); }
}

Просмотреть файл

@ -27,58 +27,49 @@ namespace CoreML {
return NSArray.ArrayFromHandle<nint> (handle, (v) => Messaging.nint_objc_msgSend (v, Selector.GetHandle ("integerValue")));
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public MLMultiArray (nint [] shape, MLMultiArrayDataType dataType, out NSError error)
: this (ConvertArray (shape), dataType, out error)
{
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public MLMultiArray (IntPtr dataPointer, nint [] shape, MLMultiArrayDataType dataType, nint [] strides, Action<IntPtr> deallocator, out NSError error)
: this (dataPointer, ConvertArray (shape), dataType, ConvertArray (strides), deallocator, out error)
{
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public NSNumber this [nint idx] {
get { return GetObject (idx); }
set { SetObject (value, idx); }
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public NSNumber this [params nint[] indices] {
get { return GetObject (indices); }
set { SetObject (value, indices); }
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public NSNumber this [NSNumber [] key] {
get { return GetObject (key); }
set { SetObject (value, key); }
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public NSNumber GetObject (params nint[] indices)
{
using (var arr = NSArray.FromNSObjects<nint> (NSNumber.FromNInt, indices))
return GetObject (arr.GetHandle ());
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public void SetObject (NSNumber obj, params nint[] indices)
{
using (var arr = NSArray.FromNSObjects<nint> (NSNumber.FromNInt, indices))
SetObject (obj, arr.GetHandle ());
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public nint[] Shape {
get {
return ConvertArray (_Shape);
}
}
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public nint[] Strides {
get {
return ConvertArray (_Strides);

Просмотреть файл

@ -361,11 +361,11 @@ namespace CoreMedia {
return CMTimebaseSetTimerToFireImmediately (Handle, timer.Handle);
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport(Constants.CoreMediaLibrary)]
extern static CMTimebaseError CMTimebaseSetMasterTimebase (/* CMTimebaseRef* */ IntPtr timebase, /* CMTimebaseRef* */ IntPtr newMasterTimebase);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public CMTimebaseError SetMasterTimebase (CMTimebase newMasterTimebase)
{
if (newMasterTimebase == null)
@ -374,11 +374,11 @@ namespace CoreMedia {
return CMTimebaseSetMasterTimebase (Handle, newMasterTimebase.Handle);
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport(Constants.CoreMediaLibrary)]
extern static CMTimebaseError CMTimebaseSetMasterClock (/* CMTimebaseRef* */ IntPtr timebase, /* CMClockRef* */ IntPtr newMasterClock);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public CMTimebaseError SetMasterClock (CMClock newMasterClock)
{
if (newMasterClock == null)

Просмотреть файл

@ -125,40 +125,40 @@ namespace CoreVideo {
#endif
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static int CVYCbCrMatrixGetIntegerCodePointForString (IntPtr yCbCrMatrixString);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static int GetCodePoint (CVImageBufferYCbCrMatrix yCbCrMatrix)
{
return CVYCbCrMatrixGetIntegerCodePointForString (yCbCrMatrix.GetConstant ().Handle);
}
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static int CVColorPrimariesGetIntegerCodePointForString (IntPtr colorPrimariesString);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static int GetCodePoint (CVImageBufferColorPrimaries color)
{
return CVColorPrimariesGetIntegerCodePointForString (color.GetConstant ().Handle);
}
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static int CVTransferFunctionGetIntegerCodePointForString (IntPtr colorPrimariesString);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static int GetCodePoint (CVImageBufferTransferFunction function)
{
return CVTransferFunctionGetIntegerCodePointForString (function.GetConstant ().Handle);
}
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static IntPtr CVYCbCrMatrixGetStringForIntegerCodePoint (int yCbCrMatrixCodePoint);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static CVImageBufferYCbCrMatrix GetYCbCrMatrixOption (int yCbCrMatrixCodePoint)
{
var ret = Runtime.GetNSObject<NSString> (CVYCbCrMatrixGetStringForIntegerCodePoint (yCbCrMatrixCodePoint));
@ -166,10 +166,10 @@ namespace CoreVideo {
}
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static IntPtr CVColorPrimariesGetStringForIntegerCodePoint (int colorPrimariesCodePoint);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static CVImageBufferColorPrimaries GetColorPrimariesOption (int colorPrimariesCodePoint)
{
var ret = Runtime.GetNSObject<NSString> (CVColorPrimariesGetStringForIntegerCodePoint (colorPrimariesCodePoint));
@ -177,10 +177,10 @@ namespace CoreVideo {
}
[DllImport (Constants.CoreVideoLibrary)]
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
extern static IntPtr CVTransferFunctionGetStringForIntegerCodePoint (int transferFunctionCodePoint);
[iOS (11, 0), Mac (10, 13), TV (11, 0), Watch (4, 0)]
[iOS (11, 0), Mac (10, 13), TV (11, 0)]
public static CVImageBufferTransferFunction GetTransferFunctionOption (int transferFunctionCodePoint)
{
var ret = Runtime.GetNSObject<NSString> (CVTransferFunctionGetStringForIntegerCodePoint (transferFunctionCodePoint));

Просмотреть файл

@ -134,11 +134,9 @@ namespace GLKit {
public bool Normalized;
#if !COREBUILD
[iOS (9,0)][Mac (10,11)]
[DllImport (Constants.GLKitLibrary, EntryPoint = "GLKVertexAttributeParametersFromModelIO")]
extern static GLKVertexAttributeParameters FromVertexFormat_ (nuint vertexFormat);
[iOS (9,0)][Mac (10,11)]
public static GLKVertexAttributeParameters FromVertexFormat (MDLVertexFormat vertexFormat)
{
return FromVertexFormat_ ((nuint) (ulong) vertexFormat);

Просмотреть файл

@ -7,7 +7,6 @@ namespace HomeKit {
partial class HMActionSet {
[iOS (9,0)]
[TV (10,0)]
public HMActionSetType ActionSetType {
get {
var s = _ActionSetType;

Просмотреть файл

@ -4,8 +4,6 @@ using Foundation;
namespace HomeKit {
[iOS (8,0)]
[TV (10,0)]
partial class HMCharacteristic
{
public bool SupportsEventNotification {
@ -39,7 +37,6 @@ namespace HomeKit {
}
[iOS (9,3)][Watch (2,2)]
[TV (10,0)]
public bool Hidden {
get {
foreach (var p in Properties) {

Просмотреть файл

@ -574,7 +574,7 @@ namespace HomeKit {
[Field ("HMCharacteristicTypeHumidifierThreshold")]
HumidifierThreshold,
[iOS (9,0), Watch (2,0), TV (10,0)]
[iOS (9,0)]
[Field ("HMCharacteristicTypeSecuritySystemAlarmType")]
SecuritySystemAlarmType,

Просмотреть файл

@ -89,7 +89,6 @@ namespace HomeKit {
#if (WATCH || TVOS)
[Obsolete ("This API is not available on this platform.")]
#endif
[Introduced (PlatformName.iOS, 8,0, PlatformArchitecture.All, message: "This API in now prohibited on iOS. Use 'ManageUsers' instead.")]
[Obsoleted (PlatformName.iOS, 9,0, PlatformArchitecture.All, message: "This API in now prohibited on iOS. Use 'ManageUsers' instead.")]
public virtual void RemoveUser (HMUser user, Action<NSError> completion) {
throw new NotSupportedException ();
@ -100,7 +99,6 @@ namespace HomeKit {
#if (WATCH || TVOS)
[Obsolete ("This API is not available on this platform.")]
#endif
[Introduced (PlatformName.iOS, 8,0, PlatformArchitecture.All, message: "This API in now prohibited on iOS. Use 'ManageUsers' instead.")]
[Obsoleted (PlatformName.iOS, 9,0, PlatformArchitecture.All, message: "This API in now prohibited on iOS. Use 'ManageUsers' instead.")]
public virtual Task RemoveUserAsync (HMUser user) {
throw new NotSupportedException ();

Просмотреть файл

@ -33,9 +33,6 @@ namespace IOSurface {
// kern_return_t
// See bug #59201 [iOS (10,0)]
[iOS (11, 0)]
[Mac (10, 12)]
[TV (11, 0)]
public int Lock (IOSurfaceLockOptions options, ref int seed)
{
unsafe {
@ -47,9 +44,6 @@ namespace IOSurface {
// kern_return_t
// See bug #59201 [iOS (10,0)]
[iOS (11, 0)]
[Mac (10, 12)]
[TV (11, 0)]
public int Lock (IOSurfaceLockOptions options)
{
return _Lock (options, IntPtr.Zero);
@ -57,9 +51,6 @@ namespace IOSurface {
// kern_return_t
// See bug #59201 [iOS (10,0)]
[iOS (11, 0)]
[Mac (10, 12)]
[TV (11, 0)]
public int Unlock (IOSurfaceLockOptions options, ref int seed)
{
unsafe {
@ -71,9 +62,6 @@ namespace IOSurface {
// kern_return_t
// See bug #59201 [iOS (10,0)]
[iOS (11, 0)]
[Mac (10, 12)]
[TV (11, 0)]
public int Unlock (IOSurfaceLockOptions options)
{
return _Unlock (options, IntPtr.Zero);
@ -81,8 +69,6 @@ namespace IOSurface {
#if !MONOMAC
// kern_return_t
[iOS (11, 0)]
[TV (11, 0)]
public int SetPurgeable (IOSurfacePurgeabilityState newState, ref IOSurfacePurgeabilityState oldState)
{
unsafe {
@ -92,8 +78,6 @@ namespace IOSurface {
}
}
[iOS (11, 0)]
[TV (11, 0)]
public int SetPurgeable (IOSurfacePurgeabilityState newState)
{
return _SetPurgeable (newState, IntPtr.Zero);

Просмотреть файл

@ -9,8 +9,8 @@ using ObjCRuntime;
namespace Metal {
public partial class MTLRasterizationRateLayerDescriptor
{
/* Selectors reported as not working by instrospection: https://github.com/xamarin/maccore/issues/1976
[NoMac, NoTV, iOS (13,0)]
/* Selectors reported as not working by introspection: https://github.com/xamarin/maccore/issues/1976
[NoMac]
public double[] HorizontalSampleStorage {
get {
var width = (int)SampleCount.Width;
@ -20,7 +20,7 @@ namespace Metal {
}
}
[NoMac, NoTV, iOS (13,0)]
[NoMac]
public double[] VerticalSampleStorage {
get {
var height = (int)SampleCount.Height;
@ -30,7 +30,7 @@ namespace Metal {
}
}
*/
[NoMac, NoTV, iOS (13,0)]
[NoMac]
static public MTLRasterizationRateLayerDescriptor Create (MTLSize sampleCount, float[] horizontal, float[] vertical)
{
if (horizontal == null)

Просмотреть файл

@ -11,7 +11,7 @@ namespace ModelIO {
}
public partial class MDLNoiseTexture {
[iOS (9,0), Mac (10,11)]
public MDLNoiseTexture (float input, string name, Vector2i textureDimensions, MDLTextureChannelEncoding channelEncoding) : this (input, name, textureDimensions, channelEncoding, MDLNoiseTextureType.Vector)
{
}

Просмотреть файл

@ -65,15 +65,15 @@ namespace Network {
get => nw_advertise_descriptor_get_no_auto_rename (GetCheckedHandle ());
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern OS_nw_txt_record nw_advertise_descriptor_copy_txt_record_object (OS_nw_advertise_descriptor advertise_descriptor);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern void nw_advertise_descriptor_set_txt_record_object (OS_nw_advertise_descriptor advertise_descriptor, OS_nw_txt_record txt_record);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public NWTxtRecord TxtRecord {
get => new NWTxtRecord (nw_advertise_descriptor_copy_txt_record_object (GetCheckedHandle ()), owns: true);
set => nw_advertise_descriptor_set_txt_record_object (GetCheckedHandle (), value.GetHandle ());

Просмотреть файл

@ -574,7 +574,7 @@ namespace Network {
BlockLiteral.SimpleCall (method, (arg)=> nw_connection_batch (GetCheckedHandle (), arg));
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
unsafe static extern void nw_connection_access_establishment_report (IntPtr connection, IntPtr queue, ref BlockLiteral access_block);
@ -592,7 +592,7 @@ namespace Network {
}
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[BindingImpl (BindingImplOptions.Optimizable)]
public void GetEstablishmentReport (DispatchQueue queue, Action<NWEstablishmentReport> handler)
{

Просмотреть файл

@ -116,11 +116,11 @@ namespace Network {
public string? BonjourServiceDomain => Marshal.PtrToStringAnsi (nw_endpoint_get_bonjour_service_domain (GetCheckedHandle ()));
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
static extern OS_nw_endpoint nw_endpoint_create_url (string url);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public static NWEndpoint? Create (string url)
{
if (url == null)
@ -131,11 +131,11 @@ namespace Network {
return new NWEndpoint (handle, owns: true);
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr nw_endpoint_get_url (OS_nw_endpoint endpoint);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public string? Url => Marshal.PtrToStringAnsi (nw_endpoint_get_url (GetCheckedHandle ()));
}
}

Просмотреть файл

@ -243,15 +243,15 @@ namespace Network {
nw_listener_set_advertise_descriptor (GetCheckedHandle (), descriptor.GetHandle ());
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern uint nw_listener_get_new_connection_limit (IntPtr listener);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern void nw_listener_set_new_connection_limit (IntPtr listener, uint new_connection_limit);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public uint ConnectionLimit {
get => nw_listener_get_new_connection_limit (GetCheckedHandle ());
set => nw_listener_set_new_connection_limit (GetCheckedHandle (), value);

Просмотреть файл

@ -484,16 +484,16 @@ namespace Network {
set => nw_parameters_set_include_peer_to_peer (GetCheckedHandle (), value);
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
[return: MarshalAs (UnmanagedType.I1)]
static extern bool nw_parameters_get_prohibit_constrained (IntPtr parameters);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern void nw_parameters_set_prohibit_constrained (IntPtr parameters, bool prohibit_constrained);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public bool ProhibitConstrained {
get => nw_parameters_get_prohibit_constrained (GetCheckedHandle ());
set => nw_parameters_set_prohibit_constrained (GetCheckedHandle (), value);

Просмотреть файл

@ -134,14 +134,14 @@ namespace Network {
}
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern bool nw_path_is_constrained (IntPtr path);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public bool IsConstrained => nw_path_is_constrained (GetCheckedHandle ());
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern void nw_path_enumerate_gateways (IntPtr path, ref BlockLiteral enumerate_block);
@ -158,7 +158,7 @@ namespace Network {
}
}
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[BindingImpl (BindingImplOptions.Optimizable)]
public void EnumerateGateways (Action<NWEndpoint> callback)
{

Просмотреть файл

@ -78,20 +78,20 @@ namespace Network {
public static NWProtocolDefinition CreateTlsDefinition () => new NWProtocolDefinition (nw_protocol_copy_tls_definition (), owns: true);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
static extern OS_nw_protocol_definition nw_protocol_copy_ws_definition ();
#if !XAMCORE_4_0
[Obsolete ("Use 'CreateWebSocketDefinition' method instead.")]
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public static NWProtocolDefinition WebSocketDefinition => new NWProtocolDefinition (nw_protocol_copy_ws_definition (), owns: true);
#endif
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public static NWProtocolDefinition CreateWebSocketDefinition () => new NWProtocolDefinition (nw_protocol_copy_ws_definition (), owns: true);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[Watch (6,0), TV (13,0), Mac (10,15)]
[DllImport (Constants.NetworkLibrary)]
static extern unsafe OS_nw_protocol_definition nw_framer_create_definition (string identifier, NWFramerCreateFlags flags, ref BlockLiteral start_handler);
delegate NWFramerStartResult nw_framer_create_definition_t (IntPtr block, IntPtr framer);
@ -109,7 +109,7 @@ namespace Network {
return NWFramerStartResult.Unknown;
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[BindingImpl (BindingImplOptions.Optimizable)]
public static NWProtocolDefinition CreateFramerDefinition (string identifier, NWFramerCreateFlags flags, Func<NWFramer, NWFramerStartResult> startCallback)
{

Просмотреть файл

@ -54,7 +54,6 @@ namespace Network {
public void SetCalculateReceiveTime (bool shouldCalculateReceiveTime)
=> nw_ip_options_set_calculate_receive_time (GetCheckedHandle (), shouldCalculateReceiveTime);
[TV (13,0), Mac (10,15), iOS (13,0)]
public void SetIPLocalAddressPreference (NWIPLocalAddressPreference localAddressPreference)
=> nw_ip_options_set_local_address_preference (GetCheckedHandle (), localAddressPreference);
}

Просмотреть файл

@ -212,18 +212,18 @@ namespace Network {
}
#endif
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
internal static extern bool nw_protocol_metadata_is_framer_message (OS_nw_protocol_metadata metadata);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public bool IsFramerMessage => nw_protocol_metadata_is_framer_message (GetCheckedHandle ());
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
internal static extern bool nw_protocol_metadata_is_ws (OS_nw_protocol_metadata metadata);
[TV (13,0), Mac (10,15), iOS (13,0), Watch (6,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public bool IsWebSocket => nw_protocol_metadata_is_ws (GetCheckedHandle ());
}
}

Просмотреть файл

@ -107,12 +107,12 @@ namespace Network {
}
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[DllImport (Constants.NetworkLibrary)]
internal static extern void nw_ip_options_set_local_address_preference (IntPtr options, NWIPLocalAddressPreference preference);
[Obsolete ("Use the 'NWProtocolIPOptions' class instead.")]
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
public NWIPLocalAddressPreference IPLocalAddressPreference {
set => nw_ip_options_set_local_address_preference (GetCheckedHandle (), value);
}

Просмотреть файл

@ -51,13 +51,11 @@ namespace SceneKit {
}
[Mac (10, 10)]
[iOS (8, 0)]
public SCNMatrix4 [] BoneInverseBindTransforms {
get { return FromNSArray (_BoneInverseBindTransforms); }
}
[Mac (10, 10)]
[iOS (8, 0)]
public static SCNSkinner Create (SCNGeometry baseGeometry,
SCNNode [] bones, SCNMatrix4 [] boneInverseBindTransforms,
SCNGeometrySource boneWeights, SCNGeometrySource boneIndices)

Просмотреть файл

@ -12,9 +12,6 @@ namespace Security {
public static partial class SecSharedCredential {
[iOS (8,0)]
[Mac (11,0)]
[Introduced (PlatformName.MacCatalyst, 14,0)]
[DllImport (Constants.SecurityLibrary)]
extern static void SecAddSharedWebCredential (IntPtr /* CFStringRef */ fqdn, IntPtr /* CFStringRef */ account, IntPtr /* CFStringRef */ password,
IntPtr /* void (^completionHandler)( CFErrorRef error) ) */ completionHandler);
@ -36,7 +33,6 @@ namespace Security {
}
}
[iOS (8,0)]
[BindingImpl (BindingImplOptions.Optimizable)]
public static void AddSharedWebCredential (string domainName, string account, string password, Action<NSError> handler)
{
@ -67,8 +63,6 @@ namespace Security {
}
}
[iOS (8,0)]
[Mac (11,0)]
[Deprecated (PlatformName.iOS, 14,0)]
[Deprecated (PlatformName.MacOSX, 11,0)]
[DllImport (Constants.SecurityLibrary)]
@ -102,8 +96,6 @@ namespace Security {
}
#endif
[iOS (8,0)]
[Mac (11,0)]
[Deprecated (PlatformName.iOS, 14,0, message: "Use 'ASAuthorizationPasswordRequest' instead.")]
[Deprecated (PlatformName.MacOSX, 11,0, message: "Use 'ASAuthorizationPasswordRequest' instead.")]
[BindingImpl (BindingImplOptions.Optimizable)]
@ -143,14 +135,9 @@ namespace Security {
}
}
[iOS (8,0)]
[Mac (11,0)]
[DllImport (Constants.SecurityLibrary)]
extern static IntPtr /* CFStringRef */ SecCreateSharedWebCredentialPassword ();
[iOS (8,0)]
[Mac (11,0)]
[Introduced (PlatformName.MacCatalyst, 14,0)]
public static string CreateSharedWebCredentialPassword ()
{
var handle = SecCreateSharedWebCredentialPassword ();

Просмотреть файл

@ -8,8 +8,6 @@ namespace SensorKit {
public partial class SRSensorExtensions {
[NoWatch, NoTV, NoMac]
[iOS (14,0)]
public static SRSensor GetSensorForDeletionRecords (this SRSensor self)
{
var constant = self.GetConstant ();

Просмотреть файл

@ -5,7 +5,7 @@ using ObjCRuntime;
namespace StoreKit {
partial class SKReceiptRefreshRequest {
[Watch (6, 2), iOS (7,1), Mac (10,14)]
[iOS (7,1), Mac (10,14)]
[DllImport (Constants.StoreKitLibrary, EntryPoint = "SKTerminateForInvalidReceipt")]
static extern public void TerminateForInvalidReceipt ();
}

Просмотреть файл

@ -8,7 +8,6 @@ namespace StoreKit {
partial class SKCloudServiceSetupOptions {
[iOS (10,1)]
public virtual SKCloudServiceSetupAction? Action {
get {
return (SKCloudServiceSetupAction?) (SKCloudServiceSetupActionExtensions.GetValue (_Action));

Просмотреть файл

@ -19,11 +19,9 @@ namespace UIKit {
public partial class UICellAccessory {
[TV (14,0), iOS (14,0)]
[DllImport (Constants.UIKitLibrary)]
static extern IntPtr UICellAccessoryPositionBeforeAccessoryOfClass (IntPtr accessoryCls);
[TV (14,0), iOS (14,0)]
[return: DelegateProxy (typeof (SDUICellAccessoryPosition))]
[BindingImpl (BindingImplOptions.Optimizable)]
public static UICellAccessoryPosition GetPositionBeforeAccessory (Class accessoryClass)
@ -34,16 +32,13 @@ namespace UIKit {
return NIDUICellAccessoryPosition.Create (ret)!;
}
[TV (14,0), iOS (14,0)]
[return: DelegateProxy (typeof (SDUICellAccessoryPosition))]
[BindingImpl (BindingImplOptions.Optimizable)]
public static UICellAccessoryPosition GetPositionBeforeAccessory (Type accessoryType) => GetPositionBeforeAccessory (new Class (accessoryType));
[TV (14,0), iOS (14,0)]
[DllImport (Constants.UIKitLibrary)]
static extern IntPtr UICellAccessoryPositionAfterAccessoryOfClass (IntPtr accessoryCls);
[TV (14,0), iOS (14,0)]
[return: DelegateProxy (typeof (SDUICellAccessoryPosition))]
[BindingImpl (BindingImplOptions.Optimizable)]
public static UICellAccessoryPosition GetPositionAfterAccessory (Class accessoryClass)
@ -54,7 +49,6 @@ namespace UIKit {
return NIDUICellAccessoryPosition.Create (ret)!;
}
[TV (14,0), iOS (14,0)]
[return: DelegateProxy (typeof (SDUICellAccessoryPosition))]
[BindingImpl (BindingImplOptions.Optimizable)]
public static UICellAccessoryPosition GetPositionAfterAccessory (Type accessoryType) => GetPositionAfterAccessory (new Class (accessoryType));

Просмотреть файл

@ -2462,7 +2462,7 @@ namespace UIKit {
[Field ("UIWindowSceneSessionRoleExternalDisplay")]
ExternalDisplay,
[iOS (13,0)][NoTV][NoWatch]
[NoTV][NoWatch]
[Field ("CPTemplateApplicationSceneSessionRoleApplication", "CarPlay")]
CarTemplateApplication,
}

Просмотреть файл

@ -17,7 +17,6 @@ namespace UIKit {
// the resulting syntax does not look good in user code so we provide a better looking API
// https://trello.com/c/iQpXOxCd/227-category-and-static-methods-selectors
// note: we cannot reuse the same method name - as it would break compilation of existing apps
[iOS (8,0)]
[Deprecated (PlatformName.iOS, 10,0, message: "Use 'CreatePrimaryVibrancyEffectForNotificationCenter' instead.")]
static public UIVibrancyEffect CreateForNotificationCenter ()
{

Просмотреть файл

@ -198,11 +198,11 @@ namespace VideoToolbox {
return null;
}
[Mac (10,9), iOS (8,0)]
[Mac (10,9)]
[DllImport (Constants.VideoToolboxLibrary)]
extern static VTStatus VTCompressionSessionPrepareToEncodeFrames (IntPtr handle);
[Mac (10,9), iOS (8,0)]
[Mac (10,9)]
public VTStatus PrepareToEncodeFrames ()
{
if (Handle == IntPtr.Zero)
@ -300,11 +300,11 @@ namespace VideoToolbox {
return VTCompressionSessionCompleteFrames (Handle, completeUntilPresentationTimeStamp);
}
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[DllImport (Constants.VideoToolboxLibrary)]
extern static VTStatus VTCompressionSessionBeginPass (IntPtr session, VTCompressionSessionOptionFlags flags, IntPtr reserved);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
public VTStatus BeginPass (VTCompressionSessionOptionFlags flags)
{
if (Handle == IntPtr.Zero)
@ -312,15 +312,15 @@ namespace VideoToolbox {
return VTCompressionSessionBeginPass (Handle, flags, IntPtr.Zero);
}
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[DllImport (Constants.VideoToolboxLibrary)]
extern static VTStatus VTCompressionSessionEndPass (IntPtr session, out byte furtherPassesRequestedOut, IntPtr reserved);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[DllImport (Constants.VideoToolboxLibrary)]
extern static VTStatus VTCompressionSessionEndPass (IntPtr session, IntPtr ptrByte, IntPtr reserved);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
public VTStatus EndPass (out bool furtherPassesRequested)
{
if (Handle == IntPtr.Zero)
@ -341,14 +341,14 @@ namespace VideoToolbox {
return VTCompressionSessionEndPass (Handle, IntPtr.Zero, IntPtr.Zero);
}
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[DllImport (Constants.VideoToolboxLibrary)]
extern static VTStatus VTCompressionSessionGetTimeRangesForNextPass (
/* VTCompressionSessionRef */ IntPtr session,
/* CMItemCount* */ out int itemCount,
/* const CMTimeRange** */ out IntPtr target);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
public VTStatus GetTimeRangesForNextPass (out CMTimeRange [] timeRanges)
{
if (Handle == IntPtr.Zero)

Просмотреть файл

@ -1612,7 +1612,6 @@ namespace ARKit {
[DisableDefaultCtor]
interface AREnvironmentProbeAnchor {
// Inlined from 'ARAnchorCopying' protocol (we can't have constructors in interfaces)
[iOS (12,0)]
[Export ("initWithAnchor:")]
IntPtr Constructor (ARAnchor anchor);
@ -1686,7 +1685,6 @@ namespace ARKit {
[return: NullAllowed]
ARReferenceObject Merge (ARReferenceObject @object, [NullAllowed] out NSError error);
[iOS (12,0)]
[Field ("ARReferenceObjectArchiveExtension")]
NSString ArchiveExtension { get; }
}
@ -1697,7 +1695,6 @@ namespace ARKit {
[DisableDefaultCtor]
interface ARObjectAnchor {
// Inlined from 'ARAnchorCopying' protocol (we can't have constructors in interfaces)
[iOS (12,0)]
[Export ("initWithAnchor:")]
IntPtr Constructor (ARAnchor anchor);
@ -2240,7 +2237,6 @@ namespace ARKit {
[BaseType (typeof (ARAnchor))]
interface ARGeoAnchor : ARTrackable {
// Inlined from 'ARAnchorCopying' protocol (we can't have constructors in interfaces)
[iOS (14,0)]
[Export ("initWithAnchor:")]
IntPtr Constructor (ARAnchor anchor);

Просмотреть файл

@ -248,11 +248,9 @@ namespace AudioUnit {
[Export ("shouldChangeToFormat:forBus:")]
bool ShouldChangeToFormat (AVAudioFormat format, AUAudioUnitBus bus);
[Mac (10,11)][iOS (7,0)]
[Notification, Field ("kAudioComponentRegistrationsChangedNotification")]
NSString AudioComponentRegistrationsChangedNotification { get; }
[Mac (10,11)][iOS (7,0)]
[Notification, Field ("kAudioComponentInstanceInvalidationNotification")]
NSString AudioComponentInstanceInvalidationNotification { get; }

Просмотреть файл

@ -1232,7 +1232,7 @@ namespace AVFoundation {
[Export ("isEqual:"), Internal]
bool IsEqual (NSObject obj);
[iOS (10,0), TV (10,0), Watch (3,0), Mac (10,12)]
[iOS (10,0), TV (10,0), Mac (10,12)]
[NullAllowed, Export ("magicCookie", ArgumentSemantic.Retain)]
NSData MagicCookie { get; set; }
}
@ -1985,7 +1985,7 @@ namespace AVFoundation {
bool SetCategory (string category, AVAudioSessionCategoryOptions options, out NSError outError);
[NoMac]
[iOS (10,0), TV (10,0), Watch (3,0)]
[iOS (10,0), TV (10,0)]
[Export ("setCategory:mode:options:error:")]
bool SetCategory (string category, string mode, AVAudioSessionCategoryOptions options, out NSError outError);
@ -2471,7 +2471,7 @@ namespace AVFoundation {
[Export ("UID")]
string UID { get; }
[iOS (10, 0), TV (10,0), Watch (3,0)]
[iOS (10, 0), TV (10,0)]
[Export ("hasHardwareVoiceCallProcessing")]
bool HasHardwareVoiceCallProcessing { get; }
@ -3077,11 +3077,11 @@ namespace AVFoundation {
[Export ("overallDurationHint")]
CMTime OverallDurationHint { get; }
[iOS (11, 0), TV (11, 0), Mac (10, 13), Watch (6,0)]
[iOS (11, 0), TV (11, 0), Mac (10, 13)]
[Export ("allMediaSelections")]
AVMediaSelection[] AllMediaSelections { get; }
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Export ("minimumTimeOffsetFromLive")]
CMTime MinimumTimeOffsetFromLive { get; }
}
@ -3365,7 +3365,6 @@ namespace AVFoundation {
[Export ("flushFromSourceTime:completionHandler:")]
void Flush (CMTime time, Action<bool> completionHandler);
[TV (11,0), Mac (10,13), iOS (11,0)]
[Notification (typeof (AudioRendererWasFlushedAutomaticallyEventArgs))]
[Field ("AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification")]
NSString AudioRendererWasFlushedAutomaticallyNotification { get; }
@ -7382,7 +7381,7 @@ namespace AVFoundation {
[Export ("insertMediaTimeRange:intoTimeRange:")]
bool InsertMediaTimeRange (CMTimeRange mediaTimeRange, CMTimeRange trackTimeRange);
[Watch (6,0), NoTV, iOS (13,0), Mac (10,13)]
[Mac (10,13)]
[Export ("replaceFormatDescription:withFormatDescription:")]
void ReplaceFormatDescription (CMFormatDescription formatDescription, CMFormatDescription newFormatDescription);
}
@ -10065,7 +10064,7 @@ namespace AVFoundation {
[Field ("AVCaptureDeviceTypeBuiltInTelephotoCamera")]
BuiltInTelephotoCamera,
[iOS (10, 0), NoMac]
[NoMac]
[Deprecated (PlatformName.iOS, 10, 2, message: "Use 'BuiltInDualCamera' instead.")]
[Field ("AVCaptureDeviceTypeBuiltInDuoCamera")]
BuiltInDuoCamera,
@ -10579,7 +10578,7 @@ namespace AVFoundation {
[Field ("AVCaptureISOCurrent")]
float ISOCurrent { get; } /* float, not CGFloat */
[iOS (8,0), Watch (6,0), NoMac]
[iOS (8,0), NoMac]
[Field ("AVCaptureLensPositionCurrent")]
float LensPositionCurrent { get; } /* float, not CGFloat */
@ -11060,12 +11059,12 @@ namespace AVFoundation {
[Export ("initWithPreferredLanguages:preferredMediaCharacteristics:")]
IntPtr Constructor ([NullAllowed] string [] preferredLanguages, [NullAllowed] NSString [] preferredMediaCharacteristics);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Export ("initWithPrincipalMediaCharacteristics:preferredLanguages:preferredMediaCharacteristics:")]
IntPtr Constructor ([NullAllowed] [BindAs (typeof (AVMediaCharacteristics []))]NSString[] principalMediaCharacteristics, [NullAllowed] [BindAs (typeof (AVMediaCharacteristics []))] NSString[] preferredLanguages, [NullAllowed] string[] preferredMediaCharacteristics);
[BindAs (typeof (AVMediaCharacteristics []))]
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[NullAllowed, Export ("principalMediaCharacteristics")]
NSString[] PrincipalMediaCharacteristics { get; }
}
@ -11479,24 +11478,24 @@ namespace AVFoundation {
NSString _VideoApertureMode { get; set; }
[Notification]
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Field ("AVPlayerItemRecommendedTimeOffsetFromLiveDidChangeNotification")]
NSString RecommendedTimeOffsetFromLiveDidChangeNotification { get; }
[Notification]
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Field ("AVPlayerItemMediaSelectionDidChangeNotification")]
NSString MediaSelectionDidChangeNotification { get; }
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Export ("configuredTimeOffsetFromLive", ArgumentSemantic.Assign)]
CMTime ConfiguredTimeOffsetFromLive { get; set; }
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Export ("recommendedTimeOffsetFromLive")]
CMTime RecommendedTimeOffsetFromLive { get; }
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Export ("automaticallyPreservesTimeOffsetFromLive")]
bool AutomaticallyPreservesTimeOffsetFromLive { get; set; }
@ -11988,11 +11987,11 @@ namespace AVFoundation {
[Export ("observedBitrate")]
double ObservedBitrate { get; }
[iOS (8,0), TV (9,0), Watch (6,0), Mac (10,10)]
[iOS (8,0), TV (9,0), Mac (10,10)]
[Export ("indicatedBitrate")]
double IndicatedBitrate { get; }
[iOS (10, 0), TV (10,0), Watch (6,0), Mac (10, 12)]
[iOS (10, 0), TV (10,0), Mac (10, 12)]
[Export ("indicatedAverageBitrate")]
double IndicatedAverageBitrate { get; }
@ -12327,7 +12326,7 @@ namespace AVFoundation {
[Field ("AVSampleRateConverterAlgorithm_Mastering"), Internal]
NSString AVSampleRateConverterAlgorithm_Mastering { get; }
[iOS (10, 0), TV (10,0), Watch (3,0), Mac (10,12)]
[iOS (10, 0), TV (10,0), Mac (10,12)]
[Field ("AVSampleRateConverterAlgorithm_MinimumPhase")]
NSString AVSampleRateConverterAlgorithm_MinimumPhase { get; }
@ -12389,12 +12388,12 @@ namespace AVFoundation {
[Export ("timebase", ArgumentSemantic.Retain)]
CMTimebase Timebase { get; }
[iOS (8, 0), Mac (10,10)]
[Mac (10,10)]
[Field ("AVSampleBufferDisplayLayerFailedToDecodeNotification")]
[Notification]
NSString FailedToDecodeNotification { get; }
[iOS (8, 0), Mac (10,10)]
[Mac (10,10)]
[Field ("AVSampleBufferDisplayLayerFailedToDecodeNotificationErrorKey")]
NSString FailedToDecodeNotificationErrorKey { get; }
@ -12470,7 +12469,7 @@ namespace AVFoundation {
[Field ("AVSpeechSynthesisVoiceIdentifierAlex")]
NSString IdentifierAlex { get; }
[iOS (10, 0), TV (10,0), Watch (3,0), Mac (10,15)]
[iOS (10, 0), TV (10,0), Mac (10,15)]
[Field ("AVSpeechSynthesisIPANotationAttribute")]
NSString IpaNotationAttribute { get; }
@ -12680,7 +12679,7 @@ namespace AVFoundation {
[Export ("URLAsset")]
AVUrlAsset UrlAsset { get; }
[Availability (Introduced = Platform.iOS_9_0, Deprecated = Platform.iOS_10_0)]
[Availability (Deprecated = Platform.iOS_10_0)]
[Export ("destinationURL")]
NSUrl DestinationUrl { get; }
@ -12753,7 +12752,7 @@ namespace AVFoundation {
[Export ("sessionWithConfiguration:assetDownloadDelegate:delegateQueue:")]
AVAssetDownloadUrlSession CreateSession (NSUrlSessionConfiguration configuration, [NullAllowed] IAVAssetDownloadDelegate @delegate, [NullAllowed] NSOperationQueue delegateQueue);
[Availability (Introduced = Platform.iOS_9_0, Deprecated = Platform.iOS_10_0, Message="Please use 'GetAssetDownloadTask (AVUrlAsset, string, NSData, NSDictionary<NSString, NSObject>)'.")]
[Availability (Deprecated = Platform.iOS_10_0, Message="Please use 'GetAssetDownloadTask (AVUrlAsset, string, NSData, NSDictionary<NSString, NSObject>)'.")]
[Export ("assetDownloadTaskWithURLAsset:destinationURL:options:")]
[return: NullAllowed]
AVAssetDownloadTask GetAssetDownloadTask (AVUrlAsset urlAsset, NSUrl destinationUrl, [NullAllowed] NSDictionary options);
@ -13117,7 +13116,7 @@ namespace AVFoundation {
[Export ("audioComponentDescription")]
AudioComponentDescription AudioComponentDescription { get; }
[iOS (9,0), Mac (10,10)]
[Field ("AVAudioUnitComponentTagsDidChangeNotification")]
[Notification]
NSString TagsDidChangeNotification { get; }
@ -13463,7 +13462,7 @@ namespace AVFoundation {
[Export ("respondByRequestingPersistableContentKeyRequestAndReturnError:")]
bool RespondByRequestingPersistableContentKeyRequest ([NullAllowed] out NSError error);
[Watch (6,0), TV (13,0), Mac (10,15), iOS (13,0)]
[TV (13,0), Mac (10,15), iOS (13,0)]
[Field ("AVContentKeyRequestRequiresValidationDataInSecureTokenKey")]
NSString RequiresValidationDataInSecureTokenKey { get; }
}
@ -13513,7 +13512,6 @@ namespace AVFoundation {
[BaseType (typeof(NSObject))]
interface AVRouteDetector {
[Notification]
[TV (11, 0), NoWatch, Mac (10, 13), iOS (11, 0)]
[Field ("AVRouteDetectorMultipleRoutesDetectedDidChangeNotification")]
NSString MultipleRoutesDetectedDidChange { get; }
@ -13608,36 +13606,31 @@ namespace AVFoundation {
// From @interface AVCapturePhotoBracketedCapture (AVCapturePhoto)
#if !MONOMAC
[iOS (11, 0)]
[NullAllowed, Export ("bracketSettings")]
AVCaptureBracketedStillImageSettings BracketSettings { get; }
#endif
[iOS (11, 0), NoMac]
[NoMac]
[Export ("lensStabilizationStatus")]
AVCaptureLensStabilizationStatus LensStabilizationStatus { get; }
[iOS (11, 0), NoMac]
[NoMac]
[Export ("sequenceCount")]
nint SequenceCount { get; }
// @interface AVCapturePhotoConversions (AVCapturePhoto)
[iOS (11, 0)]
[NullAllowed, Export ("fileDataRepresentation")]
NSData FileDataRepresentation { get; }
[iOS (11,0), NoMac]
[NoMac]
[Deprecated (PlatformName.iOS, 12, 0, message: "Use 'GetFileDataRepresentation' instead.")]
[Export ("fileDataRepresentationWithReplacementMetadata:replacementEmbeddedThumbnailPhotoFormat:replacementEmbeddedThumbnailPixelBuffer:replacementDepthData:")]
[return: NullAllowed]
NSData GetFileDataRepresentation ([NullAllowed] NSDictionary<NSString, NSObject> replacementMetadata, [NullAllowed] NSDictionary<NSString, NSObject> replacementEmbeddedThumbnailPhotoFormat, [NullAllowed] CVPixelBuffer replacementEmbeddedThumbnailPixelBuffer, [NullAllowed] AVDepthData replacementDepthData);
[iOS (11, 0)]
[NullAllowed, Export ("CGImageRepresentation")]
CGImage CGImageRepresentation { get; }
[iOS (11, 0)]
[NullAllowed, Export ("previewCGImageRepresentation")]
CGImage PreviewCGImageRepresentation { get; }

Просмотреть файл

@ -98,11 +98,11 @@ namespace AVKit {
[Export ("pictureInPictureButtonStopImageCompatibleWithTraitCollection:")]
UIImage CreateStopButton ([NullAllowed] UITraitCollection traitCollection);
[TV (14, 0), NoWatch, Mac (11, 0), iOS (14, 0)]
[NoWatch, Mac (11, 0), iOS (14, 0)]
[Export ("requiresLinearPlayback")]
bool RequiresLinearPlayback { get; set; }
[TV (14, 0), NoWatch, NoMac, NoiOS]
[NoWatch, NoMac, NoiOS]
[Export ("canStopPictureInPicture")]
bool CanStopPictureInPicture { get; }
}

Просмотреть файл

@ -607,7 +607,6 @@ namespace CarPlay {
[BaseType (typeof (NSObject))]
interface CPManeuver : NSCopying, NSSecureCoding {
[Introduced (PlatformName.iOS, 12,0)]
[Deprecated (PlatformName.iOS, 13,0, message: "Use 'CPManeuver.SymbolImage' instead.")]
[NullAllowed, Export ("symbolSet", ArgumentSemantic.Strong)]
CPImageSet SymbolSet { get; set; }

Просмотреть файл

@ -199,8 +199,6 @@ namespace CloudKit {
interface CKContainer {
[NoWatch]
[iOS (8, 0)]
[Mac (10, 10)]
[Deprecated (PlatformName.iOS, 10, 0, message : "Use 'CurrentUserDefaultName' instead.")]
[Deprecated (PlatformName.MacOSX, 10, 12, message : "Use 'CurrentUserDefaultName' instead.")]
[Field ("CKOwnerDefaultName")]
@ -433,16 +431,12 @@ namespace CloudKit {
[Export ("userRecordID", ArgumentSemantic.Copy)]
CKRecordID UserRecordId { get; }
[iOS (8, 0)]
[Mac (10, 10)]
[Deprecated (PlatformName.MacOSX, 10, 11, message : "Use 'DisplayContact.GivenName'.")]
[Deprecated (PlatformName.iOS, 9, 0, message : "Use 'DisplayContact.GivenName'.")]
[NullAllowed]
[Export ("firstName", ArgumentSemantic.Copy)]
string FirstName { get; }
[iOS (8, 0)]
[Mac (10, 10)]
[Deprecated (PlatformName.MacOSX, 10, 11, message : "Use 'DisplayContact.FamilyName'.")]
[Deprecated (PlatformName.iOS, 9, 0, message : "Use 'DisplayContact.FamilyName'.")]
[NullAllowed]
@ -1101,7 +1095,7 @@ namespace CloudKit {
[NullAllowed, Export ("recordID", ArgumentSemantic.Copy)]
CKRecordID RecordId { get; }
[iOS (10,0), Watch (3,0), TV (10,0), Mac (10,12)]
[iOS (10,0), TV (10,0), Mac (10,12)]
[Export ("databaseScope", ArgumentSemantic.Assign)]
CKDatabaseScope DatabaseScope { get; }
}
@ -1116,7 +1110,7 @@ namespace CloudKit {
[Export ("recordZoneID", ArgumentSemantic.Copy)]
CKRecordZoneID RecordZoneId { get; }
[iOS (10,0), Watch (3,0), TV (10,0), Mac (10,12)]
[iOS (10,0), TV (10,0), Mac (10,12)]
[Export ("databaseScope", ArgumentSemantic.Assign)]
CKDatabaseScope DatabaseScope { get; }
}
@ -1613,7 +1607,7 @@ namespace CloudKit {
[Export ("predicate", ArgumentSemantic.Copy)]
NSPredicate Predicate { get; }
[TV (10,0), Watch (6,0)]
[TV (10,0)]
[NullAllowed]
[Export ("notificationInfo", ArgumentSemantic.Copy)]
CKNotificationInfo NotificationInfo { get; set; }
@ -1665,7 +1659,6 @@ namespace CloudKit {
[Export ("desiredKeys", ArgumentSemantic.Copy)]
string [] DesiredKeys { get; set; }
[TV (10, 0)]
[Export ("shouldBadge", ArgumentSemantic.UnsafeUnretained)]
bool ShouldBadge { get; set; }

Просмотреть файл

@ -2696,11 +2696,9 @@ namespace CoreData
NSError Error { get; }
[Notification]
[Watch (7, 0), TV (14, 0), Mac (11, 0), iOS (14, 0)]
[Field ("NSPersistentCloudKitContainerEventChangedNotification")]
NSString ChangedNotification { get; }
[Watch (7, 0), TV (14, 0), Mac (11, 0), iOS (14, 0)]
[Field ("NSPersistentCloudKitContainerEventUserInfoKey")]
NSString UserInfoKey { get; }
}

Просмотреть файл

@ -2238,7 +2238,7 @@ namespace CoreImage {
[Export ("setROISelector:")]
void SetRegionOfInterestSelector (Selector aMethod);
#endif
[iOS (8,0), Mac (10,11)]
[Mac (10,11)]
[Export ("applyWithExtent:roiCallback:arguments:")]
CIImage ApplyWithExtent (CGRect extent, CIKernelRoiCallback callback, [NullAllowed] NSObject [] args);
}
@ -2294,7 +2294,6 @@ namespace CoreImage {
CIImageAccumulator FromRectangle (CGRect rect, int ciImageFormat);
#endif
[iOS (9,0)]
[Static]
[Export ("imageAccumulatorWithExtent:format:colorSpace:")]
CIImageAccumulator FromRectangle (CGRect extent, CIFormat format, CGColorSpace colorSpace);

Просмотреть файл

@ -169,11 +169,11 @@ namespace CoreMedia {
[Field ("kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix")]
NSString CameraIntrinsicMatrixKey { get; }
[iOS (13,0), Mac (10,15), TV (13,0), Watch (6,0)]
[iOS (13,0), Mac (10,15), TV (13,0)]
[Field ("kCMSampleAttachmentKey_AudioIndependentSampleDecoderRefreshCount")]
NSString AudioIndependentSampleDecoderRefreshCountKey { get; }
[Mac (10,10), Watch (6,0)]
[Mac (10,10)]
[Field ("kCMSampleBufferAttachmentKey_ForceKeyFrame")]
NSString ForceKeyFrameKey { get; }
}
@ -208,10 +208,10 @@ namespace CoreMedia {
[iOS (11,0), Mac (10,13), TV (11,0)]
NSData CameraIntrinsicMatrix { get; set; }
[iOS (13,0), Mac (10,15), TV (13,0), Watch (6,0)]
[iOS (13,0), Mac (10,15), TV (13,0)]
nint AudioIndependentSampleDecoderRefreshCount { get; set; }
[Mac (10,10), Watch (6,0)]
[Mac (10,10)]
bool ForceKeyFrame { get; set; }
}

Просмотреть файл

@ -212,7 +212,6 @@ namespace ExternalAccessory {
#if !MONOMAC
[NoTV]
[iOS (8,0)]
[Export ("configureAccessory:withConfigurationUIOnViewController:")]
void ConfigureAccessory (EAWiFiUnconfiguredAccessory accessory, UIViewController viewController);
#endif

Просмотреть файл

@ -11969,37 +11969,37 @@ namespace Foundation
[Export ("old")]
bool Old { [Bind ("isOld")] get; }
#endif
[iOS (7,0), Field ("NSProgressKindFile")]
[Field ("NSProgressKindFile")]
NSString KindFile { get; }
[iOS (7,0), Field ("NSProgressEstimatedTimeRemainingKey")]
[Field ("NSProgressEstimatedTimeRemainingKey")]
NSString EstimatedTimeRemainingKey { get; }
[iOS (7,0), Field ("NSProgressThroughputKey")]
[Field ("NSProgressThroughputKey")]
NSString ThroughputKey { get; }
[iOS (7,0), Field ("NSProgressFileOperationKindKey")]
[Field ("NSProgressFileOperationKindKey")]
NSString FileOperationKindKey { get; }
[iOS (7,0), Field ("NSProgressFileOperationKindDownloading")]
[Field ("NSProgressFileOperationKindDownloading")]
NSString FileOperationKindDownloading { get; }
[iOS (7,0), Field ("NSProgressFileOperationKindDecompressingAfterDownloading")]
[Field ("NSProgressFileOperationKindDecompressingAfterDownloading")]
NSString FileOperationKindDecompressingAfterDownloading { get; }
[iOS (7,0), Field ("NSProgressFileOperationKindReceiving")]
[Field ("NSProgressFileOperationKindReceiving")]
NSString FileOperationKindReceiving { get; }
[iOS (7,0), Field ("NSProgressFileOperationKindCopying")]
[Field ("NSProgressFileOperationKindCopying")]
NSString FileOperationKindCopying { get; }
[iOS (7,0), Field ("NSProgressFileURLKey")]
[Field ("NSProgressFileURLKey")]
NSString FileURLKey { get; }
[iOS (7,0), Field ("NSProgressFileTotalCountKey")]
[Field ("NSProgressFileTotalCountKey")]
NSString FileTotalCountKey { get; }
[iOS (7,0), Field ("NSProgressFileCompletedCountKey")]
[Field ("NSProgressFileCompletedCountKey")]
NSString FileCompletedCountKey { get; }
#if MONOMAC

Просмотреть файл

@ -831,7 +831,6 @@ namespace GameKit {
[NullAllowed] // by default this property is null
[Export ("authenticateHandler", ArgumentSemantic.Copy)]
#if WATCH
[Watch (3,0)]
Action<NSError> AuthenticateHandler { get; set; }
#elif !MONOMAC
Action<UIViewController, NSError> AuthenticateHandler { get; set; }

Просмотреть файл

@ -102,13 +102,13 @@ namespace HealthKit {
[NoWatch]
[Obsolete ("Use the overload that takes HKAnchoredObjectResultHandler2 instead")]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("initWithType:predicate:anchor:limit:completionHandler:")]
IntPtr Constructor (HKSampleType type, [NullAllowed] NSPredicate predicate, nuint anchor, nuint limit, HKAnchoredObjectResultHandler completion);
[NoWatch]
[Sealed]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("initWithType:predicate:anchor:limit:completionHandler:")]
IntPtr Constructor (HKSampleType type, [NullAllowed] NSPredicate predicate, nuint anchor, nuint limit, HKAnchoredObjectResultHandler2 completion);
@ -540,13 +540,11 @@ namespace HealthKit {
void AddSamples (HKSample [] samples, HKWorkout workout, HKStoreSampleAddedCallback callback);
[NoiOS]
[Watch (2,0)]
[Deprecated (PlatformName.WatchOS, 5, 0, message: "Use 'HKWorkoutSession.Start' instead.")]
[Export ("startWorkoutSession:")]
void StartWorkoutSession (HKWorkoutSession workoutSession);
[NoiOS]
[Watch (2,0)]
[Deprecated (PlatformName.WatchOS, 5, 0, message: "Use 'HKWorkoutSession.End' instead.")]
[Export ("endWorkoutSession:")]
void EndWorkoutSession (HKWorkoutSession workoutSession);
@ -954,7 +952,7 @@ namespace HealthKit {
[Export ("UUID", ArgumentSemantic.Strong)]
NSUuid Uuid { get; }
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("source", ArgumentSemantic.Strong)]
HKSource Source { get; }
@ -1226,7 +1224,6 @@ namespace HealthKit {
[Deprecated (PlatformName.WatchOS, 2,2, message: "Use 'ObjectType' property.")]
[Deprecated (PlatformName.iOS, 9,3, message: "Use 'ObjectType' property.")]
[Watch (2,0)]
[NullAllowed, Export ("sampleType", ArgumentSemantic.Strong)]
HKSampleType SampleType { get; }

Просмотреть файл

@ -99,7 +99,7 @@ namespace HomeKit {
[NoTV]
[NoWatch]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("identifier", ArgumentSemantic.Copy)]
NSUuid Identifier { get; }
@ -123,7 +123,7 @@ namespace HomeKit {
[NoTV]
[NoWatch]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("identifiersForBridgedAccessories", ArgumentSemantic.Copy)]
NSUuid [] IdentifiersForBridgedAccessories { get; }
@ -720,13 +720,13 @@ namespace HomeKit {
[NoTV]
[NoWatch]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0)]
[Availability (Deprecated = Platform.iOS_9_0)]
[Export ("users")]
HMUser [] Users { get; }
[NoTV]
[NoWatch]
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0, Message = "Use 'ManageUsers' instead.")]
[Availability (Deprecated = Platform.iOS_9_0, Message = "Use 'ManageUsers' instead.")]
[Async]
[Export ("addUserWithCompletionHandler:")]
void AddUser (Action<HMUser,NSError> completion);

Просмотреть файл

@ -231,7 +231,7 @@ namespace iAd {
[Export ("sharedClient")]
ADClient SharedClient { get; }
[Availability (Introduced = Platform.iOS_7_1, Deprecated = Platform.iOS_9_0, Message = "Replaced by 'RequestAttributionDetails'.")]
[Availability (Deprecated = Platform.iOS_9_0, Message = "Replaced by 'RequestAttributionDetails'.")]
[Export ("determineAppInstallationAttributionWithCompletionHandler:")]
void DetermineAppInstallationAttribution (AttributedToiAdCompletionHandler completionHandler);

Просмотреть файл

@ -3709,7 +3709,7 @@ namespace Intents {
[Export ("imageNamed:")]
INImage FromName (string name);
[Watch (7,0), TV (14,0), NoMac, iOS (14,0)]
[Watch (7,0), NoMac, iOS (14,0)]
[Static]
[Export ("systemImageNamed:")]
INImage FromSystem (string systemImageName);
@ -4390,13 +4390,9 @@ namespace Intents {
[NullAllowed, Export ("customIdentifier")]
string CustomIdentifier { get; }
[iOS (10, 0)]
[Mac (10, 12, 2, PlatformArchitecture.Arch64)]
[NullAllowed, Export ("relationship"), Protected]
NSString WeakRelationship { get; }
[iOS (10, 0)]
[Mac (10, 12, 2, PlatformArchitecture.Arch64)]
[Wrap ("INPersonRelationshipExtensions.GetValue (WeakRelationship)")]
INPersonRelationship Relationship { get; }

Просмотреть файл

@ -77,11 +77,10 @@ namespace JavaScriptCore {
#endregion
/* C API Bridging functions */
[Mac (10,9), iOS (7,0)]
[Static, Export ("contextWithJSGlobalContextRef:")]
JSContext FromJSGlobalContextRef (IntPtr nativeJsGlobalContextRef);
[Mac (10,9), iOS (7,0)]
[Export ("JSGlobalContextRef")]
IntPtr JSGlobalContextRefPtr { get; }
}
@ -295,7 +294,6 @@ namespace JavaScriptCore {
#endregion
[Mac (10,9), iOS (7,0)]
[Static, Export ("valueWithJSValueRef:inContext:")]
JSValue FromJSJSValueRef (IntPtr nativeJsValueRefvalue, JSContext context);

Просмотреть файл

@ -1225,7 +1225,7 @@ namespace MapKit {
interface MKLocalSearchRequest : NSCopying {
[DesignatedInitializer]
[TV (9,2)][NoWatch][iOS (9,3)][Mac (10,11,4)]
[NoWatch][iOS (9,3)][Mac (10,11,4)]
[Export ("initWithCompletion:")]
IntPtr Constructor (MKLocalSearchCompletion completion);
@ -2168,7 +2168,6 @@ namespace MapKit {
[DisableDefaultCtor]
interface MKLocalPointsOfInterestRequest : NSCopying
{
[TV (14, 0), NoWatch, Mac (11, 0), iOS (14, 0)]
[Field ("MKPointsOfInterestRequestMaxRadius")]
double RequestMaxRadius { get; }

Просмотреть файл

@ -60,7 +60,7 @@ namespace MediaPlayer {
[Field ("MPMediaEntityPropertyPersistentID")]
NSString PropertyPersistentID { get; }
[NoiOS, NoMac, Watch (5,0)]
[NoiOS, NoMac]
[Export ("persistentID")]
ulong PersistentID { get; }
@ -1443,7 +1443,6 @@ namespace MediaPlayer {
[iOS (11,0)]
[TV (11,0)]
[Mac (10,13)]
[Watch (5,0)]
[Field ("MPNowPlayingInfoPropertyServiceIdentifier")]
NSString PropertyServiceIdentifier { get; }
@ -1650,7 +1649,7 @@ namespace MediaPlayer {
[Export ("contentLimitsEnforced")]
bool ContentLimitsEnforced { get; }
[Availability (Introduced = Platform.iOS_8_4, Deprecated = Platform.iOS_9_0, Message = "Replaced by 'ContentLimitsEnforced'.")]
[Availability (Deprecated = Platform.iOS_9_0, Message = "Replaced by 'ContentLimitsEnforced'.")]
[Export ("contentLimitsEnabled")]
bool ContentLimitsEnabled { get; }

Просмотреть файл

@ -65,7 +65,6 @@ namespace Messages {
[Protocol]
interface MSMessagesAppTranscriptPresentation
{
[iOS (11,0)]
[Abstract]
[Export ("contentSizeThatFits:")]
CGSize GetContentSizeThatFits (CGSize size);

Просмотреть файл

@ -1908,9 +1908,7 @@ namespace MetalPerformanceShaders {
MPSMatrixDescriptor Create (nuint rows, nuint columns, nuint rowBytes, MPSDataType dataType);
[Static]
[Introduced (PlatformName.iOS, 10, 0)]
[Deprecated (PlatformName.iOS, 11, 0)]
[Introduced (PlatformName.TvOS, 10, 0)]
[Deprecated (PlatformName.TvOS, 11, 0)]
[Unavailable (PlatformName.MacCatalyst)]
[Export ("rowBytesFromColumns:dataType:")]
@ -7251,7 +7249,6 @@ namespace MetalPerformanceShaders {
[Export ("reloadWeightsAndBiasesFromDataSource")]
void ReloadWeightsAndBiasesFromDataSource ();
[TV (11,3), Mac (10,13,4), iOS (11,3)]
[Export ("reloadWeightsAndBiasesWithCommandBuffer:state:")]
void ReloadWeightsAndBiases (IMTLCommandBuffer commandBuffer, MPSCnnConvolutionWeightsAndBiasesState state);
}
@ -7964,7 +7961,6 @@ namespace MetalPerformanceShaders {
[NullAllowed, Export ("data", ArgumentSemantic.Retain)]
NSData Data { get; }
[TV (11, 0), Mac (10, 13), iOS (11, 0)]
[Export ("initWithDevice:neuronDescriptor:")]
[DesignatedInitializer]
IntPtr Constructor (IMTLDevice device, MPSNNNeuronDescriptor neuronDescriptor);

Просмотреть файл

@ -58,7 +58,7 @@ namespace MetricKit {
NSMeasurement<NSUnitDuration> CumulativeGpuTime { get; }
}
// NSUnit is added as a parent to ensure that the intermediate tmp dll can be comppiled
// NSUnit is added as a parent to ensure that the intermediate tmp dll can be compiled
// since at this stage the compiler does not know about the inheritance of NSDimension.
[NoWatch, NoTV, NoMac, iOS (13,0)]
[BaseType (typeof(NSDimension))]
@ -74,7 +74,7 @@ namespace MetricKit {
MXUnitSignalBars Bars { get; }
}
// NSUnit is added as a parent to ensure that the intermediate tmp dll can be comppiled
// NSUnit is added as a parent to ensure that the intermediate tmp dll can be compiled
// since at this stage the compiler does not know about the inheritance of NSDimension.
[NoWatch, NoTV, NoMac, iOS (13,0)]
[BaseType (typeof(NSDimension))]

Просмотреть файл

@ -237,7 +237,6 @@ namespace ModelIO {
[Export ("animations", ArgumentSemantic.Retain)]
IMDLObjectContainerComponent Animations { get; set; }
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("assetWithSCNScene:")]
MDLAsset FromScene (SCNScene scene);
@ -402,7 +401,6 @@ namespace ModelIO {
[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] set;
}
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("cameraWithSCNCamera:")]
MDLCamera FromSceneCamera (SCNCamera sceneCamera);
@ -475,7 +473,6 @@ namespace ModelIO {
// No documentation to confirm but this should be a constant (hence NSString).
NSString ColorSpace { get; set; }
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("lightWithSCNLight:")]
MDLLight FromSceneLight (SCNLight sceneLight);
@ -574,7 +571,6 @@ namespace ModelIO {
[Export ("materialFace", ArgumentSemantic.Assign)]
MDLMaterialFace MaterialFace { get; set; }
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("materialWithSCNMaterial:")]
MDLMaterial FromSceneMaterial (SCNMaterial material);
@ -1010,7 +1006,6 @@ namespace ModelIO {
[Export ("generateLightMapVertexColorsWithLightsToConsider:objectsToConsider:vertexAttributeNamed:")]
bool GenerateLightMapVertexColors (MDLLight [] lightsToConsider, MDLObject [] objectsToConsider, string vertexAttributeName);
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("meshWithSCNGeometry:")]
MDLMesh FromGeometry (SCNGeometry geometry);
@ -1246,7 +1241,6 @@ namespace ModelIO {
[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")]
MDLAxisAlignedBoundingBox GetBoundingBox (double atTime);
[iOS (9,0), Mac(10,11)]
[Static]
[Export ("objectWithSCNNode:")]
MDLObject FromNode (SCNNode node);

Просмотреть файл

@ -492,7 +492,7 @@ namespace PassKit {
[NullAllowed, Export ("billingContact", ArgumentSemantic.Strong)]
PKContact BillingContact { get; set; }
[Watch (3,0)][iOS (10,0)]
[iOS (10,0)]
[Static]
[Export ("availableNetworks")]
NSString[] AvailableNetworks { get; }
@ -910,12 +910,10 @@ namespace PassKit {
NSString CartesBancaires { get; }
[iOS (9,2)]
[Watch (2,2)]
[Field ("PKPaymentNetworkChinaUnionPay")]
NSString ChinaUnionPay { get; }
[iOS (9,2)]
[Watch (2,2)]
[Field ("PKPaymentNetworkInterac")]
NSString Interac { get; }

Просмотреть файл

@ -37,7 +37,7 @@ namespace ReplayKit {
[Export ("previewControllerDelegate", ArgumentSemantic.Weak)][NullAllowed]
IRPPreviewViewControllerDelegate PreviewControllerDelegate { get; set; }
[TV (10, 0), NoiOS]
[NoiOS]
[NoMac]
[Export ("mode", ArgumentSemantic.Assign)]
RPPreviewViewControllerMode Mode { get; set; }

Просмотреть файл

@ -200,11 +200,9 @@ namespace SceneKit {
void ResumeAnimation (NSString key);
[Abstract]
[Watch (3, 0)]
[Deprecated (PlatformName.WatchOS, 4, 0, message: "Use 'SCNAnimationPlayer.Paused' instead.")]
[TV (9, 0)]
[Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'SCNAnimationPlayer.Paused' instead.")]
[iOS (8, 0)]
[Deprecated (PlatformName.iOS, 11, 0, message: "Use 'SCNAnimationPlayer.Paused' instead.")]
[Mac (10, 9)]
[Deprecated (PlatformName.MacOSX, 10, 13,message: "Use 'SCNAnimationPlayer.Paused' instead.")]
@ -397,15 +395,15 @@ namespace SceneKit {
[Static, Export ("camera")]
SCNCamera Create ();
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("projectionTransform")]
SCNMatrix4 ProjectionTransform { get; [Mac (10,9)] set; }
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("automaticallyAdjustsZRange")]
bool AutomaticallyAdjustsZRange { get; set; }
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("orthographicScale")]
double OrthographicScale { get; set; }
@ -413,7 +411,7 @@ namespace SceneKit {
[Deprecated (PlatformName.iOS, 11, 0, message: "Use 'FocusDistance' instead.")]
[Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'FocusDistance' instead.")]
[Deprecated (PlatformName.WatchOS, 4, 0, message: "Use 'FocusDistance' instead.")]
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("focalDistance")]
nfloat FocalDistance { get; set; }
@ -421,7 +419,7 @@ namespace SceneKit {
[Deprecated (PlatformName.iOS, 11, 0, message: "Use 'FocusDistance' instead.")]
[Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'FocusDistance' instead.")]
[Deprecated (PlatformName.WatchOS, 4, 0, message: "Use 'FocusDistance' instead.")]
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("focalSize")]
nfloat FocalSize { get; set; }
@ -429,7 +427,7 @@ namespace SceneKit {
[Deprecated (PlatformName.iOS, 11, 0, message: "Use 'FStop' instead.")]
[Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'FStop' instead.")]
[Deprecated (PlatformName.WatchOS, 4, 0, message: "Use 'FStop' instead.")]
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("focalBlurRadius")]
nfloat FocalBlurRadius { get; set; }
@ -437,7 +435,7 @@ namespace SceneKit {
[Deprecated (PlatformName.iOS, 11, 0, message: "Use 'FStop' instead with FStop = SensorHeight / Aperture.")]
[Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'FStop' instead with FStop = SensorHeight / Aperture.")]
[Deprecated (PlatformName.WatchOS, 4, 0, message: "Use 'FStop' instead with FStop = SensorHeight / Aperture.")]
[iOS (8,0)][Mac (10,9)]
[Mac (10,9)]
[Export ("aperture")]
nfloat Aperture { get; set; }
@ -521,7 +519,7 @@ namespace SceneKit {
[Export ("colorGrading")]
SCNMaterialProperty ColorGrading { get; }
[iOS (8,0)][Mac (10,10)]
[Mac (10,10)]
[Export ("categoryBitMask")]
nuint CategoryBitMask { get; set; }
@ -1130,7 +1128,7 @@ namespace SceneKit {
[Field ("SCNHitTestRootNodeKey")]
NSString RootNodeKey { get; }
[Mac (10,9), iOS (8,0)]
[Mac (10,9)]
[Field ("SCNHitTestIgnoreHiddenNodesKey")]
NSString IgnoreHiddenNodesKey { get; }
@ -1320,7 +1318,7 @@ namespace SceneKit {
[Export ("zFar")]
nfloat ZFar { get; set; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("categoryBitMask")]
nuint CategoryBitMask { get; set; }
@ -2644,15 +2642,14 @@ namespace SceneKit {
[Mac (10,9), iOS (8,0)]
[Field ("SCNSceneExportDestinationURL")]
NSString ExportDestinationUrl { get; }
[Mac (10,10), iOS (8,0)] // More 32-bit brokenness - 17710842
[Mac (10,10)] // More 32-bit brokenness - 17710842
[Export ("physicsWorld")]
SCNPhysicsWorld PhysicsWorld { get; }
[Mac (10,9), iOS (8,0)]
[Mac (10,9)]
[Export ("background")]
SCNMaterialProperty Background { get; }
@ -2660,42 +2657,41 @@ namespace SceneKit {
[Export ("lightingEnvironment")]
SCNMaterialProperty LightingEnvironment { get; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("fogStartDistance")]
nfloat FogStartDistance { get; set; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("fogEndDistance")]
nfloat FogEndDistance { get; set; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("fogDensityExponent")]
nfloat FogDensityExponent { get; set; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("fogColor", ArgumentSemantic.Retain)]
NSObject FogColor { get; set; }
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Export ("paused")]
bool Paused { [Bind ("isPaused")] get; set; }
[Mac (10,9), iOS (8,0)]
[Static, Export ("sceneNamed:")]
SCNScene FromFile (string name);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Static, Export ("sceneNamed:inDirectory:options:")]
[EditorBrowsable (EditorBrowsableState.Advanced)]
SCNScene FromFile (string name, [NullAllowed] string directory, [NullAllowed] NSDictionary options);
[Mac (10,10), iOS (8,0)]
[Mac (10,10)]
[Static, Wrap ("FromFile (name, directory, options.GetDictionary ())")]
SCNScene FromFile (string name, string directory, SCNSceneLoadingOptions options);
// Keeping here the same name WriteToUrl for iOS and friends because it is how it was bound
// initialy for macOS and having it named diferently would hurt shared code
[TV (10, 0), NoWatch, Mac (10, 9), iOS (10, 0)]
[TV (10, 0), NoWatch, iOS (10, 0)]
[Export ("writeToURL:options:delegate:progressHandler:")]
[EditorBrowsable (EditorBrowsableState.Advanced)]
bool WriteToUrl (NSUrl url,
@ -2703,7 +2699,7 @@ namespace SceneKit {
[NullAllowed] ISCNSceneExportDelegate aDelegate,
[NullAllowed] SCNSceneExportProgressHandler exportProgressHandler);
[TV (10, 0), NoWatch, Mac (10, 9), iOS (10, 0)]
[TV (10, 0), NoWatch, iOS (10, 0)]
[Wrap ("WriteToUrl (url, options.GetDictionary (), handler, exportProgressHandler)")]
bool WriteToUrl (NSUrl url, SCNSceneLoadingOptions options, ISCNSceneExportDelegate handler, SCNSceneExportProgressHandler exportProgressHandler);
@ -2736,7 +2732,7 @@ namespace SceneKit {
[Field ("SCNSceneFrameRateAttributeKey")]
NSString FrameRateAttributeKey { get; }
[iOS (8,0)][Mac (10,10)]
[Mac (10,10)]
[Field ("SCNSceneUpAxisAttributeKey")]
NSString UpAxisAttributeKey { get; }
@ -2875,34 +2871,34 @@ namespace SceneKit {
NSString UseSafeModeKey { get; }
[Mac(10,10)]
[iOS (8,0)] // header said NA and docs says "Available in iOS 8.0 through iOS 8.2." but it's back on iOS11
// header said NA and docs says "Available in iOS 8.0 through iOS 8.2." but it's back on iOS11
[TV (11,0), Watch (4,0)]
[Field ("SCNSceneSourceConvertUnitsToMetersKey")]
NSString ConvertUnitsToMetersKey { get; }
[Mac(10,10)]
[iOS (8,0)] // header said NA and docs says "Available in iOS 8.0 through iOS 8.2." but it's back on iOS11
// header said NA and docs says "Available in iOS 8.0 through iOS 8.2." but it's back on iOS11
[TV (11,0), Watch (4,0)]
[Field ("SCNSceneSourceConvertToYUpKey")]
NSString ConvertToYUpKey { get; }
[Mac(10,10), iOS(8,0)]
[Mac(10,10)]
[Field ("SCNSceneSourceAnimationImportPolicyKey")]
NSString AnimationImportPolicyKey { get; }
[Mac(10,10), iOS(8,0)]
[Mac(10,10)]
[Field ("SCNSceneSourceAnimationImportPolicyPlay")]
NSString AnimationImportPolicyPlay { get; }
[Mac(10,10), iOS(8,0)]
[Mac(10,10)]
[Field ("SCNSceneSourceAnimationImportPolicyPlayRepeatedly")]
NSString AnimationImportPolicyPlayRepeatedly { get; }
[Mac(10,10), iOS(8,0)]
[Mac(10,10)]
[Field ("SCNSceneSourceAnimationImportPolicyDoNotPlay")]
NSString AnimationImportPolicyDoNotPlay { get; }
[Mac(10,10), iOS(8,0)]
[Mac(10,10)]
[Field ("SCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBase")]
NSString AnimationImportPolicyPlayUsingSceneTimeBase { get; }
@ -3472,7 +3468,7 @@ namespace SceneKit {
[Export ("stop:")]
void Stop ([NullAllowed] NSObject sender);
[iOS (8,0)][Mac (10,10)]
[Mac (10,10)]
[Export ("snapshot")]
NSImage Snapshot ();
@ -3480,7 +3476,7 @@ namespace SceneKit {
[Export ("preferredFramesPerSecond")]
nint PreferredFramesPerSecond { get; set; }
[iOS (8,0)][Mac (10,10)]
[Mac (10,10)]
[Export ("antialiasingMode")]
SCNAntialiasingMode AntialiasingMode { get; set; }
@ -3628,7 +3624,7 @@ namespace SceneKit {
[Export ("influenceFactor")]
nfloat InfluenceFactor { get; set; }
[Mac (10, 10), iOS (8,0)]
[Mac (10, 10)]
[TV (11,0)][Watch (4,0)]
[Export ("enabled")]
bool Enabled { [Bind ("isEnabled")] get; set; }

Просмотреть файл

@ -59,7 +59,7 @@ namespace Security {
[Field ("kSecPolicyAppleRevocation")]
NSString AppleRevocation { get; }
[iOS (7,0)][Mac (10,9)]
[Mac (10,9)]
[Field ("kSecPolicyApplePassbookSigning")]
NSString ApplePassbookSigning { get; }
@ -84,7 +84,7 @@ namespace Security {
[Field ("kSecPolicyRevocationFlags")]
NSString RevocationFlags { get; }
[iOS (7,0)][Mac (10,9)]
[Mac (10,9)]
[Field ("kSecPolicyTeamIdentifier")]
NSString TeamIdentifier { get; }
}

Просмотреть файл

@ -3251,22 +3251,19 @@ namespace SpriteKit {
#if !WATCH
// Static Category from GameplayKit
[iOS (10,0), TV (10,0), NoWatch, Mac (10,12)]
[NoWatch]
[Static]
[Export ("tileMapNodesWithTileSet:columns:rows:tileSize:fromNoiseMap:tileTypeNoiseMapThresholds:")]
SKTileMapNode[] FromTileSet (SKTileSet tileSet, nuint columns, nuint rows, CGSize tileSize, GKNoiseMap noiseMap, NSNumber[] thresholds);
#endif
[iOS (9,0), Mac (10,11)]
[Export ("attributeValues", ArgumentSemantic.Copy)]
NSDictionary<NSString, SKAttributeValue> AttributeValues { get; set; }
[iOS (9,0), Mac(10,11)]
[Export ("valueForAttributeNamed:")]
[return: NullAllowed]
SKAttributeValue GetValue (string key);
[iOS (9,0), Mac(10,11)]
[Export ("setValue:forAttributeNamed:")]
void SetValue (SKAttributeValue value, string key);
}

Просмотреть файл

@ -15314,12 +15314,10 @@ namespace UIKit {
[iOS (8,0)]
partial interface UITraitEnvironment {
[Abstract]
[iOS (8,0)]
[Export ("traitCollection")]
UITraitCollection TraitCollection { get; }
[Abstract]
[iOS (8,0)]
[Export ("traitCollectionDidChange:")]
void TraitCollectionDidChange ([NullAllowed] UITraitCollection previousTraitCollection);
}
@ -19608,7 +19606,7 @@ namespace UIKit {
interface UIUserActivityRestoring
{
[Abstract]
[iOS (8,0), TV(12,0)]
[TV(12,0)]
[Export ("restoreUserActivityState:")]
void RestoreUserActivityState (NSUserActivity activity);
}
@ -21089,7 +21087,6 @@ namespace UIKit {
[BaseType (typeof (NSObject))]
interface UITextFormattingCoordinatorDelegate {
[iOS (13,0)]
[Abstract]
[Export ("updateTextAttributesWithConversionHandler:")]
void UpdateTextAttributes (UITextAttributesConversionHandler conversionHandler);

Просмотреть файл

@ -3185,26 +3185,21 @@ namespace Vision {
// ('Revision', 'WeakSupportedRevisions', 'SupportedRevisions', 'DefaultRevision' and 'CurrentRevision')
// into subclasses so the correct class_ptr is used for the static members and the right enum type is also used.
[TV (12,0), Mac (10,14), iOS (12,0)]
[Export ("revision")]
VNGenerateOpticalFlowRequestRevision Revision { get; set; }
[TV (12,0), Mac (10,14), iOS (12,0)]
[Static]
[Export ("supportedRevisions", ArgumentSemantic.Copy)]
NSIndexSet WeakSupportedRevisions { get; }
[TV (12,0), Mac (10,14), iOS (12,0)]
[Static]
[Wrap ("GetSupportedVersions<VNGenerateOpticalFlowRequestRevision> (WeakSupportedRevisions)")]
VNGenerateOpticalFlowRequestRevision [] SupportedRevisions { get; }
[TV (12,0), Mac (10,14), iOS (12,0)]
[Static]
[Export ("defaultRevision")]
VNGenerateOpticalFlowRequestRevision DefaultRevision { get; }
[TV (12,0), Mac (10,14), iOS (12,0)]
[Static]
[Export ("currentRevision")]
VNGenerateOpticalFlowRequestRevision CurrentRevision { get; }

Просмотреть файл

@ -859,11 +859,11 @@ namespace WebKit
[Export ("allowsInlineMediaPlayback")]
bool AllowsInlineMediaPlayback { get; set; }
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0, Message = "Use 'RequiresUserActionForMediaPlayback' or 'MediaTypesRequiringUserActionForPlayback' instead.")]
[Availability (Deprecated = Platform.iOS_9_0, Message = "Use 'RequiresUserActionForMediaPlayback' or 'MediaTypesRequiringUserActionForPlayback' instead.")]
[Export ("mediaPlaybackRequiresUserAction")]
bool MediaPlaybackRequiresUserAction { get; set; }
[Availability (Introduced = Platform.iOS_8_0, Deprecated = Platform.iOS_9_0, Message = "Use 'AllowsAirPlayForMediaPlayback' instead.")]
[Availability (Deprecated = Platform.iOS_9_0, Message = "Use 'AllowsAirPlayForMediaPlayback' instead.")]
[Export ("mediaPlaybackAllowsAirPlay")]
bool MediaPlaybackAllowsAirPlay { get; set; }

Просмотреть файл

@ -910,7 +910,6 @@ namespace UIKit {
[Export ("typesetterBehavior")]
NSTypesetterBehavior TypesetterBehavior { get; set; }
[iOS (7,0)]
[Export ("allowsNonContiguousLayout")]
bool AllowsNonContiguousLayout { get; set; }

Просмотреть файл

@ -63,6 +63,62 @@ namespace Introspection {
#endif
}
bool FoundInProtocols (MemberInfo m, Type t)
{
var method = m.ToString ();
foreach (var intf in t.GetInterfaces ()) {
var p = Assembly.GetType (intf.FullName);
if (p != null) {
// here we want inherited members so we don't have to hunt inherited interfaces recursively
foreach (var pm in p.GetMembers ()) {
if (pm.ToString () != method)
continue;
return true;
}
foreach (var ca in p.GetCustomAttributes<Foundation.ProtocolMemberAttribute> ()) {
// TODO check signature in [ProtocolMember]
if (ca.IsProperty) {
if (m.Name == "get_" + ca.Name)
return true;
if (m.Name == "set_" + ca.Name)
return true;
}
if (m.Name == ca.Name)
return true;
}
}
p = Assembly.GetType (intf.Namespace + "." + intf.Name.Substring (1));
if (p != null) {
// here we want inherited members so we don't have to hunt inherited interfaces recursively
foreach (var pm in p.GetMembers ()) {
if (pm.ToString () != method)
continue;
return true;
}
}
p = Assembly.GetType (intf.Namespace + "." + intf.Name.Substring (1) + "_Extensions");
if (p != null) {
// here we want inherited members so we don't have to hunt inherited interfaces recursively
foreach (var pm in p.GetMembers ()) {
// map extension method to original @optional
if (m.Name != pm.Name)
continue;
var parameters = (pm as MethodInfo).GetParameters ();
if (parameters.Length == 0)
continue;
var pattern = "(" + parameters [0].ParameterType.FullName;
if (parameters.Length > 1)
pattern += ", ";
var s = pm.ToString ().Replace (pattern, "(");
if (s != method)
continue;
return true;
}
}
}
return false;
}
[Test]
public void Introduced ()
{
@ -72,22 +128,41 @@ namespace Introspection {
if (LogProgress)
Console.WriteLine ($"T: {t}");
var ta = CheckAvailability (t);
foreach (var m in t.GetMembers ()) {
foreach (var m in t.GetMembers (BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)) {
if (LogProgress)
Console.WriteLine ($"M: {m}");
var ma = CheckAvailability (m);
if (ta == null || ma == null)
continue;
// need to skip members that are copied to satisfy interfaces (protocol members)
if (FoundInProtocols (m, t))
continue;
// Duplicate checks, e.g. same attribute on member and type (extranous metadata)
if (ma.Version == ta.Version) {
// about 4000
// AddErrorLine ($"[FAIL] {ma.Version} (Member) == {ta.Version} (Type) on '{m}'.");
AddErrorLine ($"[FAIL] {ma.Version} ({m}) == {ta.Version} ({t})");
}
// Consistency checks, e.g. member lower than type
// note: that's valid in some cases, like a new base type being introduced
if (ma.Version < ta.Version) {
// about 8000
// AddErrorLine ($"[FAIL] {ma.Version} (Member) < {ta.Version} (Type) on '{m}'.");
switch (t.FullName) {
case "CoreBluetooth.CBPeer":
switch (m.ToString ()) {
// type added later and existing property was moved
case "Foundation.NSUuid get_Identifier()":
case "Foundation.NSUuid Identifier":
continue;
}
break;
case "MetricKit.MXUnitAveragePixelLuminance":
case "MetricKit.MXUnitSignalBars":
// design bug wrt generics leading to redefinition of some members in subclasses
if (m.ToString () == "System.String Symbol")
continue;
break;
}
AddErrorLine ($"[FAIL] {ma.Version} ({m}) < {ta.Version} ({t})");
}
}
}