+1 Sent from my iPhone
> On Jul 13, 2016, at 18:39, Arnold Schwaighofer via swift-evolution > <[email protected]> wrote: > > Int.init(ObjectIdentifier) and UInt.init(ObjectIdentifier) should have a > 'bitPattern:’ label to make it clear at the use site that we interpret the > value as a bit pattern. > > In Swift we have ObjectIdentifier values which uniquely identify a class > instance or metatype. They are implemented as a struct which holds the value > of the reference to the instance or metatype as a raw pointer. > > /// A unique identifier for a class instance or metatype. > public struct ObjectIdentifier : Hashable, Comparable { > internal let _value: Builtin.RawPointer > ... > } > > > We have constructors for Int and Uint that capture this value. These > constructors don’t have an argument label. > > extension UInt { > /// Create a `UInt` that captures the full value of `objectID`. > public init(_ objectID: ObjectIdentifier) { > self.init(Builtin.ptrtoint_Word(objectID._value)) > } > } > > extension Int { > /// Create an `Int` that captures the full value of `objectID`. > public init(_ objectID: ObjectIdentifier) { > self.init(bitPattern: UInt(objectID)) > } > } > > This proposals suggest adding a label ‘bitPattern’ to the constructor: > Int.init(bitPattern: ObjectIdentifier). > > extension UInt { > /// Create a `UInt` that captures the full value of `objectID`. > public init(bitPattern objectID: ObjectIdentifier) { > self.init(Builtin.ptrtoint_Word(objectID._value)) > } > } > > extension Int { > /// Create an `Int` that captures the full value of `objectID`. > public init(bitPattern objectID: ObjectIdentifier) { > self.init(bitPattern: UInt(objectID)) > } > } > > > Motivation > ========== > > Adding a label ‘bitPattern’ to the constructors makes it clear that we > interpret the pointer value as a bit pattern at the use site. It is similar > to what we do in other APIs, for example in "UInt(bitPattern: > UnsafePointer<Void>(value)))" > > Impact on existing code > ======================= > > Existing code will have to add the bitPattern label. > > > Alternatives > ============ > > Leave as is. > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
