0001    //
0002    //  Scan.swift
0003    //  RxSwift
0004    //
0005    //  Created by Krunoslav Zaher on 6/14/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    class ScanSink
Scan.swift:60
        let sink = ScanSink(parent: self, observer: observer)
<ElementType
Scan.swift:12
    typealias Parent = Scan<ElementType, Accumulate>
Scan.swift:13
    typealias E = ElementType
Scan.swift:24
    func on(event: Event<ElementType>) {
, Accumulate
Scan.swift:12
    typealias Parent = Scan<ElementType, Accumulate>
Scan.swift:16
    private var _accumulate: Accumulate
, O
Scan.swift:11
class ScanSink<ElementType, Accumulate, O: ObserverType where O.E == Accumulate> : Sink<O>, ObserverType {
Scan.swift:18
    init(parent: Parent, observer: O) {
: ObserverType where O.E == Accumulate> : Sink<O>, ObserverType { 0012 typealias Parent
Scan.swift:15
    private let _parent: Parent
Scan.swift:18
    init(parent: Parent, observer: O) {
= Scan<ElementType, Accumulate> 0013 typealias E = ElementType 0014 0015 private let _parent
Scan.swift:19
        _parent = parent
Scan.swift:28
                _accumulate = try _parent._accumulator(_accumulate, element)
: Parent 0016 private var _accumulate
Scan.swift:20
        _accumulate = parent._seed
Scan.swift:28
                _accumulate = try _parent._accumulator(_accumulate, element)
Scan.swift:28
                _accumulate = try _parent._accumulator(_accumulate, element)
Scan.swift:29
                forwardOn(.Next(_accumulate))
: Accumulate 0017 0018 init
Scan.swift:60
        let sink = ScanSink(parent: self, observer: observer)
(parent: Parent, observer: O) { 0019 _parent = parent 0020 _accumulate = parent._seed 0021 super.init(observer: observer) 0022 } 0023 0024 func on(event: Event<ElementType>) { 0025 switch event { 0026 case .Next(let element): 0027 do { 0028 _accumulate = try _parent._accumulator(_accumulate, element) 0029 forwardOn(.Next(_accumulate)) 0030 } 0031 catch let error { 0032 forwardOn(.Error(error)) 0033 dispose() 0034 } 0035 case .Error(let error): 0036 forwardOn(.Error(error)) 0037 dispose() 0038 case .Completed: 0039 forwardOn(.Completed) 0040 dispose() 0041 } 0042 } 0043 0044 } 0045 0046 class Scan
Observable+Single.swift:256
        return Scan(source: self.asObservable(), seed: seed, accumulator: accumulator)
Scan.swift:12
    typealias Parent = Scan<ElementType, Accumulate>
<Element
Scan.swift:47
    typealias Accumulator = (Accumulate, Element) throws -> Accumulate
Scan.swift:49
    private let _source: Observable<Element>
Scan.swift:53
    init(source: Observable<Element>, seed: Accumulate, accumulator: Accumulator) {
, Accumulate
Scan.swift:46
class Scan<Element, Accumulate>: Producer<Accumulate> {
Scan.swift:47
    typealias Accumulator = (Accumulate, Element) throws -> Accumulate
Scan.swift:47
    typealias Accumulator = (Accumulate, Element) throws -> Accumulate
Scan.swift:50
    private let _seed: Accumulate
Scan.swift:53
    init(source: Observable<Element>, seed: Accumulate, accumulator: Accumulator) {
Scan.swift:59
    override func run<O : ObserverType where O.E == Accumulate>(observer: O) -> Disposable {
>: Producer<Accumulate> { 0047 typealias Accumulator
Scan.swift:51
    private let _accumulator: Accumulator
Scan.swift:53
    init(source: Observable<Element>, seed: Accumulate, accumulator: Accumulator) {
= (Accumulate, Element) throws -> Accumulate 0048 0049 private let _source
Scan.swift:54
        _source = source
Scan.swift:61
        sink.disposable = _source.subscribe(sink)
: Observable<Element> 0050 private let _seed
Scan.swift:20
        _accumulate = parent._seed
Scan.swift:55
        _seed = seed
: Accumulate 0051 private let _accumulator
Scan.swift:28
                _accumulate = try _parent._accumulator(_accumulate, element)
Scan.swift:56
        _accumulator = accumulator
: Accumulator 0052 0053 init
Observable+Single.swift:256
        return Scan(source: self.asObservable(), seed: seed, accumulator: accumulator)
(source: Observable<Element>, seed: Accumulate, accumulator: Accumulator) { 0054 _source = source 0055 _seed = seed 0056 _accumulator = accumulator 0057 } 0058 0059 override func run<O : ObserverType where O.E == Accumulate>(observer: O) -> Disposable { 0060 let sink = ScanSink(parent: self, observer: observer) 0061 sink.disposable = _source.subscribe(sink) 0062 return sink 0063 } 0064 }