0001 // 0002 // ElementAt.swift 0003 // Rx 0004 // 0005 // Created by Junior B. on 21/10/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 0012 class ElementAtSink<SourceType
ElementAt.swift:75 let sink = ElementAtSink(parent: self, observer: observer), O
ElementAt.swift:13 typealias Parent = ElementAt<SourceType>ElementAt.swift:25 func on(event: Event<SourceType>) {: ObserverType where O.E == SourceType> : Sink<O>, ObserverType { 0013 typealias Parent
ElementAt.swift:12 class ElementAtSink<SourceType, O: ObserverType where O.E == SourceType> : Sink<O>, ObserverType {ElementAt.swift:18 init(parent: Parent, observer: O) {= ElementAt<SourceType> 0014 0015 let _parent
ElementAt.swift:15 let _parent: ParentElementAt.swift:18 init(parent: Parent, observer: O) {: Parent 0016 var _i
ElementAt.swift:19 _parent = parentElementAt.swift:47 if (_parent._throwOnEmpty) {: Int 0017 0018 init
ElementAt.swift:20 _i = parent._indexElementAt.swift:29 if (_i == 0) {ElementAt.swift:36 try decrementChecked(&_i)(parent: Parent, observer: O) { 0019 _parent = parent 0020 _i = parent._index 0021 0022 super.init(observer: observer) 0023 } 0024 0025 func on(event: Event<SourceType>) { 0026 switch event { 0027 case .Next(_): 0028 0029 if (_i == 0) { 0030 forwardOn(event) 0031 forwardOn(.Completed) 0032 self.dispose() 0033 } 0034 0035 do { 0036 try decrementChecked(&_i) 0037 } catch(let e) { 0038 forwardOn(.Error(e)) 0039 dispose() 0040 return 0041 } 0042 0043 case .Error(let e): 0044 forwardOn(.Error(e)) 0045 self.dispose() 0046 case .Completed: 0047 if (_parent._throwOnEmpty) { 0048 forwardOn(.Error(RxError.ArgumentOutOfRange)) 0049 } else { 0050 forwardOn(.Completed) 0051 } 0052 0053 self.dispose() 0054 } 0055 } 0056 } 0057 0058 class ElementAt
ElementAt.swift:75 let sink = ElementAtSink(parent: self, observer: observer)<SourceType
ElementAt.swift:13 typealias Parent = ElementAt<SourceType>Observable+StandardSequenceOperators.swift:286 return ElementAt(source: asObservable(), index: index, throwOnEmpty: true)> : Producer<SourceType> { 0059 0060 let _source
ElementAt.swift:58 class ElementAt<SourceType> : Producer<SourceType> {ElementAt.swift:60 let _source: Observable<SourceType>ElementAt.swift:64 init(source: Observable<SourceType>, index: Int, throwOnEmpty: Bool) {ElementAt.swift:74 override func run<O: ObserverType where O.E == SourceType>(observer: O) -> Disposable {: Observable<SourceType> 0061 let _throwOnEmpty
ElementAt.swift:69 self._source = sourceElementAt.swift:76 sink.disposable = _source.subscribeSafe(sink): Bool 0062 let _index
ElementAt.swift:47 if (_parent._throwOnEmpty) {ElementAt.swift:71 self._throwOnEmpty = throwOnEmpty: Int 0063 0064 init
ElementAt.swift:20 _i = parent._indexElementAt.swift:70 self._index = index(source: Observable<SourceType>, index: Int, throwOnEmpty: Bool) { 0065 if index < 0 { 0066 rxFatalError("index can't be negative") 0067 } 0068 0069 self._source = source 0070 self._index = index 0071 self._throwOnEmpty = throwOnEmpty 0072 } 0073 0074 override func run<O: ObserverType where O.E == SourceType>(observer: O) -> Disposable { 0075 let sink = ElementAtSink(parent: self, observer: observer) 0076 sink.disposable = _source.subscribeSafe(sink) 0077 return sink 0078 } 0079 }
Observable+StandardSequenceOperators.swift:286 return ElementAt(source: asObservable(), index: index, throwOnEmpty: true)