WIP: Updates code for Xcode 8 beta 6 using the migrator with manual auditing.

The code doesn’t compile yet.
This commit is contained in:
Mo Ramezanpoor 2016-08-16 13:57:56 +01:00
parent 7adc86f7d2
commit fcf8e4d092
146 changed files with 558 additions and 568 deletions

View File

@ -1,22 +1,12 @@
[
{
"file": "/Users/kzaher/Projects/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 245,
"text": "_ ",
"file": "/Users/mo/Documents/OpenSource/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 276,
"remove": 9,
},
{
"file": "/Users/kzaher/Projects/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 335,
"remove": 13,
},
{
"file": "/Users/kzaher/Projects/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 397,
"text": "_ ",
},
{
"file": "/Users/kzaher/Projects/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 714,
"text": "_ ",
"file": "/Users/mo/Documents/OpenSource/RxSwift/Rx.playground/Sources/SupportCode.swift",
"offset": 733,
"text": "@escaping ",
}
]

View File

@ -180,7 +180,7 @@ extension BlockingObservable {
- parameter predicate: A function to test each source element for a condition.
- returns: Returns the only element of an sequence that satisfies the condition in the predicate, and reports an error if there is not exactly one element in the sequence.
*/
public func single(_ predicate: (E) throws -> Bool) throws -> E? {
public func single(_ predicate: @escaping (E) throws -> Bool) throws -> E? {
var element: E?
var error: Swift.Error?

View File

@ -38,7 +38,7 @@ class RunLoopLock {
currentRunLoop = CFRunLoopGetCurrent()
}
func dispatch(_ action: () -> ()) {
func dispatch(_ action: @escaping () -> ()) {
CFRunLoopPerformBlock(currentRunLoop, CFRunLoopMode.defaultMode.rawValue) {
if CurrentThreadScheduler.isScheduleRequired {
_ = CurrentThreadScheduler.instance.schedule(()) { _ in

View File

@ -54,7 +54,7 @@ public struct ControlEvent<PropertyType> : ControlEventType {
- parameter events: Observable sequence that represents events.
- returns: Control event created with a observable sequence of events.
*/
public init<Ev: ObservableType where Ev.E == E>(events: Ev) {
public init<Ev: ObservableType>(events: Ev) where Ev.E == E {
_events = events.subscribeOn(ConcurrentMainScheduler.instance)
}
@ -64,7 +64,7 @@ public struct ControlEvent<PropertyType> : ControlEventType {
- parameter observer: Observer to subscribe to events.
- returns: Disposable object that can be used to unsubscribe the observer from receiving control events.
*/
public func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
public func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
return _events.subscribe(observer)
}

View File

@ -59,7 +59,7 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
- returns: Control property created with a observable sequence of values and an observer that enables binding values
to property.
*/
public init<V: ObservableType, S: ObserverType where E == V.E, E == S.E>(values: V, valueSink: S) {
public init<V: ObservableType, S: ObserverType>(values: V, valueSink: S) where E == V.E, E == S.E {
_values = values.subscribeOn(ConcurrentMainScheduler.instance)
_valueSink = valueSink.asObserver()
}
@ -70,7 +70,7 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
- parameter observer: Observer to subscribe to property values.
- returns: Disposable object that can be used to unsubscribe the observer from receiving control property values.
*/
public func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
public func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
return _values.subscribe(observer)
}

View File

@ -250,7 +250,7 @@ extension DriverConvertibleType {
- returns: An observable sequence only containing the distinct contiguous elements, based on `comparer`, from the source sequence.
*/
// @warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged(_ comparer: (lhs: E, rhs: E) -> Bool) -> Driver<E> {
public func distinctUntilChanged(_ comparer: (E, E) -> Bool) -> Driver<E> {
let source = self.asObservable()
.distinctUntilChanged({ $0 }, comparer: comparer)
return Driver(source)
@ -264,7 +264,7 @@ extension DriverConvertibleType {
- returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.
*/
// @warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged<K>(_ keySelector: (E) -> K, comparer: (lhs: K, rhs: K) -> Bool) -> Driver<E> {
public func distinctUntilChanged<K>(_ keySelector: (E) -> K, comparer: (K, K) -> Bool) -> Driver<E> {
let source = self.asObservable()
.distinctUntilChanged(keySelector, comparer: comparer)
return Driver(source)
@ -406,7 +406,7 @@ extension Collection where Iterator.Element : DriverConvertibleType {
// @warn_unused_result(message:"http://git.io/rxs.uo")
public func concat()
-> Driver<Generator.Element.E> {
let source = self.map { $0.asDriver().asObservable() }.concat()
let source = self.map { $0.asDriver().asObservable() } as (_) -> _.concat()
return Driver<Generator.Element.E>(source)
}
}

View File

@ -25,7 +25,7 @@ extension DriverConvertibleType {
- returns: Disposable object that can be used to unsubscribe the observer from the subject.
*/
// @warn_unused_result(message:"http://git.io/rxs.ud")
public func drive<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
public func drive<O: ObserverType>(_ observer: O) -> Disposable where O.E == E {
MainScheduler.ensureExecutingOnScheduler(errorMessage: driverErrorMessage)
return self.asObservable().subscribe(observer)
}

View File

@ -130,7 +130,7 @@ extension Driver {
- returns: An observable sequence whose observers trigger an invocation of the given observable factory function.
*/
// @warn_unused_result(message:"http://git.io/rxs.uo")
public static func deferred(_ observableFactory: () -> Driver<E>)
public static func deferred(_ observableFactory: @escaping () -> Driver<E>)
-> Driver<E> {
return Driver(Observable.deferred { observableFactory().asObservable() })
}

View File

@ -51,7 +51,7 @@ extension ObservableConvertibleType {
- returns: Driving observable sequence.
*/
// @warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver(onErrorRecover: (error: Swift.Error) -> Driver<E>) -> Driver<E> {
public func asDriver(onErrorRecover: (_ error: Swift.Error) -> Driver<E>) -> Driver<E> {
let source = self
.asObservable()
.observeOn(driverObserveOnScheduler)

View File

@ -18,7 +18,7 @@ Observer that enforces interface binding rules:
`UIBindingObserver` doesn't retain target interface and in case owned interface element is released, element isn't bound.
*/
public class UIBindingObserver<UIElementType, Value where UIElementType: AnyObject> : ObserverType {
open class UIBindingObserver<UIElementType, Value> : ObserverType where UIElementType: AnyObject {
public typealias E = Value
weak var UIElement: UIElementType?
@ -36,7 +36,7 @@ public class UIBindingObserver<UIElementType, Value where UIElementType: AnyObje
/**
Binds next element to owner view as described in `binding`.
*/
public func on(_ event: Event<Value>) {
open func on(_ event: Event<Value>) {
MainScheduler.ensureExecutingOnScheduler(errorMessage: "Element can be bound to user interface only on MainThread.")
switch event {
@ -56,7 +56,7 @@ public class UIBindingObserver<UIElementType, Value where UIElementType: AnyObje
- returns: type erased observer.
*/
public func asObserver() -> AnyObserver<Value> {
open func asObserver() -> AnyObserver<Value> {
return AnyObserver(eventHandler: on)
}
}

View File

@ -19,7 +19,7 @@ Base class for `DelegateProxyType` protocol.
This implementation is not thread safe and can be used only from one thread (Main thread).
*/
public class DelegateProxy : _RXDelegateProxy {
open class DelegateProxy : _RXDelegateProxy {
private var subjectsForSelector = [Selector: PublishSubject<[AnyObject]>]()
@ -85,7 +85,7 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter selector: Selector used to filter observed invocations of delegate methods.
- returns: Observable sequence of arguments passed to `selector` method.
*/
public func observe(_ selector: Selector) -> Observable<[AnyObject]> {
open func observe(_ selector: Selector) -> Observable<[AnyObject]> {
if hasWiredImplementation(for: selector) {
print("Delegate proxy is already implementing `\(selector)`, a more performant way of registering might exist.")
}
@ -108,7 +108,7 @@ public class DelegateProxy : _RXDelegateProxy {
// proxy
public override func interceptedSelector(_ selector: Selector, withArguments arguments: [AnyObject]!) {
open override func interceptedSelector(_ selector: Selector, withArguments arguments: [AnyObject]!) {
subjectsForSelector[selector]?.on(.next(arguments))
}
@ -117,7 +117,7 @@ public class DelegateProxy : _RXDelegateProxy {
- returns: Associated object tag.
*/
public class func delegateAssociatedObjectTag() -> UnsafePointer<Void> {
open class func delegateAssociatedObjectTag() -> UnsafeRawPointer {
return _pointer(&delegateAssociatedTag)
}
@ -126,7 +126,7 @@ public class DelegateProxy : _RXDelegateProxy {
- returns: Initialized instance of `self`.
*/
public class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open class func createProxyForObject(_ object: AnyObject) -> AnyObject {
return self.init(parentObject: object)
}
@ -136,7 +136,7 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter object: Object that can have assigned delegate proxy.
- returns: Assigned delegate proxy or `nil` if no delegate proxy is assigned.
*/
public class func assignedProxyFor(_ object: AnyObject) -> AnyObject? {
open class func assignedProxyFor(_ object: AnyObject) -> AnyObject? {
let maybeDelegate: AnyObject? = objc_getAssociatedObject(object, self.delegateAssociatedObjectTag())
return castOptionalOrFatalError(maybeDelegate)
}
@ -147,7 +147,7 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter object: Object that can have assigned delegate proxy.
- parameter proxy: Delegate proxy object to assign to `object`.
*/
public class func assignProxy(_ proxy: AnyObject, toObject object: AnyObject) {
open class func assignProxy(_ proxy: AnyObject, toObject object: AnyObject) {
precondition(proxy.isKind(of: self.classForCoder()))
objc_setAssociatedObject(object, self.delegateAssociatedObjectTag(), proxy, .OBJC_ASSOCIATION_RETAIN)
@ -160,7 +160,7 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter forwardToDelegate: Reference of delegate that receives all messages through `self`.
- parameter retainDelegate: Should `self` retain `forwardToDelegate`.
*/
public func setForwardToDelegate(_ delegate: AnyObject?, retainDelegate: Bool) {
open func setForwardToDelegate(_ delegate: AnyObject?, retainDelegate: Bool) {
self._setForward(toDelegate: delegate, retainDelegate: retainDelegate)
}
@ -170,7 +170,7 @@ public class DelegateProxy : _RXDelegateProxy {
- returns: Value of reference if set or nil.
*/
public func forwardToDelegate() -> AnyObject? {
open func forwardToDelegate() -> AnyObject? {
return self._forwardToDelegate
}
@ -185,7 +185,7 @@ public class DelegateProxy : _RXDelegateProxy {
// MARK: Pointer
class func _pointer(_ p: UnsafePointer<Void>) -> UnsafePointer<Void> {
class func _pointer(_ p: UnsafeRawPointer) -> UnsafeRawPointer {
return p
}
}

View File

@ -23,7 +23,7 @@ extension ObservableType {
- returns: Disposable object that can be used to unsubscribe the observer.
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
public func bindTo<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
public func bindTo<O: ObserverType>(_ observer: O) -> Disposable where O.E == E {
return self.subscribe(observer)
}

View File

@ -33,7 +33,7 @@ class KVOObservable<Element>
}
}
func subscribe<O : ObserverType where O.E == Element?>(_ observer: O) -> Disposable {
func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element? {
let observer = KVOObserver(parent: self) { (value) in
if value as? NSNull != nil {
observer.on(.next(nil))

View File

@ -212,7 +212,7 @@ let rxDeallocatingSelector = RX_selector(deallocSelector)
let rxDeallocatingSelectorReference = RX_reference_from_selector(rxDeallocatingSelector)
extension NSObject {
func rx_synchronized<T>( _ action: @noescape() -> T) -> T {
func rx_synchronized<T>(_ action: () -> T) -> T {
objc_sync_enter(self)
let result = action()
objc_sync_exit(self)
@ -225,7 +225,7 @@ extension NSObject {
Helper to make sure that `Observable` returned from `createCachedObservable` is only created once.
This is important because there is only one `target` and `action` properties on `NSControl` or `UIBarButtonItem`.
*/
func rx_lazyInstanceObservable<T: AnyObject>(_ key: UnsafePointer<Void>, createCachedObservable: () -> T) -> T {
func rx_lazyInstanceObservable<T: AnyObject>(_ key: UnsafeRawPointer, createCachedObservable: () -> T) -> T {
if let value = objc_getAssociatedObject(self, key) {
return value as! T
}

View File

@ -230,11 +230,11 @@ func bindingErrorToInterface(_ error: Swift.Error) {
// MARK: Abstract methods
@noreturn func rxAbstractMethodWithMessage(_ message: String) {
func rxAbstractMethodWithMessage(_ message: String) -> Never {
rxFatalError(message)
}
@noreturn func rxAbstractMethod() {
func rxAbstractMethod() -> Never {
rxFatalError("Abstract method")
}
@ -337,7 +337,7 @@ extension Error {
#if !RX_NO_MODULE
@noreturn func rxFatalError(_ lastMessage: String) {
func rxFatalError(_ lastMessage: String) -> Never {
// The temptation to comment this line is great, but please don't, it's for your own good. The choice is yours.
fatalError(lastMessage)
}

View File

@ -41,4 +41,4 @@ class RxTarget : NSObject
OSAtomicDecrement32(&resourceCount)
}
#endif
}
}

View File

@ -32,7 +32,7 @@ class _RxCollectionViewReactiveArrayDataSource
return _collectionView(collectionView, numberOfItemsInSection: section)
}
private func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
fileprivate func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
rxAbstractMethod()
}

View File

@ -31,7 +31,7 @@ class _RxTableViewReactiveArrayDataSource
return _tableView(tableView, numberOfRowsInSection: section)
}
private func _tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
fileprivate func _tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
rxAbstractMethod()
}

View File

@ -35,7 +35,7 @@ class CollectionViewDataSourceNotSet
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxCollectionViewDataSourceProxy
open class RxCollectionViewDataSourceProxy
: DelegateProxy
, UICollectionViewDataSource
, DelegateProxyType {
@ -43,7 +43,7 @@ public class RxCollectionViewDataSourceProxy
/**
Typed parent object.
*/
public weak private(set) var collectionView: UICollectionView?
open weak private(set) var collectionView: UICollectionView?
private weak var _requiredMethodsDataSource: UICollectionViewDataSource? = collectionViewDataSourceNotSet
@ -62,14 +62,14 @@ public class RxCollectionViewDataSourceProxy
/**
Required delegate method implementation.
*/
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return (_requiredMethodsDataSource ?? collectionViewDataSourceNotSet).collectionView(collectionView, numberOfItemsInSection: section) ?? 0
}
/**
Required delegate method implementation.
*/
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return (_requiredMethodsDataSource ?? collectionViewDataSourceNotSet).collectionView(collectionView, cellForItemAt: indexPath)
}
@ -78,7 +78,7 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let collectionView = (object as! UICollectionView)
return castOrFatalError(collectionView.rx_createDataSourceProxy())
@ -87,14 +87,14 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func delegateAssociatedObjectTag() -> UnsafePointer<Void> {
open override class func delegateAssociatedObjectTag() -> UnsafeRawPointer {
return _pointer(&dataSourceAssociatedTag)
}
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let collectionView: UICollectionView = castOrFatalError(object)
collectionView.dataSource = castOptionalOrFatalError(delegate)
}
@ -102,7 +102,7 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let collectionView: UICollectionView = castOrFatalError(object)
return collectionView.dataSource
}
@ -110,7 +110,7 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
open override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
let requiredMethodsDataSource: UICollectionViewDataSource? = castOptionalOrFatalError(forwardToDelegate)
_requiredMethodsDataSource = requiredMethodsDataSource ?? collectionViewDataSourceNotSet
super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)

View File

@ -17,7 +17,7 @@ import RxSwift
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxCollectionViewDelegateProxy
open class RxCollectionViewDelegateProxy
: RxScrollViewDelegateProxy
, UICollectionViewDelegate
, UICollectionViewDelegateFlowLayout {
@ -25,7 +25,7 @@ public class RxCollectionViewDelegateProxy
/**
Typed parent object.
*/
public weak private(set) var collectionView: UICollectionView?
open weak private(set) var collectionView: UICollectionView?
/**
Initializes `RxCollectionViewDelegateProxy`

View File

@ -14,7 +14,7 @@
#endif
import UIKit
public class RxImagePickerDelegateProxy
open class RxImagePickerDelegateProxy
: DelegateProxy
, DelegateProxyType
, UIImagePickerControllerDelegate
@ -23,7 +23,7 @@ public class RxImagePickerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let imagePickerController: UIImagePickerController = castOrFatalError(object)
imagePickerController.delegate = castOptionalOrFatalError(delegate)
}
@ -31,7 +31,7 @@ public class RxImagePickerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let imagePickerController: UIImagePickerController = castOrFatalError(object)
return imagePickerController.delegate
}

View File

@ -14,7 +14,7 @@
#endif
import UIKit
public class RxPickerViewDelegateProxy
open class RxPickerViewDelegateProxy
: DelegateProxy
, DelegateProxyType
, UIPickerViewDelegate {
@ -22,7 +22,7 @@ public class RxPickerViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let pickerView: UIPickerView = castOrFatalError(object)
pickerView.delegate = castOptionalOrFatalError(delegate)
}
@ -30,7 +30,7 @@ public class RxPickerViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let pickerView: UIPickerView = castOrFatalError(object)
return pickerView.delegate
}

View File

@ -17,17 +17,17 @@ import UIKit
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxScrollViewDelegateProxy
open class RxScrollViewDelegateProxy
: DelegateProxy
, UIScrollViewDelegate
, DelegateProxyType {
private var _contentOffsetSubject: ReplaySubject<CGPoint>?
fileprivate var _contentOffsetSubject: ReplaySubject<CGPoint>?
/**
Typed parent object.
*/
public weak private(set) var scrollView: UIScrollView?
open weak fileprivate(set) var scrollView: UIScrollView?
/**
Optimized version used for observing content offset changes.
@ -57,7 +57,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
open func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let contentOffset = _contentOffsetSubject {
contentOffset.on(.next(scrollView.contentOffset))
}
@ -69,7 +69,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let scrollView = (object as! UIScrollView)
return castOrFatalError(scrollView.rx_createDelegateProxy())
@ -78,7 +78,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let scrollView: UIScrollView = castOrFatalError(object)
scrollView.delegate = castOptionalOrFatalError(delegate)
}
@ -86,7 +86,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let scrollView: UIScrollView = castOrFatalError(object)
return scrollView.delegate
}

View File

@ -17,7 +17,7 @@ import RxSwift
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxSearchBarDelegateProxy
open class RxSearchBarDelegateProxy
: DelegateProxy
, UISearchBarDelegate
, DelegateProxyType {
@ -25,7 +25,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let searchBar: UISearchBar = castOrFatalError(object)
return searchBar.delegate
}
@ -33,7 +33,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let searchBar: UISearchBar = castOrFatalError(object)
searchBar.delegate = castOptionalOrFatalError(delegate)
}
@ -44,7 +44,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let searchBar = (object as! UISearchBar)
return castOrFatalError(searchBar.rx_createDelegateProxy())

View File

@ -18,7 +18,7 @@
For more information take a look at `DelegateProxyType`.
*/
@available(iOS 8.0, *)
public class RxSearchControllerDelegateProxy
open class RxSearchControllerDelegateProxy
: DelegateProxy
, DelegateProxyType
, UISearchControllerDelegate {
@ -26,7 +26,7 @@ public class RxSearchControllerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let searchController: UISearchController = castOrFatalError(object)
searchController.delegate = castOptionalOrFatalError(delegate)
}
@ -34,7 +34,7 @@ public class RxSearchControllerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let searchController: UISearchController = castOrFatalError(object)
return searchController.delegate
}

View File

@ -17,7 +17,7 @@ import RxSwift
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxTabBarDelegateProxy
open class RxTabBarDelegateProxy
: DelegateProxy
, UITabBarDelegate
, DelegateProxyType {
@ -25,7 +25,7 @@ public class RxTabBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let tabBar: UITabBar = castOrFatalError(object)
return tabBar.delegate
}
@ -33,7 +33,7 @@ public class RxTabBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let tabBar: UITabBar = castOrFatalError(object)
tabBar.delegate = castOptionalOrFatalError(delegate)
}
@ -41,7 +41,7 @@ public class RxTabBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let tabBar = (object as! UITabBar)
return castOrFatalError(tabBar.rx_createDelegateProxy())

View File

@ -32,7 +32,7 @@ class TableViewDataSourceNotSet
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxTableViewDataSourceProxy
open class RxTableViewDataSourceProxy
: DelegateProxy
, UITableViewDataSource
, DelegateProxyType {
@ -40,9 +40,9 @@ public class RxTableViewDataSourceProxy
/**
Typed parent object.
*/
public weak private(set) var tableView: UITableView?
open weak fileprivate(set) var tableView: UITableView?
private weak var _requiredMethodsDataSource: UITableViewDataSource? = tableViewDataSourceNotSet
fileprivate weak var _requiredMethodsDataSource: UITableViewDataSource? = tableViewDataSourceNotSet
/**
Initializes `RxTableViewDataSourceProxy`
@ -59,14 +59,14 @@ public class RxTableViewDataSourceProxy
/**
Required delegate method implementation.
*/
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, numberOfRowsInSection: section)
}
/**
Required delegate method implementation.
*/
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, cellForRowAt: indexPath)
}
@ -75,7 +75,7 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
open override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let tableView = (object as! UITableView)
return castOrFatalError(tableView.rx_createDataSourceProxy())
@ -84,14 +84,14 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func delegateAssociatedObjectTag() -> UnsafePointer<Void> {
open override class func delegateAssociatedObjectTag() -> UnsafeRawPointer {
return _pointer(&dataSourceAssociatedTag)
}
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let tableView: UITableView = castOrFatalError(object)
tableView.dataSource = castOptionalOrFatalError(delegate)
}
@ -99,7 +99,7 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let tableView: UITableView = castOrFatalError(object)
return tableView.dataSource
}
@ -107,7 +107,7 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
open override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
let requiredMethodsDataSource: UITableViewDataSource? = castOptionalOrFatalError(forwardToDelegate)
_requiredMethodsDataSource = requiredMethodsDataSource ?? tableViewDataSourceNotSet
super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)

View File

@ -17,7 +17,7 @@ import RxSwift
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxTableViewDelegateProxy
open class RxTableViewDelegateProxy
: RxScrollViewDelegateProxy
, UITableViewDelegate {
@ -25,7 +25,7 @@ public class RxTableViewDelegateProxy
/**
Typed parent object.
*/
public weak private(set) var tableView: UITableView?
open weak private(set) var tableView: UITableView?
/**
Initializes `RxTableViewDelegateProxy`

View File

@ -14,7 +14,7 @@
#endif
import UIKit
public class RxTextStorageDelegateProxy
open class RxTextStorageDelegateProxy
: DelegateProxy
, DelegateProxyType
, NSTextStorageDelegate {
@ -23,7 +23,7 @@ public class RxTextStorageDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
open class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let textStorage: NSTextStorage = castOrFatalError(object)
textStorage.delegate = castOptionalOrFatalError(delegate)
}
@ -31,7 +31,7 @@ public class RxTextStorageDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
open class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let textStorage: NSTextStorage = castOrFatalError(object)
return textStorage.delegate
}

View File

@ -17,14 +17,14 @@ import RxSwift
/**
For more information take a look at `DelegateProxyType`.
*/
public class RxTextViewDelegateProxy
open class RxTextViewDelegateProxy
: RxScrollViewDelegateProxy
, UITextViewDelegate {
/**
Typed parent object.
*/
public weak private(set) var textView: UITextView?
open weak private(set) var textView: UITextView?
/**
Initializes `RxTextViewDelegateProxy`
@ -41,7 +41,7 @@ public class RxTextViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
@objc public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
@objc open func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
/**
We've had some issues with observing text changes. This is here just in case we need the same hack in future and that
we wouldn't need to change the public interface.

View File

@ -43,10 +43,10 @@ extension UICollectionView {
.addDisposableTo(disposeBag)
*/
@available(*, deprecated, renamed: "rx_items(source:cellFactory:)")
public func rx_itemsWithCellFactory<S: Sequence, O: ObservableType where O.E == S>
public func rx_itemsWithCellFactory<S: Sequence, O: ObservableType>
(_ source: O)
-> (cellFactory: (UICollectionView, Int, S.Iterator.Element) -> UICollectionViewCell)
-> Disposable {
-> (_ cellFactory: (UICollectionView, Int, S.Iterator.Element) -> UICollectionViewCell)
-> Disposable where O.E == S {
return { cellFactory in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S>(cellFactory: cellFactory)
return self.rx_itemsWithDataSource(dataSource)(source: source)
@ -78,10 +78,10 @@ extension UICollectionView {
}
.addDisposableTo(disposeBag)
*/
public func rx_items<S: Sequence, O: ObservableType where O.E == S>
public func rx_items<S: Sequence, O: ObservableType>
(source: O)
-> (cellFactory: (UICollectionView, Int, S.Iterator.Element) -> UICollectionViewCell)
-> Disposable {
-> (_ cellFactory: (UICollectionView, Int, S.Iterator.Element) -> UICollectionViewCell)
-> Disposable where O.E == S {
return { cellFactory in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S>(cellFactory: cellFactory)
return self.rx_items(dataSource: dataSource)(source: source)
@ -113,11 +113,11 @@ extension UICollectionView {
.addDisposableTo(disposeBag)
*/
@available(*, deprecated, renamed: "rx_items(cellIdentifier:cellType:source:configureCell:)")
public func rx_itemsWithCellIdentifier<S: Sequence, Cell: UICollectionViewCell, O : ObservableType where O.E == S>
public func rx_itemsWithCellIdentifier<S: Sequence, Cell: UICollectionViewCell, O : ObservableType>
(_ cellIdentifier: String, cellType: Cell.Type = Cell.self)
-> (source: O)
-> (configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable {
-> (_ source: O)
-> (_ configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable where O.E == S {
return { source in
return { configureCell in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S> { (cv, i, item) in
@ -155,11 +155,11 @@ extension UICollectionView {
}
.addDisposableTo(disposeBag)
*/
public func rx_items<S: Sequence, Cell: UICollectionViewCell, O : ObservableType where O.E == S>
public func rx_items<S: Sequence, Cell: UICollectionViewCell, O : ObservableType>
(cellIdentifier: String, cellType: Cell.Type = Cell.self)
-> (source: O)
-> (configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable {
-> (_ source: O)
-> (_ configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable where O.E == S {
return { source in
return { configureCell in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S> { (cv, i, item) in
@ -217,11 +217,11 @@ extension UICollectionView {
@available(*, deprecated, renamed: "rx_items(dataSource:source:)")
public func rx_itemsWithDataSource<
DataSource: RxCollectionViewDataSourceType & UICollectionViewDataSource,
O: ObservableType where DataSource.Element == O.E
>
O: ObservableType>
(_ dataSource: DataSource)
-> (source: O)
-> Disposable {
-> (_ source: O)
-> Disposable where DataSource.Element == O.E
{
return { source in
return source.subscribeProxyDataSource(ofObject: self, dataSource: dataSource, retainDataSource: true) { [weak self] (_: RxCollectionViewDataSourceProxy, event) -> Void in
@ -274,11 +274,11 @@ extension UICollectionView {
*/
public func rx_items<
DataSource: RxCollectionViewDataSourceType & UICollectionViewDataSource,
O: ObservableType where DataSource.Element == O.E
>
O: ObservableType>
(dataSource: DataSource)
-> (source: O)
-> Disposable {
-> (_ source: O)
-> Disposable where DataSource.Element == O.E
{
return { source in
// This is called for sideeffects only, and to make sure delegate proxy is in place when
// data source is being bound.

View File

@ -63,7 +63,7 @@ extension UIControl {
You might be wondering why the ugly `as!` casts etc, well, for some reason if
Swift compiler knows C is UIControl type and optimizations are turned on, it will crash.
*/
static func rx_value<C: AnyObject, T: Equatable>(_ control: C, getter: (C) -> T, setter: (C, T) -> Void) -> ControlProperty<T> {
static func rx_value<C: AnyObject, T: Equatable>(_ control: C, getter: @escaping (C) -> T, setter: (C, T) -> Void) -> ControlProperty<T> {
let source: Observable<T> = Observable.create { [weak weakControl = control] observer in
guard let control = weakControl else {
observer.on(.completed)

View File

@ -40,7 +40,7 @@ public struct AnyObserver<Element> : ObserverType {
- parameter observer: Observer that receives sequence events.
*/
public init<O : ObserverType where O.E == Element>(_ observer: O) {
public init<O : ObserverType>(_ observer: O) where O.E == Element {
self.observer = observer.on
}

View File

@ -63,17 +63,17 @@ protocol Lock {
#endif
extension NSRecursiveLock : Lock {
func performLocked( _ action: @noescape() -> Void) {
func performLocked(_ action: () -> Void) {
lock(); defer { unlock() }
action()
}
func calculateLocked<T>( _ action: @noescape() -> T) -> T {
func calculateLocked<T>(_ action: () -> T) -> T {
lock(); defer { unlock() }
return action()
}
func calculateLockedOrFail<T>( _ action: @noescape() throws -> T) throws -> T {
func calculateLockedOrFail<T>(_ action: () throws -> T) throws -> T {
lock(); defer { unlock() }
let result = try action()
return result

View File

@ -9,11 +9,11 @@
import Foundation
protocol SynchronizedSubscribeType : class, ObservableType, Lock {
func _synchronized_subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable
func _synchronized_subscribe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E
}
extension SynchronizedSubscribeType {
func synchronizedSubscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
func synchronizedSubscribe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E {
lock(); defer { unlock() }
return _synchronized_subscribe(observer)
}

View File

@ -66,29 +66,29 @@ public struct Bag<T> : CustomDebugStringConvertible {
*/
public typealias KeyType = BagKey
private typealias ScopeUniqueTokenType = Int
fileprivate typealias ScopeUniqueTokenType = Int
typealias Entry = (key: BagKey, value: T)
private var _uniqueIdentity: Identity?
private var _nextKey: ScopeUniqueTokenType = 0
fileprivate var _uniqueIdentity: Identity?
fileprivate var _nextKey: ScopeUniqueTokenType = 0
// data
// first fill inline variables
private var _key0: BagKey? = nil
private var _value0: T? = nil
fileprivate var _key0: BagKey? = nil
fileprivate var _value0: T? = nil
private var _key1: BagKey? = nil
private var _value1: T? = nil
fileprivate var _key1: BagKey? = nil
fileprivate var _value1: T? = nil
// then fill "array dictionary"
private var _pairs = ContiguousArray<Entry>()
fileprivate var _pairs = ContiguousArray<Entry>()
// last is sparse dictionary
private var _dictionary: [BagKey : T]? = nil
fileprivate var _dictionary: [BagKey : T]? = nil
private var _onlyFastPath = true
fileprivate var _onlyFastPath = true
/**
Creates new empty `Bag`.
@ -224,7 +224,7 @@ extension Bag {
- parameter action: Enumeration closure.
*/
public func forEach(_ action: @noescape (T) -> Void) {
public func forEach(_ action: (T) -> Void) {
if _onlyFastPath {
if let value0 = _value0 {
action(value0)

View File

@ -27,4 +27,4 @@ struct InfiniteSequence<E> : Sequence {
return repeatedValue
}
}
}
}

View File

@ -10,7 +10,7 @@ import Foundation
struct PriorityQueue<Element: AnyObject> {
private let _hasHigherPriority: (Element, Element) -> Bool
private var _elements = [Element]()
fileprivate var _elements = [Element]()
init(hasHigherPriority: (Element, Element) -> Bool) {
_hasHigherPriority = hasHigherPriority

View File

@ -38,7 +38,7 @@ public final class AnonymousDisposable : DisposeBase, Cancelable {
}
// Non-deprecated version of the constructor, used by `Disposables.create(with:)`
private init(disposeAction: DisposeAction) {
fileprivate init(disposeAction: DisposeAction) {
_disposeAction = disposeAction
super.init()
}
@ -67,7 +67,7 @@ public extension Disposables {
- parameter dispose: Disposal action which will be run upon calling `dispose`.
*/
static func create(with dispose: () -> ()) -> Cancelable {
static func create(with dispose: @escaping () -> ()) -> Cancelable {
return AnonymousDisposable(disposeAction: dispose)
}

View File

@ -11,7 +11,7 @@ import Foundation
/**
Base class for all disposables.
*/
public class DisposeBase {
open class DisposeBase {
init() {
#if TRACE_RESOURCES
let _ = AtomicIncrement(&resourceCount)

View File

@ -79,7 +79,7 @@ public final class RefCountDisposable : DisposeBase, Cancelable {
}
}
private func release() {
fileprivate func release() {
let oldDisposable: Disposable? = _lock.calculateLocked {
if let oldDisposable = _disposable {
do {

View File

@ -13,7 +13,7 @@ Represents a disposable resource which only allows a single assignment of its un
If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an exception.
*/
public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
open class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
private var _lock = SpinLock()
// state
@ -24,7 +24,7 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
/**
- returns: A value that indicates whether the object is disposed.
*/
public var isDisposed: Bool {
open var isDisposed: Bool {
return _isDisposed
}
@ -40,7 +40,7 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
**Throws exception if the `SingleAssignmentDisposable` has already been assigned to.**
*/
public var disposable: Disposable {
open var disposable: Disposable {
get {
_lock.lock(); defer { _lock.unlock() }
return _disposable ?? Disposables.create()
@ -70,7 +70,7 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
/**
Disposes the underlying disposable.
*/
public func dispose() {
open func dispose() {
if _isDisposed {
return
}

View File

@ -30,7 +30,7 @@ extension ImmediateSchedulerType {
- parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.
- returns: The disposable object used to cancel the scheduled action (best effort).
*/
public func scheduleRecursive<State>(_ state: State, action: (state: State, recurse: (State) -> ()) -> ()) -> Disposable {
public func scheduleRecursive<State>(_ state: State, action: (_ state: State, _ recurse: (State) -> ()) -> ()) -> Disposable {
let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self)
recursiveScheduler.schedule(state)

View File

@ -13,7 +13,7 @@ A type-erased `ObservableType`.
It represents a push style sequence.
*/
public class Observable<Element> : ObservableType {
open class Observable<Element> : ObservableType {
/**
Type of elements in sequence.
*/
@ -25,11 +25,11 @@ public class Observable<Element> : ObservableType {
#endif
}
public func subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
open func subscribe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E {
abstractMethod()
}
public func asObservable() -> Observable<E> {
open func asObservable() -> Observable<E> {
return self
}

View File

@ -16,10 +16,10 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribe(_ on: (event: Event<E>) -> Void)
public func subscribe(_ on: @escaping (Event<E>) -> Void)
-> Disposable {
let observer = AnonymousObserver { e in
on(event: e)
on(e)
}
return self.subscribeSafe(observer)
}
@ -121,7 +121,7 @@ extension ObservableType {
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
@available(*, deprecated, renamed: "subscribe(onNext:)")
public func subscribeNext(_ onNext: (E) -> Void)
public func subscribeNext(_ onNext: @escaping (E) -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .next(let value) = e {
@ -139,7 +139,7 @@ extension ObservableType {
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
@available(*, deprecated, renamed: "subscribe(onError:)")
public func subscribeError(_ onError: (Swift.Error) -> Void)
public func subscribeError(_ onError: @escaping (Swift.Error) -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .error(let error) = e {
@ -157,7 +157,7 @@ extension ObservableType {
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
@available(*, deprecated, renamed: "subscribe(onCompleted:)")
public func subscribeCompleted(_ onCompleted: () -> Void)
public func subscribeCompleted(_ onCompleted: @escaping () -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .completed = e {
@ -173,7 +173,7 @@ public extension ObservableType {
All internal subscribe calls go through this method.
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
func subscribeSafe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
func subscribeSafe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E {
return self.asObservable().subscribe(observer)
}
}

View File

@ -41,7 +41,7 @@ public protocol ObservableType : ObservableConvertibleType {
- returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.
*/
// @warn_unused_result(message: "http://git.io/rxs.ud")
func subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable
func subscribe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E
}
extension ObservableType {

View File

@ -37,7 +37,7 @@ class AddRef<Element> : Producer<Element> {
_refCount = refCount
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let releaseDisposable = _refCount.retain()
let sink = AddRefSink(observer: observer)
sink.disposable = Disposables.create(releaseDisposable, _source.subscribeSafe(sink))

View File

@ -14,7 +14,7 @@ enum AmbState {
case right
}
class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : ObserverType {
class AmbObserver<ElementType, O: ObserverType> : ObserverType where O.E == ElementType {
typealias Element = ElementType
typealias Parent = AmbSink<ElementType, O>
typealias This = AmbObserver<ElementType, O>
@ -48,7 +48,7 @@ class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : Obser
}
}
class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
class AmbSink<ElementType, O: ObserverType> : Sink<O> where O.E == ElementType {
typealias Parent = Amb<ElementType>
typealias AmbObserverType = AmbObserver<ElementType, O>
@ -114,7 +114,7 @@ class Amb<Element>: Producer<Element> {
_right = right
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = AmbSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -48,7 +48,7 @@ class AnonymousObservable<Element> : Producer<Element> {
_subscribeHandler = subscribeHandler
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = AnonymousObservableSink(observer: observer)
sink.disposable = sink.run(self)
return sink

View File

@ -10,10 +10,10 @@ import Foundation
class BufferTimeCount<Element> : Producer<[Element]> {
private let _timeSpan: RxTimeInterval
private let _count: Int
private let _scheduler: SchedulerType
private let _source: Observable<Element>
fileprivate let _timeSpan: RxTimeInterval
fileprivate let _count: Int
fileprivate let _scheduler: SchedulerType
fileprivate let _source: Observable<Element>
init(source: Observable<Element>, timeSpan: RxTimeInterval, count: Int, scheduler: SchedulerType) {
_source = source
@ -22,18 +22,18 @@ class BufferTimeCount<Element> : Producer<[Element]> {
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == [Element]>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == [Element] {
let sink = BufferTimeCountSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
}
}
class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
class BufferTimeCountSink<Element, O: ObserverType>
: Sink<O>
, LockOwnerType
, ObserverType
, SynchronizedOnType {
, SynchronizedOnType where O.E == [Element] {
typealias Parent = BufferTimeCount<Element>
typealias E = Element

View File

@ -78,15 +78,15 @@ class CatchSink<O: ObserverType> : Sink<O>, ObserverType {
class Catch<Element> : Producer<Element> {
typealias Handler = (Swift.Error) throws -> Observable<Element>
private let _source: Observable<Element>
private let _handler: Handler
fileprivate let _source: Observable<Element>
fileprivate let _handler: Handler
init(source: Observable<Element>, handler: Handler) {
_source = source
_handler = handler
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = CatchSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -95,9 +95,9 @@ class Catch<Element> : Producer<Element> {
// catch enumerable
class CatchSequenceSink<S: Sequence, O: ObserverType where S.Iterator.Element : ObservableConvertibleType, S.Iterator.Element.E == O.E>
class CatchSequenceSink<S: Sequence, O: ObserverType>
: TailRecursiveSink<S, O>
, ObserverType {
, ObserverType where S.Iterator.Element : ObservableConvertibleType, S.Iterator.Element.E == O.E {
typealias Element = O.E
typealias Parent = CatchSequence<S>
@ -145,7 +145,7 @@ class CatchSequenceSink<S: Sequence, O: ObserverType where S.Iterator.Element :
}
}
class CatchSequence<S: Sequence where S.Iterator.Element : ObservableConvertibleType> : Producer<S.Iterator.Element.E> {
class CatchSequence<S: Sequence> : Producer<S.Iterator.Element.E> where S.Iterator.Element : ObservableConvertibleType {
typealias Element = S.Iterator.Element.E
let sources: S
@ -154,7 +154,7 @@ class CatchSequence<S: Sequence where S.Iterator.Element : ObservableConvertible
self.sources = sources
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = CatchSequenceSink<S, O>(observer: observer)
sink.disposable = sink.run((self.sources.makeIterator(), nil))
return sink

View File

@ -8,8 +8,8 @@
import Foundation
class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.Iterator.Element : ObservableConvertibleType, O.E == R>
: Sink<O> {
class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType>
: Sink<O> where C.Iterator.Element : ObservableConvertibleType, O.E == R {
typealias Parent = CombineLatestCollectionType<C, R>
typealias SourceElement = C.Iterator.Element.E
@ -104,7 +104,7 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
}
}
class CombineLatestCollectionType<C: Collection, R where C.Iterator.Element : ObservableConvertibleType> : Producer<R> {
class CombineLatestCollectionType<C: Collection, R> : Producer<R> where C.Iterator.Element : ObservableConvertibleType {
typealias ResultSelector = ([C.Iterator.Element.E]) throws -> R
let _sources: C
@ -117,7 +117,7 @@ class CombineLatestCollectionType<C: Collection, R where C.Iterator.Element : Ob
_count = Int(self._sources.count.toIntMax())
}
override func run<O : ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestCollectionTypeSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -83,7 +83,7 @@ class CombineLatest2<E1, E2, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink2_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -171,7 +171,7 @@ class CombineLatest3<E1, E2, E3, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink3_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -266,7 +266,7 @@ class CombineLatest4<E1, E2, E3, E4, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink4_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -368,7 +368,7 @@ class CombineLatest5<E1, E2, E3, E4, E5, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink5_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -477,7 +477,7 @@ class CombineLatest6<E1, E2, E3, E4, E5, E6, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink6_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -593,7 +593,7 @@ class CombineLatest7<E1, E2, E3, E4, E5, E6, E7, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink7_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -716,7 +716,7 @@ class CombineLatest8<E1, E2, E3, E4, E5, E6, E7, E8, R> : Producer<R> {
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink8_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -87,7 +87,7 @@ class CombineLatest<%= i %><<%= (Array(1...i).map { "E\($0)" }).joined(separator
_resultSelector = resultSelector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = CombineLatestSink<%= i %>_(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -9,9 +9,9 @@
import Foundation
class ConcatSink<S: Sequence, O: ObserverType where S.Iterator.Element : ObservableConvertibleType, S.Iterator.Element.E == O.E>
class ConcatSink<S: Sequence, O: ObserverType>
: TailRecursiveSink<S, O>
, ObserverType {
, ObserverType where S.Iterator.Element : ObservableConvertibleType, S.Iterator.Element.E == O.E {
typealias Element = O.E
override init(observer: O) {
@ -44,7 +44,7 @@ class ConcatSink<S: Sequence, O: ObserverType where S.Iterator.Element : Observa
}
}
class Concat<S: Sequence where S.Iterator.Element : ObservableConvertibleType> : Producer<S.Iterator.Element.E> {
class Concat<S: Sequence> : Producer<S.Iterator.Element.E> where S.Iterator.Element : ObservableConvertibleType {
typealias Element = S.Iterator.Element.E
private let _sources: S
@ -55,7 +55,7 @@ class Concat<S: Sequence where S.Iterator.Element : ObservableConvertibleType> :
_count = count
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = ConcatSink<S, O>(observer: observer)
sink.disposable = sink.run((_sources.makeIterator(), _count))
return sink

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence.
*/
public class ConnectableObservable<Element>
open class ConnectableObservable<Element>
: Observable<Element>
, ConnectableObservableType {
@ -20,7 +20,7 @@ public class ConnectableObservable<Element>
- returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.
*/
public func connect() -> Disposable {
open func connect() -> Disposable {
abstractMethod()
}
}
@ -90,7 +90,7 @@ class ConnectableObservableAdapter<S: SubjectType>
}
}
override func subscribe<O : ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
return _subject.subscribe(observer)
}
}

View File

@ -14,7 +14,7 @@ func logEvent(_ identifier: String, dateFormat: DateFormatter, content: String)
print("\(dateFormat.string(from: Date())): \(identifier) -> \(content)")
}
class DebugSink<Source: ObservableType, O: ObserverType where O.E == Source.E> : Sink<O>, ObserverType {
class DebugSink<Source: ObservableType, O: ObserverType> : Sink<O>, ObserverType where O.E == Source.E {
typealias Element = O.E
typealias Parent = Debug<Source>
@ -73,7 +73,7 @@ class Debug<Source: ObservableType> : Producer<Source.E> {
_source = source
}
override func run<O: ObserverType where O.E == Source.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Source.E {
let sink = DebugSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -8,7 +8,7 @@
import Foundation
class DeferredSink<S: ObservableType, O: ObserverType where S.E == O.E> : Sink<O>, ObserverType {
class DeferredSink<S: ObservableType, O: ObserverType> : Sink<O>, ObserverType where S.E == O.E {
typealias E = O.E
private let _observableFactory: () throws -> S
@ -53,7 +53,7 @@ class Deferred<S: ObservableType> : Producer<S.E> {
_observableFactory = observableFactory
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = DeferredSink(observableFactory: _observableFactory, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,9 +8,9 @@
import Foundation
class DelaySubscriptionSink<ElementType, O: ObserverType where O.E == ElementType>
class DelaySubscriptionSink<ElementType, O: ObserverType>
: Sink<O>
, ObserverType {
, ObserverType where O.E == ElementType {
typealias Parent = DelaySubscription<ElementType>
typealias E = O.E
@ -41,7 +41,7 @@ class DelaySubscription<Element>: Producer<Element> {
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = DelaySubscriptionSink(parent: self, observer: observer)
sink.disposable = _scheduler.scheduleRelative((), dueTime: _dueTime) { _ in
return self._source.subscribe(sink)

View File

@ -62,7 +62,7 @@ class DistinctUntilChanged<Element, Key>: Producer<Element> {
_comparer = comparer
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = DistinctUntilChangedSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -49,7 +49,7 @@ class Do<Element> : Producer<Element> {
_onDispose = onDispose
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
_onSubscribe?()
let sink = DoSink(parent: self, observer: observer)
let subscription = _source.subscribe(sink)

View File

@ -9,7 +9,7 @@
import Foundation
class ElementAtSink<SourceType, O: ObserverType where O.E == SourceType> : Sink<O>, ObserverType {
class ElementAtSink<SourceType, O: ObserverType> : Sink<O>, ObserverType where O.E == SourceType {
typealias Parent = ElementAt<SourceType>
let _parent: Parent
@ -71,7 +71,7 @@ class ElementAt<SourceType> : Producer<SourceType> {
self._throwOnEmpty = throwOnEmpty
}
override func run<O: ObserverType where O.E == SourceType>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == SourceType {
let sink = ElementAtSink(parent: self, observer: observer)
sink.disposable = _source.subscribeSafe(sink)
return sink

View File

@ -9,7 +9,7 @@
import Foundation
class Empty<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
observer.on(.completed)
return Disposables.create()
}

View File

@ -15,7 +15,7 @@ class Error<Element> : Producer<Element> {
_error = error
}
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
observer.on(.error(_error))
return Disposables.create()
}

View File

@ -50,7 +50,7 @@ class Filter<Element> : Producer<Element> {
_predicate = predicate
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = FilterSink(predicate: _predicate, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -63,7 +63,7 @@ class Generate<S, E> : Producer<E> {
super.init()
}
override func run<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = GenerateSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -31,15 +31,15 @@ class JustScheduledSink<O: ObserverType> : Sink<O> {
}
class JustScheduled<Element> : Producer<Element> {
private let _scheduler: ImmediateSchedulerType
private let _element: Element
fileprivate let _scheduler: ImmediateSchedulerType
fileprivate let _element: Element
init(element: Element, scheduler: ImmediateSchedulerType) {
_scheduler = scheduler
_element = element
}
override func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = JustScheduledSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -53,7 +53,7 @@ class Just<Element> : Producer<Element> {
_element = element
}
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
observer.on(.next(_element))
observer.on(.completed)
return Disposables.create()

View File

@ -91,7 +91,7 @@ class MapWithIndex<SourceType, ResultType> : Producer<ResultType> {
_selector = selector
}
override func run<O: ObserverType where O.E == ResultType>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == ResultType {
let sink = MapWithIndexSink(selector: _selector, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink
@ -118,7 +118,7 @@ class Map<SourceType, ResultType>: Producer<ResultType> {
#endif
}
override func composeMap<R>(_ selector: (ResultType) throws -> R) -> Observable<R> {
override func composeMap<R>(_ selector: @escaping (ResultType) throws -> R) -> Observable<R> {
let originalSelector = _selector
return Map<SourceType, R>(source: _source, selector: { (s: SourceType) throws -> R in
let r: ResultType = try originalSelector(s)
@ -126,7 +126,7 @@ class Map<SourceType, ResultType>: Producer<ResultType> {
})
}
override func run<O: ObserverType where O.E == ResultType>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == ResultType {
let sink = MapSink(selector: _selector, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -10,10 +10,10 @@ import Foundation
// MARK: Limited concurrency version
class MergeLimitedSinkIter<S: ObservableConvertibleType, O: ObserverType where S.E == O.E>
class MergeLimitedSinkIter<S: ObservableConvertibleType, O: ObserverType>
: ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where S.E == O.E {
typealias E = O.E
typealias DisposeKey = Bag<Disposable>.KeyType
typealias Parent = MergeLimitedSink<S, O>
@ -58,11 +58,11 @@ class MergeLimitedSinkIter<S: ObservableConvertibleType, O: ObserverType where S
}
}
class MergeLimitedSink<S: ObservableConvertibleType, O: ObserverType where S.E == O.E>
class MergeLimitedSink<S: ObservableConvertibleType, O: ObserverType>
: Sink<O>
, ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where S.E == O.E {
typealias E = S
typealias QueueType = Queue<S>
@ -152,7 +152,7 @@ class MergeLimited<S: ObservableConvertibleType> : Producer<S.E> {
_maxConcurrent = maxConcurrent
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = MergeLimitedSink<S, O>(maxConcurrent: _maxConcurrent, observer: observer)
sink.disposable = sink.run(_source)
return sink
@ -161,7 +161,7 @@ class MergeLimited<S: ObservableConvertibleType> : Producer<S.E> {
// MARK: Merge
final class MergeBasicSink<S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : MergeSink<S, S, O> {
final class MergeBasicSink<S: ObservableConvertibleType, O: ObserverType> : MergeSink<S, S, O> where O.E == S.E {
override init(observer: O) {
super.init(observer: observer)
}
@ -173,7 +173,7 @@ final class MergeBasicSink<S: ObservableConvertibleType, O: ObserverType where O
// MARK: flatMap
final class FlatMapSink<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : MergeSink<SourceType, S, O> {
final class FlatMapSink<SourceType, S: ObservableConvertibleType, O: ObserverType> : MergeSink<SourceType, S, O> where O.E == S.E {
typealias Selector = (SourceType) throws -> S
private let _selector: Selector
@ -188,7 +188,7 @@ final class FlatMapSink<SourceType, S: ObservableConvertibleType, O: ObserverTyp
}
}
final class FlatMapWithIndexSink<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : MergeSink<SourceType, S, O> {
final class FlatMapWithIndexSink<SourceType, S: ObservableConvertibleType, O: ObserverType> : MergeSink<SourceType, S, O> where O.E == S.E {
typealias Selector = (SourceType, Int) throws -> S
private var _index = 0
@ -206,7 +206,7 @@ final class FlatMapWithIndexSink<SourceType, S: ObservableConvertibleType, O: Ob
// MARK: FlatMapFirst
final class FlatMapFirstSink<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : MergeSink<SourceType, S, O> {
final class FlatMapFirstSink<SourceType, S: ObservableConvertibleType, O: ObserverType> : MergeSink<SourceType, S, O> where O.E == S.E {
typealias Selector = (SourceType) throws -> S
private let _selector: Selector
@ -228,7 +228,7 @@ final class FlatMapFirstSink<SourceType, S: ObservableConvertibleType, O: Observ
// It's value is one because initial source subscription is always in CompositeDisposable
private let MergeNoIterators = 1
class MergeSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : ObserverType {
class MergeSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType> : ObserverType where O.E == S.E {
typealias Parent = MergeSink<SourceType, S, O>
typealias DisposeKey = CompositeDisposable.DisposeKey
typealias E = O.E
@ -270,9 +270,9 @@ class MergeSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType wh
}
class MergeSink<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E>
class MergeSink<SourceType, S: ObservableConvertibleType, O: ObserverType>
: Sink<O>
, ObserverType {
, ObserverType where O.E == S.E {
typealias ResultType = O.E
typealias Element = SourceType
@ -362,7 +362,7 @@ final class FlatMap<SourceType, S: ObservableConvertibleType>: Producer<S.E> {
_selector = selector
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = FlatMapSink(selector: _selector, observer: observer)
sink.disposable = sink.run(_source)
return sink
@ -381,7 +381,7 @@ final class FlatMapWithIndex<SourceType, S: ObservableConvertibleType>: Producer
_selector = selector
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = FlatMapWithIndexSink<SourceType, S, O>(selector: _selector, observer: observer)
sink.disposable = sink.run(_source)
return sink
@ -401,7 +401,7 @@ final class FlatMapFirst<SourceType, S: ObservableConvertibleType>: Producer<S.E
_selector = selector
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = FlatMapFirstSink<SourceType, S, O>(selector: _selector, observer: observer)
sink.disposable = sink.run(_source)
return sink
@ -415,7 +415,7 @@ final class Merge<S: ObservableConvertibleType> : Producer<S.E> {
_source = source
}
override func run<O: ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = MergeBasicSink<S, O>(observer: observer)
sink.disposable = sink.run(_source)
return sink

View File

@ -63,7 +63,7 @@ class Multicast<S: SubjectType, R>: Producer<R> {
_selector = selector
}
override func run<O: ObserverType where O.E == R>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == R {
let sink = MulticastSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -9,7 +9,7 @@
import Foundation
class Never<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
return Disposables.create()
}
}

View File

@ -21,7 +21,7 @@ class ObserveOn<E> : Producer<E> {
#endif
}
override func run<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = ObserveOnSink(scheduler: scheduler, observer: observer)
sink._subscription.disposable = source.subscribe(sink)
return sink

View File

@ -66,7 +66,7 @@ class ObserveOnSerialDispatchQueue<E> : Producer<E> {
#endif
}
override func run<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = ObserveOnSerialDispatchQueueSink(scheduler: scheduler, observer: observer)
sink.subscription.disposable = source.subscribe(sink)
return sink

View File

@ -13,7 +13,7 @@ class Producer<Element> : Observable<Element> {
super.init()
}
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
if !CurrentThreadScheduler.isScheduleRequired {
return run(observer)
}
@ -24,7 +24,7 @@ class Producer<Element> : Observable<Element> {
}
}
func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
abstractMethod()
}
}

View File

@ -9,9 +9,9 @@
import Foundation
class RangeProducer<E: SignedInteger> : Producer<E> {
private let _start: E
private let _count: E
private let _scheduler: ImmediateSchedulerType
fileprivate let _start: E
fileprivate let _count: E
fileprivate let _scheduler: ImmediateSchedulerType
init(start: E, count: E, scheduler: ImmediateSchedulerType) {
if count < 0 {
@ -27,14 +27,14 @@ class RangeProducer<E: SignedInteger> : Producer<E> {
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = RangeSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
}
}
class RangeSink<O: ObserverType where O.E: SignedInteger> : Sink<O> {
class RangeSink<O: ObserverType> : Sink<O> where O.E: SignedInteger {
typealias Parent = RangeProducer<O.E>
private let _parent: Parent

View File

@ -66,7 +66,7 @@ class Reduce<SourceType, AccumulateType, ResultType> : Producer<ResultType> {
_mapResult = mapResult
}
override func run<O: ObserverType where O.E == ResultType>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == ResultType {
let sink = ReduceSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -8,9 +8,9 @@
import Foundation
class RefCountSink<CO: ConnectableObservableType, O: ObserverType where CO.E == O.E>
class RefCountSink<CO: ConnectableObservableType, O: ObserverType>
: Sink<O>
, ObserverType {
, ObserverType where CO.E == O.E {
typealias Element = O.E
typealias Parent = RefCount<CO>
@ -76,7 +76,7 @@ class RefCount<CO: ConnectableObservableType>: Producer<CO.E> {
_source = source
}
override func run<O: ObserverType where O.E == CO.E>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == CO.E {
let sink = RefCountSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -9,15 +9,15 @@
import Foundation
class RepeatElement<Element> : Producer<Element> {
private let _element: Element
private let _scheduler: ImmediateSchedulerType
fileprivate let _element: Element
fileprivate let _scheduler: ImmediateSchedulerType
init(element: Element, scheduler: ImmediateSchedulerType) {
_element = element
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = RepeatElementSink(parent: self, observer: observer)
sink.disposable = sink.run()

View File

@ -8,13 +8,13 @@
import Foundation
class RetryTriggerSink<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E>
: ObserverType {
class RetryTriggerSink<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error>
: ObserverType where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E {
typealias E = TriggerObservable.E
typealias Parent = RetryWhenSequenceSinkIter<S, O, TriggerObservable, Error>
private let _parent: Parent
fileprivate let _parent: Parent
init(parent: Parent) {
_parent = parent
@ -35,14 +35,14 @@ class RetryTriggerSink<S: Sequence, O: ObserverType, TriggerObservable: Observab
}
}
class RetryWhenSequenceSinkIter<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E>
class RetryWhenSequenceSinkIter<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error>
: SingleAssignmentDisposable
, ObserverType {
, ObserverType where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E {
typealias E = O.E
typealias Parent = RetryWhenSequenceSink<S, O, TriggerObservable, Error>
private let _parent: Parent
private let _errorHandlerSubscription = SingleAssignmentDisposable()
fileprivate let _parent: Parent
fileprivate let _errorHandlerSubscription = SingleAssignmentDisposable()
init(parent: Parent) {
_parent = parent
@ -79,19 +79,19 @@ class RetryWhenSequenceSinkIter<S: Sequence, O: ObserverType, TriggerObservable:
}
}
class RetryWhenSequenceSink<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E>
: TailRecursiveSink<S, O> {
class RetryWhenSequenceSink<S: Sequence, O: ObserverType, TriggerObservable: ObservableType, Error>
: TailRecursiveSink<S, O> where S.Iterator.Element : ObservableType, S.Iterator.Element.E == O.E {
typealias Element = O.E
typealias Parent = RetryWhenSequence<S, TriggerObservable, Error>
let _lock = NSRecursiveLock()
private let _parent: Parent
fileprivate let _parent: Parent
private var _lastError: Swift.Error?
private let _errorSubject = PublishSubject<Error>()
private let _handler: Observable<TriggerObservable.E>
private let _notifier = PublishSubject<TriggerObservable.E>()
fileprivate var _lastError: Swift.Error?
fileprivate let _errorSubject = PublishSubject<Error>()
fileprivate let _handler: Observable<TriggerObservable.E>
fileprivate let _notifier = PublishSubject<TriggerObservable.E>()
init(parent: Parent, observer: O) {
_parent = parent
@ -131,18 +131,18 @@ class RetryWhenSequenceSink<S: Sequence, O: ObserverType, TriggerObservable: Obs
}
}
class RetryWhenSequence<S: Sequence, TriggerObservable: ObservableType, Error where S.Iterator.Element : ObservableType> : Producer<S.Iterator.Element.E> {
class RetryWhenSequence<S: Sequence, TriggerObservable: ObservableType, Error> : Producer<S.Iterator.Element.E> where S.Iterator.Element : ObservableType {
typealias Element = S.Iterator.Element.E
private let _sources: S
private let _notificationHandler: (Observable<Error>) -> TriggerObservable
fileprivate let _sources: S
fileprivate let _notificationHandler: (Observable<Error>) -> TriggerObservable
init(sources: S, notificationHandler: (Observable<Error>) -> TriggerObservable) {
_sources = sources
_notificationHandler = notificationHandler
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = RetryWhenSequenceSink<S, O, TriggerObservable, Error>(parent: self, observer: observer)
sink.disposable = sink.run((self._sources.makeIterator(), nil))
return sink

View File

@ -8,15 +8,15 @@
import Foundation
class SamplerSink<O: ObserverType, ElementType, SampleType where O.E == ElementType>
class SamplerSink<O: ObserverType, ElementType, SampleType>
: ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias E = SampleType
typealias Parent = SampleSequenceSink<O, SampleType>
private let _parent: Parent
fileprivate let _parent: Parent
var _lock: NSRecursiveLock {
return _parent._lock
@ -69,15 +69,15 @@ class SampleSequenceSink<O: ObserverType, SampleType>
typealias Element = O.E
typealias Parent = Sample<Element, SampleType>
private let _parent: Parent
fileprivate let _parent: Parent
let _lock = NSRecursiveLock()
// state
private var _element = nil as Element?
private var _atEnd = false
fileprivate var _element = nil as Element?
fileprivate var _atEnd = false
private let _sourceSubscription = SingleAssignmentDisposable()
fileprivate let _sourceSubscription = SingleAssignmentDisposable()
init(parent: Parent, observer: O) {
_parent = parent
@ -111,9 +111,9 @@ class SampleSequenceSink<O: ObserverType, SampleType>
}
class Sample<Element, SampleType> : Producer<Element> {
private let _source: Observable<Element>
private let _sampler: Observable<SampleType>
private let _onlyNew: Bool
fileprivate let _source: Observable<Element>
fileprivate let _sampler: Observable<SampleType>
fileprivate let _onlyNew: Bool
init(source: Observable<Element>, sampler: Observable<SampleType>, onlyNew: Bool) {
_source = source
@ -121,7 +121,7 @@ class Sample<Element, SampleType> : Producer<Element> {
_onlyNew = onlyNew
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = SampleSequenceSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,12 +8,12 @@
import Foundation
class ScanSink<ElementType, Accumulate, O: ObserverType where O.E == Accumulate> : Sink<O>, ObserverType {
class ScanSink<ElementType, Accumulate, O: ObserverType> : Sink<O>, ObserverType where O.E == Accumulate {
typealias Parent = Scan<ElementType, Accumulate>
typealias E = ElementType
private let _parent: Parent
private var _accumulate: Accumulate
fileprivate let _parent: Parent
fileprivate var _accumulate: Accumulate
init(parent: Parent, observer: O) {
_parent = parent
@ -46,9 +46,9 @@ class ScanSink<ElementType, Accumulate, O: ObserverType where O.E == Accumulate>
class Scan<Element, Accumulate>: Producer<Accumulate> {
typealias Accumulator = (Accumulate, Element) throws -> Accumulate
private let _source: Observable<Element>
private let _seed: Accumulate
private let _accumulator: Accumulator
fileprivate let _source: Observable<Element>
fileprivate let _seed: Accumulate
fileprivate let _accumulator: Accumulator
init(source: Observable<Element>, seed: Accumulate, accumulator: Accumulator) {
_source = source
@ -56,7 +56,7 @@ class Scan<Element, Accumulate>: Producer<Accumulate> {
_accumulator = accumulator
}
override func run<O : ObserverType where O.E == Accumulate>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Accumulate {
let sink = ScanSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -8,7 +8,7 @@
import Foundation
class ObservableSequenceSink<S: Sequence, O: ObserverType where S.Iterator.Element == O.E> : Sink<O> {
class ObservableSequenceSink<S: Sequence, O: ObserverType> : Sink<O> where S.Iterator.Element == O.E {
typealias Parent = ObservableSequence<S>
private let _parent: Parent
@ -33,15 +33,15 @@ class ObservableSequenceSink<S: Sequence, O: ObserverType where S.Iterator.Eleme
}
class ObservableSequence<S: Sequence> : Producer<S.Iterator.Element> {
private let _elements: S
private let _scheduler: ImmediateSchedulerType
fileprivate let _elements: S
fileprivate let _scheduler: ImmediateSchedulerType
init(elements: S, scheduler: ImmediateSchedulerType) {
_elements = elements
_scheduler = scheduler
}
override func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
let sink = ObservableSequenceSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -30,12 +30,12 @@ final class ShareReplay1<Element>
self._source = source
}
override func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
_lock.lock(); defer { _lock.unlock() }
return _synchronized_subscribe(observer)
}
func _synchronized_subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
func _synchronized_subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
if let element = self._element {
observer.on(.next(element))
}

View File

@ -28,12 +28,12 @@ final class ShareReplay1WhileConnected<Element>
self._source = source
}
override func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
_lock.lock(); defer { _lock.unlock() }
return _synchronized_subscribe(observer)
}
func _synchronized_subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
func _synchronized_subscribe<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
if let element = self._element {
observer.on(.next(element))
}

View File

@ -8,7 +8,7 @@
import Foundation
class SingleAsyncSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class SingleAsyncSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = SingleAsync<ElementType>
typealias E = ElementType
@ -60,15 +60,15 @@ class SingleAsyncSink<ElementType, O: ObserverType where O.E == ElementType> : S
class SingleAsync<Element>: Producer<Element> {
typealias Predicate = (Element) throws -> Bool
private let _source: Observable<Element>
private let _predicate: Predicate?
fileprivate let _source: Observable<Element>
fileprivate let _predicate: Predicate?
init(source: Observable<Element>, predicate: Predicate? = nil) {
_source = source
_predicate = predicate
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = SingleAsyncSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -9,7 +9,7 @@
import Foundation
class Sink<O : ObserverType> : SingleAssignmentDisposable {
private let _observer: O
fileprivate let _observer: O
init(observer: O) {
#if TRACE_RESOURCES

View File

@ -10,7 +10,7 @@ import Foundation
// count version
class SkipCountSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class SkipCountSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = SkipCount<ElementType>
typealias Element = ElementType
@ -54,7 +54,7 @@ class SkipCount<Element>: Producer<Element> {
self.count = count
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = SkipCountSink(parent: self, observer: observer)
sink.disposable = source.subscribe(sink)
@ -64,7 +64,7 @@ class SkipCount<Element>: Producer<Element> {
// time version
class SkipTimeSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class SkipTimeSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = SkipTime<ElementType>
typealias Element = ElementType
@ -120,7 +120,7 @@ class SkipTime<Element>: Producer<Element> {
self.duration = duration
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = SkipTimeSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,14 +8,14 @@
import Foundation
class SkipUntilSinkOther<ElementType, Other, O: ObserverType where O.E == ElementType>
class SkipUntilSinkOther<ElementType, Other, O: ObserverType>
: ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias Parent = SkipUntilSink<ElementType, Other, O>
typealias E = Other
private let _parent: Parent
fileprivate let _parent: Parent
var _lock: NSRecursiveLock {
return _parent._lock
@ -56,19 +56,19 @@ class SkipUntilSinkOther<ElementType, Other, O: ObserverType where O.E == Elemen
}
class SkipUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType>
class SkipUntilSink<ElementType, Other, O: ObserverType>
: Sink<O>
, ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias E = ElementType
typealias Parent = SkipUntil<E, Other>
let _lock = NSRecursiveLock()
private let _parent: Parent
private var _forwardElements = false
fileprivate let _parent: Parent
fileprivate var _forwardElements = false
private let _sourceSubscription = SingleAssignmentDisposable()
fileprivate let _sourceSubscription = SingleAssignmentDisposable()
init(parent: Parent, observer: O) {
_parent = parent
@ -109,15 +109,15 @@ class SkipUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType
class SkipUntil<Element, Other>: Producer<Element> {
private let _source: Observable<Element>
private let _other: Observable<Other>
fileprivate let _source: Observable<Element>
fileprivate let _other: Observable<Other>
init(source: Observable<Element>, other: Observable<Other>) {
_source = source
_other = other
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = SkipUntilSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -6,13 +6,13 @@
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
class SkipWhileSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class SkipWhileSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = SkipWhile<ElementType>
typealias Element = ElementType
private let _parent: Parent
private var _running = false
fileprivate let _parent: Parent
fileprivate var _running = false
init(parent: Parent, observer: O) {
_parent = parent
@ -42,14 +42,14 @@ class SkipWhileSink<ElementType, O: ObserverType where O.E == ElementType> : Sin
}
}
class SkipWhileSinkWithIndex<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class SkipWhileSinkWithIndex<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = SkipWhile<ElementType>
typealias Element = ElementType
private let _parent: Parent
private var _index = 0
private var _running = false
fileprivate let _parent: Parent
fileprivate var _index = 0
fileprivate var _running = false
init(parent: Parent, observer: O) {
_parent = parent
@ -84,9 +84,9 @@ class SkipWhile<Element>: Producer<Element> {
typealias Predicate = (Element) throws -> Bool
typealias PredicateWithIndex = (Element, Int) throws -> Bool
private let _source: Observable<Element>
private let _predicate: Predicate!
private let _predicateWithIndex: PredicateWithIndex!
fileprivate let _source: Observable<Element>
fileprivate let _predicate: Predicate!
fileprivate let _predicateWithIndex: PredicateWithIndex!
init(source: Observable<Element>, predicate: Predicate) {
_source = source
@ -100,7 +100,7 @@ class SkipWhile<Element>: Producer<Element> {
_predicateWithIndex = predicate
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
if let _ = _predicate {
let sink = SkipWhileSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)

View File

@ -18,7 +18,7 @@ class StartWith<Element>: Producer<Element> {
super.init()
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
for e in elements {
observer.on(.next(e))
}

View File

@ -8,7 +8,7 @@
import Foundation
class SubscribeOnSink<Ob: ObservableType, O: ObserverType where Ob.E == O.E> : Sink<O>, ObserverType {
class SubscribeOnSink<Ob: ObservableType, O: ObserverType> : Sink<O>, ObserverType where Ob.E == O.E {
typealias Element = O.E
typealias Parent = SubscribeOn<Ob>
@ -52,7 +52,7 @@ class SubscribeOn<Ob: ObservableType> : Producer<Ob.E> {
self.scheduler = scheduler
}
override func run<O : ObserverType where O.E == Ob.E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Ob.E {
let sink = SubscribeOnSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,22 +8,22 @@
import Foundation
class SwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType where S.E == O.E>
class SwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType>
: Sink<O>
, ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where S.E == O.E {
typealias E = SourceType
private let _subscriptions: SingleAssignmentDisposable = SingleAssignmentDisposable()
private let _innerSubscription: SerialDisposable = SerialDisposable()
fileprivate let _subscriptions: SingleAssignmentDisposable = SingleAssignmentDisposable()
fileprivate let _innerSubscription: SerialDisposable = SerialDisposable()
let _lock = NSRecursiveLock()
// state
private var _stopped = false
private var _latest = 0
private var _hasLatest = false
fileprivate var _stopped = false
fileprivate var _latest = 0
fileprivate var _hasLatest = false
override init(observer: O) {
super.init(observer: observer)
@ -79,16 +79,16 @@ class SwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType where
}
}
class SwitchSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType where S.E == O.E>
class SwitchSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType>
: ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where S.E == O.E {
typealias E = S.E
typealias Parent = SwitchSink<SourceType, S, O>
private let _parent: Parent
private let _id: Int
private let _self: Disposable
fileprivate let _parent: Parent
fileprivate let _id: Int
fileprivate let _self: Disposable
var _lock: NSRecursiveLock {
return _parent._lock
@ -133,7 +133,7 @@ class SwitchSinkIter<SourceType, S: ObservableConvertibleType, O: ObserverType w
// MARK: Specializations
final class SwitchIdentitySink<S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : SwitchSink<S, S, O> {
final class SwitchIdentitySink<S: ObservableConvertibleType, O: ObserverType> : SwitchSink<S, S, O> where O.E == S.E {
override init(observer: O) {
super.init(observer: observer)
}
@ -143,10 +143,10 @@ final class SwitchIdentitySink<S: ObservableConvertibleType, O: ObserverType whe
}
}
final class MapSwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : SwitchSink<SourceType, S, O> {
final class MapSwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType> : SwitchSink<SourceType, S, O> where O.E == S.E {
typealias Selector = (SourceType) throws -> S
private let _selector: Selector
fileprivate let _selector: Selector
init(selector: Selector, observer: O) {
_selector = selector
@ -161,13 +161,13 @@ final class MapSwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverT
// MARK: Producers
final class Switch<S: ObservableConvertibleType> : Producer<S.E> {
private let _source: Observable<S>
fileprivate let _source: Observable<S>
init(source: Observable<S>) {
_source = source
}
override func run<O : ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = SwitchIdentitySink<S, O>(observer: observer)
sink.disposable = sink.run(_source)
return sink
@ -177,15 +177,15 @@ final class Switch<S: ObservableConvertibleType> : Producer<S.E> {
final class FlatMapLatest<SourceType, S: ObservableConvertibleType> : Producer<S.E> {
typealias Selector = (SourceType) throws -> S
private let _source: Observable<SourceType>
private let _selector: Selector
fileprivate let _source: Observable<SourceType>
fileprivate let _selector: Selector
init(source: Observable<SourceType>, selector: Selector) {
_source = source
_selector = selector
}
override func run<O : ObserverType where O.E == S.E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == S.E {
let sink = MapSwitchSink<SourceType, S, O>(selector: _selector, observer: observer)
sink.disposable = sink.run(_source)
return sink

View File

@ -10,7 +10,7 @@ import Foundation
// count version
class TakeCountSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class TakeCountSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = TakeCount<ElementType>
typealias E = ElementType
@ -50,8 +50,8 @@ class TakeCountSink<ElementType, O: ObserverType where O.E == ElementType> : Sin
}
class TakeCount<Element>: Producer<Element> {
private let _source: Observable<Element>
private let _count: Int
fileprivate let _source: Observable<Element>
fileprivate let _count: Int
init(source: Observable<Element>, count: Int) {
if count < 0 {
@ -61,7 +61,7 @@ class TakeCount<Element>: Producer<Element> {
_count = count
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = TakeCountSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink
@ -70,15 +70,15 @@ class TakeCount<Element>: Producer<Element> {
// time version
class TakeTimeSink<ElementType, O: ObserverType where O.E == ElementType>
class TakeTimeSink<ElementType, O: ObserverType>
: Sink<O>
, LockOwnerType
, ObserverType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias Parent = TakeTime<ElementType>
typealias E = ElementType
private let _parent: Parent
fileprivate let _parent: Parent
let _lock = NSRecursiveLock()
@ -126,9 +126,9 @@ class TakeTimeSink<ElementType, O: ObserverType where O.E == ElementType>
class TakeTime<Element> : Producer<Element> {
typealias TimeInterval = RxTimeInterval
private let _source: Observable<Element>
private let _duration: TimeInterval
private let _scheduler: SchedulerType
fileprivate let _source: Observable<Element>
fileprivate let _duration: TimeInterval
fileprivate let _scheduler: SchedulerType
init(source: Observable<Element>, duration: TimeInterval, scheduler: SchedulerType) {
_source = source
@ -136,7 +136,7 @@ class TakeTime<Element> : Producer<Element> {
_duration = duration
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = TakeTimeSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -9,7 +9,7 @@
import Foundation
class TakeLastSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {
class TakeLastSink<ElementType, O: ObserverType> : Sink<O>, ObserverType where O.E == ElementType {
typealias Parent = TakeLast<ElementType>
typealias E = ElementType
@ -44,8 +44,8 @@ class TakeLastSink<ElementType, O: ObserverType where O.E == ElementType> : Sink
}
class TakeLast<Element>: Producer<Element> {
private let _source: Observable<Element>
private let _count: Int
fileprivate let _source: Observable<Element>
fileprivate let _count: Int
init(source: Observable<Element>, count: Int) {
if count < 0 {
@ -55,7 +55,7 @@ class TakeLast<Element>: Producer<Element> {
_count = count
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = TakeLastSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

View File

@ -8,20 +8,20 @@
import Foundation
class TakeUntilSinkOther<ElementType, Other, O: ObserverType where O.E == ElementType>
class TakeUntilSinkOther<ElementType, Other, O: ObserverType>
: ObserverType
, LockOwnerType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias Parent = TakeUntilSink<ElementType, Other, O>
typealias E = Other
private let _parent: Parent
fileprivate let _parent: Parent
var _lock: NSRecursiveLock {
return _parent._lock
}
private let _subscription = SingleAssignmentDisposable()
fileprivate let _subscription = SingleAssignmentDisposable()
init(parent: Parent) {
_parent = parent
@ -55,20 +55,20 @@ class TakeUntilSinkOther<ElementType, Other, O: ObserverType where O.E == Elemen
#endif
}
class TakeUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType>
class TakeUntilSink<ElementType, Other, O: ObserverType>
: Sink<O>
, LockOwnerType
, ObserverType
, SynchronizedOnType {
, SynchronizedOnType where O.E == ElementType {
typealias E = ElementType
typealias Parent = TakeUntil<E, Other>
private let _parent: Parent
fileprivate let _parent: Parent
let _lock = NSRecursiveLock()
// state
private var _open = false
fileprivate var _open = false
init(parent: Parent, observer: O) {
_parent = parent
@ -104,15 +104,15 @@ class TakeUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType
class TakeUntil<Element, Other>: Producer<Element> {
private let _source: Observable<Element>
private let _other: Observable<Other>
fileprivate let _source: Observable<Element>
fileprivate let _other: Observable<Other>
init(source: Observable<Element>, other: Observable<Other>) {
_source = source
_other = other
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = TakeUntilSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,15 +8,15 @@
import Foundation
class TakeWhileSink<ElementType, O: ObserverType where O.E == ElementType>
class TakeWhileSink<ElementType, O: ObserverType>
: Sink<O>
, ObserverType {
, ObserverType where O.E == ElementType {
typealias Parent = TakeWhile<ElementType>
typealias Element = ElementType
private let _parent: Parent
fileprivate let _parent: Parent
private var _running = true
fileprivate var _running = true
init(parent: Parent, observer: O) {
_parent = parent
@ -52,16 +52,16 @@ class TakeWhileSink<ElementType, O: ObserverType where O.E == ElementType>
}
class TakeWhileSinkWithIndex<ElementType, O: ObserverType where O.E == ElementType>
class TakeWhileSinkWithIndex<ElementType, O: ObserverType>
: Sink<O>
, ObserverType {
, ObserverType where O.E == ElementType {
typealias Parent = TakeWhile<ElementType>
typealias Element = ElementType
private let _parent: Parent
fileprivate let _parent: Parent
private var _running = true
private var _index = 0
fileprivate var _running = true
fileprivate var _index = 0
init(parent: Parent, observer: O) {
_parent = parent
@ -102,9 +102,9 @@ class TakeWhile<Element>: Producer<Element> {
typealias Predicate = (Element) throws -> Bool
typealias PredicateWithIndex = (Element, Int) throws -> Bool
private let _source: Observable<Element>
private let _predicate: Predicate!
private let _predicateWithIndex: PredicateWithIndex!
fileprivate let _source: Observable<Element>
fileprivate let _predicate: Predicate!
fileprivate let _predicateWithIndex: PredicateWithIndex!
init(source: Observable<Element>, predicate: Predicate) {
_source = source
@ -118,7 +118,7 @@ class TakeWhile<Element>: Producer<Element> {
_predicateWithIndex = predicate
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
if let _ = _predicate {
let sink = TakeWhileSink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)

View File

@ -95,7 +95,7 @@ class Throttle<Element> : Producer<Element> {
_scheduler = scheduler
}
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = ThrottleSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,7 +8,7 @@
import Foundation
class TimeoutSink<ElementType, O: ObserverType where O.E == ElementType>: Sink<O>, LockOwnerType, ObserverType {
class TimeoutSink<ElementType, O: ObserverType>: Sink<O>, LockOwnerType, ObserverType where O.E == ElementType {
typealias E = ElementType
typealias Parent = Timeout<E>
@ -112,7 +112,7 @@ class Timeout<Element> : Producer<Element> {
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == Element {
let sink = TimeoutSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink

View File

@ -8,7 +8,7 @@
import Foundation
class TimerSink<O: ObserverType where O.E : SignedInteger > : Sink<O> {
class TimerSink<O: ObserverType> : Sink<O> where O.E : SignedInteger {
typealias Parent = Timer<O.E>
private let _parent: Parent
@ -26,7 +26,7 @@ class TimerSink<O: ObserverType where O.E : SignedInteger > : Sink<O> {
}
}
class TimerOneOffSink<O: ObserverType where O.E : SignedInteger> : Sink<O> {
class TimerOneOffSink<O: ObserverType> : Sink<O> where O.E : SignedInteger {
typealias Parent = Timer<O.E>
private let _parent: Parent
@ -47,9 +47,9 @@ class TimerOneOffSink<O: ObserverType where O.E : SignedInteger> : Sink<O> {
}
class Timer<E: SignedInteger>: Producer<E> {
private let _scheduler: SchedulerType
private let _dueTime: RxTimeInterval
private let _period: RxTimeInterval?
fileprivate let _scheduler: SchedulerType
fileprivate let _dueTime: RxTimeInterval
fileprivate let _period: RxTimeInterval?
init(dueTime: RxTimeInterval, period: RxTimeInterval?, scheduler: SchedulerType) {
_scheduler = scheduler
@ -57,7 +57,7 @@ class Timer<E: SignedInteger>: Producer<E> {
_period = period
}
override func run<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
override func run<O : ObserverType>(_ observer: O) -> Disposable where O.E == E {
if let _ = _period {
let sink = TimerSink(parent: self, observer: observer)
sink.disposable = sink.run()

View File

@ -8,7 +8,7 @@
import Foundation
class ToArraySink<SourceType, O: ObserverType where O.E == [SourceType]> : Sink<O>, ObserverType {
class ToArraySink<SourceType, O: ObserverType> : Sink<O>, ObserverType where O.E == [SourceType] {
typealias Parent = ToArray<SourceType>
let _parent: Parent
@ -42,7 +42,7 @@ class ToArray<SourceType> : Producer<[SourceType]> {
_source = source
}
override func run<O: ObserverType where O.E == [SourceType]>(_ observer: O) -> Disposable {
override func run<O: ObserverType>(_ observer: O) -> Disposable where O.E == [SourceType] {
let sink = ToArraySink(parent: self, observer: observer)
sink.disposable = _source.subscribe(sink)
return sink

Some files were not shown because too many files have changed in this diff Show More