MIDIMetaEvent and MIDIEventUserData are both examples of framework provided
types which rely on flexible member arrays. Their last member is
(officially) an array of UInt8 with 1 element. In practice, developers are
meant to allocate enough space for an array of the necessary length along
with the rest of the struct.

These members come into swift as single element tuples. I propose either
automatic import of these as Array or UnsafeReference.

Example of the current situation:

/*!

@struct MIDIMetaEvent

@discussion The parameters to specify a MIDI meta event

*/

public struct MIDIMetaEvent {



    public var metaEventType: UInt8

    public var unused1: UInt8

    public var unused2: UInt8

    public var unused3: UInt8

    public var dataLength: UInt32

    public var data: (UInt8)

    public init()

    public init(metaEventType: UInt8, unused1: UInt8, unused2: UInt8,
unused3: UInt8, dataLength: UInt32, data: (UInt8))

}


/*!

@struct MusicEventUserData

@discussion Provides a general struct for specifying a user defined event.

@field length

the size in bytes of the data

@field data

size bytes of user defined event data

*/

public struct MusicEventUserData {



    public var length: UInt32

    public var data: (UInt8)

    public init()

    public init(length: UInt32, data: (UInt8))

}
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to