public SwiftOptional() { unsafe { fixed(byte *p = StructMarshal.Marshaler.PrepareNominal(this)) { NativeMethodsForSwiftOptional.NewNone(new IntPtr(p), StructMarshal.Marshaler.Metatypeof(typeof(T))); } } }
public SwiftOptional(T value) { var valueType = typeof(T); if (valueType.IsClass && EqualityComparer <T> .Default.Equals(value, default(T))) { throw new ArgumentNullException(nameof(value), $"SwiftOptional<{typeof (T).Name}> constructor requires a non-null object instance."); } unsafe { fixed(byte *retvalSwiftDataPtr = StructMarshal.Marshaler.PrepareNominal(this)) { var valPtr = stackalloc byte [StructMarshal.Marshaler.Strideof(typeof(T))]; var valIntPtr = new IntPtr(valPtr); valIntPtr = StructMarshal.Marshaler.ToSwift(value, valIntPtr); NativeMethodsForSwiftOptional.NewSome(new IntPtr(retvalSwiftDataPtr), valIntPtr, StructMarshal.Marshaler.Metatypeof(typeof(T))); StructMarshal.Marshaler.ReleaseSwiftPointer(typeof(T), valIntPtr); } } }
public static SwiftMetatype GetSwiftMetatype() { return(NativeMethodsForSwiftOptional.PIMetadataAccessor_SwiftOptional(SwiftMetadataRequest.Complete, StructMarshal.Marshaler.Metatypeof(typeof(T)))); }