[swift-dev] Starter project: Initializers for converting UnsafePointers to integers

Michael Buckley michael at buckleyisms.com
Tue Dec 8 20:26:32 CST 2015


Yeah, that makes sense. If your C API requires an intptr_t, you can't solve
that problem by adding more functions to UnsafePointer. I'll go ahead and
start a discussion over on swift-evolution. Thanks!

On Tue, Dec 8, 2015 at 3:07 PM, Jordan Rose <jordan_rose at apple.com> wrote:

> The one I can think of is "sometimes a C API only lets you pass data as an
> Int (intptr_t) or as an UnsafeMutablePointer (void *), and you have the
> other kind of data". That said, it does seem to be sort of a niche use case.
>
> Jordan
>
> On Dec 8, 2015, at 7:59, Michael Buckley via swift-dev <
> swift-dev at swift.org> wrote:
>
> I'm looking for a good starter project, so normally I would be interested
> in taking this, but I'm not sure I can think of a good motivation for it.
> UnsafePointer's advanceBy and distanceTo functions take care of pointer
> arithmetic more safely than converting to int would, and the
> debugDescription property can get you the address for debugging purposes.
>
> Considering that everything that goes through the swift-evolution process
> needs to have a motivation, is there a use case for this that I'm not
> thinking of?
>
> On Mon, Dec 7, 2015 at 4:45 PM, Dmitri Gribenko via swift-dev <
> swift-dev at swift.org> wrote:
>
>> Hi everyone,
>>
>> The standard library has bitPattern initializers on pointers. But we
>> are missing initializers to create integers from pointers.
>>
>> Someone needs to propose these APIs, walk them through
>> swift-evolution, write a patch for the library and add tests.
>>
>> extension UInt {
>>   init<T>(bitPattern: UnsafePointer<T>) {
>>     self = UInt(Builtin.ptrtoint_Word(bitPattern._rawValue))
>>   }
>>
>>   init<T>(bitPattern: UnsafeMutablePointer<T>) {
>>     self = UInt(Builtin.ptrtoint_Word(bitPattern._rawValue))
>>   }
>> }
>>
>> extension Int {
>>   init<T>(bitPattern: UnsafePointer<T>) {
>>     self = Int(Builtin.ptrtoint_Word(bitPattern._rawValue))
>>   }
>>
>>   init<T>(bitPattern: UnsafeMutablePointer<T>) {
>>     self = Int(Builtin.ptrtoint_Word(bitPattern._rawValue))
>>   }
>> }
>>
>> https://bugs.swift.org/browse/SR-131
>>
>> Dmitri
>>
>> --
>> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
>> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
>> _______________________________________________
>> swift-dev mailing list
>> swift-dev at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-dev
>>
>
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20151208/1a09e206/attachment.html>


More information about the swift-dev mailing list