[NearbyInteraction][Xcode12] Add manual binding for NINearbyObjectDirectionNotAvailable (#9346)

* nearby interaction manual update + test
This commit is contained in:
Whitney Schmidt 2020-08-12 15:43:00 -04:00 коммит произвёл GitHub
Родитель be26e31ca8
Коммит fb665c8c68
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 82 добавлений и 21 удалений

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

@ -14,6 +14,7 @@ using System;
namespace NearbyInteraction {
[NoWatch, NoTV, NoMac, iOS (14,0)]
[ErrorDomain ("NIErrorDomain")]
[Native]
public enum NIErrorCode : long
{

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

@ -0,0 +1,41 @@
//
// NearbyInteraction manual bindings
//
// Authors:
// Whitney Schmidt <whschm@microsoft.com>
//
// Copyright 2020 Microsoft Inc.
//
using System;
using System.Runtime.InteropServices;
using CoreFoundation;
using Foundation;
using ObjCRuntime;
using Vector3 = global::OpenTK.Vector3;
#if __IOS__
namespace NearbyInteraction {
partial class NINearbyObject
{
static Vector3? _DirectionNotAvailable;
// TODO: https://github.com/xamarin/maccore/issues/2274
// We do not have generator support to trampoline Vector3 -> vector_float3 for Fields
[Field ("NINearbyObjectDirectionNotAvailable", "NearbyInteraction")]
public static Vector3 DirectionNotAvailable {
get {
if (_DirectionNotAvailable == null) {
unsafe {
Vector3 *pointer = (Vector3 *) Dlfcn.GetIndirect (Libraries.NearbyInteraction.Handle, "NINearbyObjectDirectionNotAvailable");
_DirectionNotAvailable = *pointer;
}
}
return (Vector3)_DirectionNotAvailable;
}
}
}
}
#endif //__IOS__

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

@ -1202,6 +1202,9 @@ NETWORK_SOURCES = \
NEARBYINTERACTION_API_SOURCES = \
NearbyInteraction/Enums.cs \
NEARBYINTERACTION_SOURCES = \
NearbyInteraction/NINearbyObject.cs \
# NetworkExtension
NETWORKEXTENSION_API_SOURCES = \

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

@ -15,14 +15,6 @@ using Vector3 = global::OpenTK.Vector3;
namespace NearbyInteraction {
[NoWatch, NoTV, NoMac, iOS (14, 0)]
[Static]
interface NIErrorDomain
{
[Field ("NIErrorDomain")]
NSString Domain { get; }
}
[NoWatch, NoTV, NoMac, iOS (14,0)]
[BaseType (typeof (NSObject))]
[DisableDefaultCtor]
@ -64,16 +56,6 @@ namespace NearbyInteraction {
[Field ("NINearbyObjectDistanceNotAvailable")]
float DistanceNotAvailable { get; }
// TODO: https://github.com/xamarin/maccore/issues/2274
// We do not have generator support to trampoline Vector3 -> vector_float3 for Fields
// There is support for Vector3 -> vector_float3 for properties
// error BI1014: bgen: Unsupported type for Fields: global::OpenTK.Vector3 for 'NearbyInteraction.NINearbyObjectDistance DirectionNotAvailable'.
// extern simd_float3 NINearbyObjectDirectionNotAvailable __attribute__((availability(ios, introduced=14.0))) __attribute__((availability(macos, unavailable))) __attribute__((availability(watchos, unavailable))) __attribute__((availability(tvos, unavailable))) __attribute__((visibility("default"))) __attribute__((availability(swift, unavailable)));
// [Unavailable (PlatformName.Swift)]
// [NoWatch, NoTV, NoMac, iOS (14, 0)]
// [Field ("NINearbyObjectDirectionNotAvailable")]
// [unsupported ExtVector: float __attribute__((ext_vector_type(3)))] NINearbyObjectDirectionNotAvailable { get; }
}
[NoWatch, NoTV, NoMac, iOS (14,0)]

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

@ -0,0 +1,36 @@
// Copyright 2020 Microsoft Corp.
#if __IOS__
using System;
using Foundation;
using ObjCRuntime;
using NearbyInteraction;
using NUnit.Framework;
using OpenTK;
namespace MonoTouchFixtures.NearbyInteraction {
[TestFixture]
[Preserve (AllMembers = true)]
public class NINearbyObjectTest {
[Test]
public void DirectionNotAvailable ()
{
TestRuntime.AssertXcodeVersion (12, 0);
Vector3 vect = NINearbyObject.DirectionNotAvailable;
unsafe {
Vector3* v = &vect;
byte* ptr = (byte*) v;
byte zero = 0;
for (var i = 0; i < sizeof (Vector3); i++)
Assert.That (ptr [i], Is.EqualTo (zero), $"Position {i}");
}
}
}
}
#endif // __IOS__

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

@ -285,6 +285,7 @@
<Folder Include="Compression\" />
<Folder Include="BackgroundTasks\" />
<Folder Include="WebKit\" />
<Folder Include="NearbyInteraction\" />
</ItemGroup>
<ItemGroup>
<Content Include="AudioToolbox\1.caf" />

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

@ -1,3 +0,0 @@
## TODO: https://github.com/xamarin/maccore/issues/2274
## We do not have generator support to trampoline Vector3 -> vector_float3 for Fields
!missing-field! NINearbyObjectDirectionNotAvailable not bound