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:
parent
7adc86f7d2
commit
fcf8e4d092
|
|
@ -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 ",
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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() })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,4 +41,4 @@ class RxTarget : NSObject
|
|||
OSAtomicDecrement32(&resourceCount)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -27,4 +27,4 @@ struct InfiniteSequence<E> : Sequence {
|
|||
return repeatedValue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import Foundation
|
|||
/**
|
||||
Base class for all disposables.
|
||||
*/
|
||||
public class DisposeBase {
|
||||
open class DisposeBase {
|
||||
init() {
|
||||
#if TRACE_RESOURCES
|
||||
let _ = AtomicIncrement(&resourceCount)
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue