//FIXME: MonoPInvokeCallback static void *InitWithCopy(void *dest, void *src, TypeMetadata *typeMetadata) { var swiftType = GetManagedSwiftType(typeMetadata); swiftType.Transfer(dest, src, TransferFuncType.InitWithCopy); return(dest); }
//FIXME: MonoPInvokeCallback static void *AssignWithTake(void *dest, void *src, TypeMetadata *typeMetadata) { var swiftType = GetManagedSwiftType(typeMetadata); swiftType.Transfer(dest, src, TransferFuncType.AssignWithTake); return(dest); }
static ManagedSwiftType GetManagedSwiftType(TypeMetadata *metadata) { Debug.Assert(metadata->Kind == MetadataKinds.Struct); // subtract 1 because GCHandle is right before field offset vector var offs = ((StructDescriptor *)metadata->TypeDescriptor)->FieldOffsetVectorOffset - 1; var loc = (IntPtr *)metadata + offs; var ptr = *loc; return((ManagedSwiftType)GCHandle.FromIntPtr(ptr).Target); }
//FIXME: MonoPInvokeCallback static void Destroy(void *obj, TypeMetadata *typeMetadata) { var swiftType = GetManagedSwiftType(typeMetadata); swiftType.Destroy(obj); }
internal static extern void ViewBackground(void *resultPointer, void *viewPointer, void *backgroundPointer, TypeMetadata *viewMetatdata, TypeMetadata *backgroundMetatdata, ProtocolWitnessTable *viewConformance, ProtocolWitnessTable *backgroundConformance);
internal static extern void ViewOpacity(void *resultPointer, void *viewPointer, double opacity, TypeMetadata *viewMetatdata, ProtocolWitnessTable *viewConformance);
internal static extern void Init(void *result, HorizontalAlignment align, bool spacingHasValue, double spacing, void *contentData, TypeMetadata *contentType, ProtocolWitnessTable *contentViewConformance);
internal static extern void Init(void *result, void *valuePtr, TypeMetadata *valueMetadata);
internal static extern void Init(void *result, PtrFunc action, PtrFunc dispose, IntPtr ctx, void *labelData, TypeMetadata *labelType, ProtocolWitnessTable *labelViewConformance);
static extern IntPtr Init(void *viewData, TypeMetadata *viewType, ProtocolWitnessTable *viewConformance);