[swift-evolution] [Review] SE-0107: UnsafeRawPointer API "initialize(from:forwardToCount:)"

Xiaodi Wu xiaodi.wu at gmail.com
Tue Jul 5 11:05:57 CDT 2016


I don't mind `initialize(from:forwardToCount:)`, but I do have trouble with
Brent's suggestion of `initialize(from:backwardFromCount:)`. It adds
ambiguity as to whether the pointer in the first argument points to the 0th
element or the (count - 1)th element from which initializing is proceeding
backward, a problem that does not exist with the currently proposed version
`initializeBackward(from:count:)`. I don't find the symmetry wins
compelling enough to overcome that additional ambiguity.


On Tue, Jul 5, 2016 at 10:23 Andrew Trick via swift-evolution <
swift-evolution at swift.org> wrote:

>
> On Jul 2, 2016, at 10:10 PM, Brent Royal-Gordon via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> I have a pile of naming quibbles; rather than describe them all in prose
> (which turned into a mess), I've annotated parts of the "Full
> UnsafeRawPointer API" section in a gist: <
> https://gist.github.com/brentdax/8f4ed4decafc1d18c4441092baa13cfe>.
>
>
> I want to call this out separately because it’s not specific to my
> proposal and changes the existing UnsafePointer API.
>
> Brent’s suggestion is to change `initialize(from:count:)` to
> `initialize(from:forwardToCount:)` for symmetry with the backward
> operations. It makes perfect sense to me, and it does a better job of
> conveying that a sequence of elements will be read out of “from”.
>
> Any objections?
>
>   // I'm not happy with the asymmetry of these forwards/backwards
>   // pairs.
>   //
>   // func initialize<T>(from: UnsafePointer<T>, count: Int)
>   //   -> UnsafeMutablePointer<T>
>   // func initializeBackward<T>(from: UnsafePointer<T>, count: Int)
>   //   -> UnsafeMutablePointer<T>
>   func initialize<T>(from: UnsafePointer<T>, forwardToCount: Int)
>     -> UnsafeMutablePointer<T>
>   func initialize<T>(from: UnsafePointer<T>, backwardFromCount: Int)
>     -> UnsafeMutablePointer<T>
>
>   // More detailed thoughts on redesigining `move` methods in the
>   // email, but for now:
>   //
>   // func moveInitialize<T>(from: UnsafePointer<T>, count: Int)
>   //   -> UnsafeMutablePointer<T>
>   // func moveInitializeBackward<T>(from: UnsafePointer<T>, count: Int)
>   //   -> UnsafeMutablePointer<T>
>   func moveInitialize<T>(from: UnsafePointer<T>, forwardToCount: Int)
>     -> UnsafeMutablePointer<T>
>   func moveInitialize<T>(from: UnsafePointer<T>, backwardFromCount: Int)
>     -> UnsafeMutablePointer<T>
>
> Andy
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160705/1cb943f9/attachment.html>


More information about the swift-evolution mailing list