0001    //
0002    //  DispatchQueueSpecific.swift
0003    //  DispatchKit <https://github.com/anpol/DispatchKit>
0004    //
0005    //  Copyright (c) 2015 Andrei Polushin. All rights reserved.
0006    //
0007    
0008    import Foundation
0009    
0010    public extension DispatchQueue {
0011        public func getSpecific<T: AnyObject>(key: UnsafePointer<Void>) -> T? {
0012            let specific = dispatch_queue_get_specific(rawValue, key)
0013            return dk_takeUnretained(specific)
0014        }
0015    
0016        public func setSpecific<T: AnyObject>(key: UnsafePointer<Void>, _ specific: T?) {
0017            dispatch_queue_set_specific(rawValue, key, dk_passRetained(specific), dk_release)
0018        }
0019    }
0020    
0021    public extension DispatchCurrentQueue {
0022        public func getSpecific<T: AnyObject>(key: UnsafePointer<Void>) -> T? {
0023            let specific = dispatch_get_specific(key)
0024            return dk_takeUnretained(specific)
0025        }
0026    }
0027