Skip to content

Commit 3fe5b24

Browse files
committed
Merge pull request #378 from russbishop/se0017
For SE-0017, remove use of OpaquePointer
2 parents 53a78d7 + 0ed90af commit 3fe5b24

File tree

6 files changed

+26
-39
lines changed

6 files changed

+26
-39
lines changed

Foundation/NSKeyedArchiver.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,8 @@ public class NSKeyedArchiver : NSCoder {
284284
}
285285

286286
private static func _createObjectRef(_ uid : UInt32) -> CFKeyedArchiverUID {
287-
return Unmanaged<CFKeyedArchiverUID>.fromOpaque(_CFKeyedArchiverUIDCreate(kCFAllocatorSystemDefault, uid)).takeUnretainedValue()
287+
return Unmanaged<CFKeyedArchiverUID>.fromOpaque(
288+
UnsafePointer<Void>(_CFKeyedArchiverUIDCreate(kCFAllocatorSystemDefault, uid))).takeUnretainedValue()
288289
}
289290

290291
private func _createObjectRefCached(_ uid : UInt32) -> CFKeyedArchiverUID {

Foundation/NSOperation.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ public class NSOperationQueue : NSObject {
545545
return nil
546546
}
547547
} else {
548-
return Unmanaged<NSOperationQueue>.fromOpaque(unsafeBitCast(specific, to: OpaquePointer.self)).takeUnretainedValue()
548+
return Unmanaged<NSOperationQueue>.fromOpaque(unsafeBitCast(specific, to: UnsafePointer<Void>.self)).takeUnretainedValue()
549549
}
550550
#else
551551
return nil
@@ -558,7 +558,7 @@ public class NSOperationQueue : NSObject {
558558
if specific == nil {
559559
return NSOperationQueue(_queue: dispatch_get_main_queue(), maxConcurrentOperations: 1)
560560
} else {
561-
return Unmanaged<NSOperationQueue>.fromOpaque(unsafeBitCast(specific, to: OpaquePointer.self)).takeUnretainedValue()
561+
return Unmanaged<NSOperationQueue>.fromOpaque(unsafeBitCast(specific, to: UnsafePointer<Void>.self)).takeUnretainedValue()
562562
}
563563
#else
564564
fatalError("NSOperationQueue requires libdispatch")

Foundation/NSSwiftRuntime.swift

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,11 @@ public func === (lhs: AnyClass, rhs: AnyClass) -> Bool {
332332

333333
extension UnsafeMutablePointer {
334334
internal init<T: AnyObject>(retained value: T) {
335-
self.init(OpaquePointer(bitPattern: Unmanaged<T>.passRetained(value)))
335+
self.init(Unmanaged<T>.passRetained(value).toOpaque())
336336
}
337337

338338
internal init<T: AnyObject>(unretained value: T) {
339-
self.init(OpaquePointer(bitPattern: Unmanaged<T>.passUnretained(value)))
339+
self.init(Unmanaged<T>.passUnretained(value).toOpaque())
340340
}
341341

342342
internal func array(_ count: Int) -> [Pointee] {
@@ -345,20 +345,6 @@ extension UnsafeMutablePointer {
345345
}
346346
}
347347

348-
extension Unmanaged {
349-
internal static func fromOpaque(_ value: UnsafeMutablePointer<Void>) -> Unmanaged<Instance> {
350-
return self.fromOpaque(OpaquePointer(value))
351-
}
352-
353-
internal static func fromOptionalOpaque(_ value: UnsafePointer<Void>?) -> Unmanaged<Instance>? {
354-
if let opaqueValue = value {
355-
return self.fromOpaque(OpaquePointer(opaqueValue))
356-
} else {
357-
return nil
358-
}
359-
}
360-
}
361-
362348
extension Array {
363349
internal mutating func withUnsafeMutablePointerOrAllocation<R>(_ count: Int, fastpath: UnsafeMutablePointer<Element>? = nil, body: @noescape (UnsafeMutablePointer<Element>) -> R) -> R {
364350
if let fastpath = fastpath {

Foundation/NSTask.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,26 +45,26 @@ private func emptyRunLoopCallback(_ context : UnsafeMutablePointer<Void>?) -> Vo
4545

4646
// Retain method for run loop source
4747
private func runLoopSourceRetain(_ pointer : UnsafePointer<Void>?) -> UnsafePointer<Void>? {
48-
let ref = Unmanaged<AnyObject>.fromOpaque(OpaquePointer(pointer!)).takeUnretainedValue()
48+
let ref = Unmanaged<AnyObject>.fromOpaque(pointer!).takeUnretainedValue()
4949
let retained = Unmanaged<AnyObject>.passRetained(ref)
5050
return unsafeBitCast(retained, to: UnsafePointer<Void>.self)
5151
}
5252

5353
// Release method for run loop source
5454
private func runLoopSourceRelease(_ pointer : UnsafePointer<Void>?) -> Void {
55-
Unmanaged<AnyObject>.fromOpaque(OpaquePointer(pointer!)).release()
55+
Unmanaged<AnyObject>.fromOpaque(pointer!).release()
5656
}
5757

5858
// Equal method for run loop source
5959

6060
private func runloopIsEqual(_ a : UnsafePointer<Void>?, b : UnsafePointer<Void>?) -> _DarwinCompatibleBoolean {
6161

62-
let unmanagedrunLoopA = Unmanaged<AnyObject>.fromOpaque(OpaquePointer(a!))
62+
let unmanagedrunLoopA = Unmanaged<AnyObject>.fromOpaque(a!)
6363
guard let runLoopA = unmanagedrunLoopA.takeUnretainedValue() as? NSRunLoop else {
6464
return false
6565
}
6666

67-
let unmanagedRunLoopB = Unmanaged<AnyObject>.fromOpaque(OpaquePointer(a!))
67+
let unmanagedRunLoopB = Unmanaged<AnyObject>.fromOpaque(a!)
6868
guard let runLoopB = unmanagedRunLoopB.takeUnretainedValue() as? NSRunLoop else {
6969
return false
7070
}
@@ -79,7 +79,7 @@ private func runloopIsEqual(_ a : UnsafePointer<Void>?, b : UnsafePointer<Void>?
7979
@noreturn private func managerThread(_ x: UnsafeMutablePointer<Void>?) -> UnsafeMutablePointer<Void>? {
8080

8181
managerThreadRunLoop = NSRunLoop.currentRunLoop()
82-
var emptySourceContext = CFRunLoopSourceContext (version: 0, info: UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: Unmanaged.passUnretained(managerThreadRunLoop!))),
82+
var emptySourceContext = CFRunLoopSourceContext (version: 0, info: Unmanaged.passUnretained(managerThreadRunLoop!).toOpaque(),
8383
retain: runLoopSourceRetain, release: runLoopSourceRelease, copyDescription: nil,
8484
equal: runloopIsEqual, hash: nil, schedule: nil, cancel: nil,
8585
perform: emptyRunLoopCallback)
@@ -113,12 +113,12 @@ private func managerThreadSetup() -> Void {
113113
// Equal method for task in run loop source
114114
private func nstaskIsEqual(_ a : UnsafePointer<Void>?, b : UnsafePointer<Void>?) -> _DarwinCompatibleBoolean {
115115

116-
let unmanagedTaskA = Unmanaged<AnyObject>.fromOpaque(OpaquePointer(a!))
116+
let unmanagedTaskA = Unmanaged<AnyObject>.fromOpaque(a!)
117117
guard let taskA = unmanagedTaskA.takeUnretainedValue() as? NSTask else {
118118
return false
119119
}
120120

121-
let unmanagedTaskB = Unmanaged<AnyObject>.fromOpaque(OpaquePointer(a!))
121+
let unmanagedTaskB = Unmanaged<AnyObject>.fromOpaque(a!)
122122
guard let taskB = unmanagedTaskB.takeUnretainedValue() as? NSTask else {
123123
return false
124124
}
@@ -238,13 +238,13 @@ public class NSTask : NSObject {
238238
var taskSocketPair : [Int32] = [0, 0]
239239
socketpair(AF_UNIX, _CF_SOCK_STREAM(), 0, &taskSocketPair)
240240

241-
var context = CFSocketContext(version: 0, info: UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: Unmanaged.passUnretained(self))),
241+
var context = CFSocketContext(version: 0, info: Unmanaged.passUnretained(self).toOpaque(),
242242
retain: runLoopSourceRetain, release: runLoopSourceRelease, copyDescription: nil)
243243

244244
let socket = CFSocketCreateWithNative( nil, taskSocketPair[0], CFOptionFlags(kCFSocketDataCallBack), {
245245
(socket, type, address, data, info ) in
246246

247-
let task = Unmanaged<NSTask>.fromOpaque(OpaquePointer(info!)).takeUnretainedValue()
247+
let task = Unmanaged<NSTask>.fromOpaque(info!).takeUnretainedValue()
248248

249249
task.processLaunchedCondition.lock()
250250
while task.running == false {
@@ -278,7 +278,7 @@ public class NSTask : NSObject {
278278
task.terminationHandler!( task )
279279
return context
280280

281-
}, UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: Unmanaged.passRetained(task))))
281+
}, Unmanaged.passRetained(task).toOpaque())
282282
}
283283

284284
// Set the running flag to false
@@ -357,7 +357,7 @@ public class NSTask : NSObject {
357357

358358
self.runLoop = NSRunLoop.currentRunLoop()
359359

360-
self.runLoopSourceContext = CFRunLoopSourceContext (version: 0, info: UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: Unmanaged.passUnretained(self))),
360+
self.runLoopSourceContext = CFRunLoopSourceContext (version: 0, info: Unmanaged.passUnretained(self).toOpaque(),
361361
retain: runLoopSourceRetain, release: runLoopSourceRelease, copyDescription: nil,
362362
equal: nstaskIsEqual, hash: nil, schedule: nil, cancel: nil,
363363
perform: emptyRunLoopCallback)

Foundation/NSThread.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import Glibc
1717
import CoreFoundation
1818

1919
private func disposeTLS(_ ctx: UnsafeMutablePointer<Void>?) -> Void {
20-
Unmanaged<AnyObject>.fromOpaque(OpaquePointer(ctx!)).release()
20+
Unmanaged<AnyObject>.fromOpaque(ctx!).release()
2121
}
2222

2323
internal class NSThreadSpecific<T: AnyObject> {
@@ -40,10 +40,10 @@ internal class NSThreadSpecific<T: AnyObject> {
4040
internal func get(_ generator: (Void) -> T) -> T {
4141
let specific = pthread_getspecific(self.key)
4242
if specific != nil {
43-
return Unmanaged<T>.fromOpaque(OpaquePointer(specific!)).takeUnretainedValue()
43+
return Unmanaged<T>.fromOpaque(specific!).takeUnretainedValue()
4444
} else {
4545
let value = generator()
46-
pthread_setspecific(self.key, UnsafePointer<Void>(OpaquePointer(bitPattern: Unmanaged<AnyObject>.passRetained(value))))
46+
pthread_setspecific(self.key, Unmanaged<AnyObject>.passRetained(value).toOpaque())
4747
return value
4848
}
4949
}
@@ -52,14 +52,14 @@ internal class NSThreadSpecific<T: AnyObject> {
5252
let specific = pthread_getspecific(self.key)
5353
var previous: Unmanaged<T>?
5454
if specific != nil {
55-
previous = Unmanaged<T>.fromOpaque(OpaquePointer(specific!))
55+
previous = Unmanaged<T>.fromOpaque(specific!)
5656
}
5757
if let prev = previous {
5858
if prev.takeUnretainedValue() === value {
5959
return
6060
}
6161
}
62-
pthread_setspecific(self.key, UnsafePointer<Void>(OpaquePointer(bitPattern: Unmanaged<AnyObject>.passRetained(value))))
62+
pthread_setspecific(self.key, Unmanaged<AnyObject>.passRetained(value).toOpaque())
6363
if let prev = previous {
6464
prev.release()
6565
}
@@ -74,7 +74,7 @@ internal enum _NSThreadStatus {
7474
}
7575

7676
private func NSThreadStart(_ context: UnsafeMutablePointer<Void>?) -> UnsafeMutablePointer<Void>? {
77-
let unmanaged: Unmanaged<NSThread> = Unmanaged.fromOpaque(OpaquePointer(context!))
77+
let unmanaged: Unmanaged<NSThread> = Unmanaged.fromOpaque(context!)
7878
let thread = unmanaged.takeUnretainedValue()
7979
NSThread._currentThread.set(thread)
8080
thread._status = _NSThreadStatus.Executing
@@ -186,7 +186,7 @@ public class NSThread : NSObject {
186186
}
187187
withUnsafeMutablePointers(&_thread, &_attr) { thread, attr in
188188
let ptr = Unmanaged.passRetained(self)
189-
pthread_create(thread, attr, NSThreadStart, UnsafeMutablePointer(OpaquePointer(bitPattern: ptr)))
189+
pthread_create(thread, attr, NSThreadStart, ptr.toOpaque())
190190
}
191191
}
192192

Foundation/NSXMLNode.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public class NSXMLNode : NSObject, NSCopying {
9999
super.init()
100100

101101
let unmanaged = Unmanaged<NSXMLNode>.passUnretained(self)
102-
let ptr = UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: unmanaged))
102+
let ptr = unmanaged.toOpaque()
103103

104104
_CFXMLNodeSetPrivateData(_xmlNode, ptr)
105105
}
@@ -767,7 +767,7 @@ public class NSXMLNode : NSObject, NSCopying {
767767
}
768768

769769
let unmanaged = Unmanaged<NSXMLNode>.passUnretained(self)
770-
_CFXMLNodeSetPrivateData(_xmlNode, UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: unmanaged)))
770+
_CFXMLNodeSetPrivateData(_xmlNode, unmanaged.toOpaque())
771771
}
772772

773773
internal class func _objectNodeForNode(_ node: _CFXMLNodePtr) -> NSXMLNode {

0 commit comments

Comments
 (0)