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_r...@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@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@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 <griboz...@gmail.com>*/ >> _______________________________________________ >> swift-dev mailing list >> swift-dev@swift.org >> https://lists.swift.org/mailman/listinfo/swift-dev >> > > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev > > >
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev