0001    //
0002    //  Generate.swift
0003    //  Rx
0004    //
0005    //  Created by Krunoslav Zaher on 9/2/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    class GenerateSink
Generate.swift:67
        let sink = GenerateSink(parent: self, observer: observer)
<S
Generate.swift:12
    typealias Parent = Generate<S, O.E>
Generate.swift:16
    private var _state: S
, O
Generate.swift:11
class GenerateSink<S, O: ObserverType> : Sink<O> {
Generate.swift:12
    typealias Parent = Generate<S, O.E>
Generate.swift:18
    init(parent: Parent, observer: O) {
: ObserverType> : Sink<O> { 0012 typealias Parent
Generate.swift:14
    private let _parent: Parent
Generate.swift:18
    init(parent: Parent, observer: O) {
= Generate<S, O.E> 0013 0014 private let _parent
Generate.swift:19
        _parent = parent
Generate.swift:25
        return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void in
Generate.swift:28
                    self._state = try self._parent._iterate(self._state)
Generate.swift:31
                if try self._parent._condition(self._state) {
Generate.swift:32
                    let result = try self._parent._resultSelector(self._state)
: Parent 0015 0016 private var _state
Generate.swift:20
        _state = parent._initialState
Generate.swift:28
                    self._state = try self._parent._iterate(self._state)
Generate.swift:28
                    self._state = try self._parent._iterate(self._state)
Generate.swift:31
                if try self._parent._condition(self._state) {
Generate.swift:32
                    let result = try self._parent._resultSelector(self._state)
: S 0017 0018 init
Generate.swift:67
        let sink = GenerateSink(parent: self, observer: observer)
(parent: Parent, observer: O) { 0019 _parent = parent 0020 _state = parent._initialState 0021 super.init(observer: observer) 0022 } 0023 0024 func run
Generate.swift:68
        sink.disposable = sink.run()
() -> Disposable { 0025 return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void in 0026 do { 0027 if !isFirst { 0028 self._state = try self._parent._iterate(self._state) 0029 } 0030 0031 if try self._parent._condition(self._state) { 0032 let result = try self._parent._resultSelector(self._state) 0033 self.forwardOn(.Next(result)) 0034 0035 recurse(false) 0036 } 0037 else { 0038 self.forwardOn(.Completed) 0039 self.dispose() 0040 } 0041 } 0042 catch let error { 0043 self.forwardOn(.Error(error)) 0044 self.dispose() 0045 } 0046 } 0047 } 0048 } 0049 0050 class Generate
Generate.swift:12
    typealias Parent = Generate<S, O.E>
Observable+Creation.swift:144
        return Generate(initialState: initialState, condition: condition, iterate: iterate, resultSelector: { $0 }, scheduler: scheduler)
<S
Generate.swift:51
    private let _initialState: S
Generate.swift:52
    private let _condition: S throws -> Bool
Generate.swift:53
    private let _iterate: S throws -> S
Generate.swift:53
    private let _iterate: S throws -> S
Generate.swift:54
    private let _resultSelector: S throws -> E
Generate.swift:57
    init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {
Generate.swift:57
    init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {
Generate.swift:57
    init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {
Generate.swift:57
    init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {
Generate.swift:57
    init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {
, E
Generate.swift:50
class Generate<S, E> : Producer<E> {
> : Producer<E> { 0051 private let _initialState
Generate.swift:20
        _state = parent._initialState
Generate.swift:58
        _initialState = initialState
: S 0052 private let _condition
Generate.swift:31
                if try self._parent._condition(self._state) {
Generate.swift:59
        _condition = condition
: S throws -> Bool 0053 private let _iterate
Generate.swift:28
                    self._state = try self._parent._iterate(self._state)
Generate.swift:60
        _iterate = iterate
: S throws -> S 0054 private let _resultSelector
Generate.swift:32
                    let result = try self._parent._resultSelector(self._state)
Generate.swift:61
        _resultSelector = resultSelector
: S throws -> E 0055 private let _scheduler
Generate.swift:25
        return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void in
Generate.swift:62
        _scheduler = scheduler
: ImmediateSchedulerType 0056 0057 init
Observable+Creation.swift:144
        return Generate(initialState: initialState, condition: condition, iterate: iterate, resultSelector: { $0 }, scheduler: scheduler)
(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) { 0058 _initialState = initialState 0059 _condition = condition 0060 _iterate = iterate 0061 _resultSelector = resultSelector 0062 _scheduler = scheduler 0063 super.init() 0064 } 0065 0066 override func run<O : ObserverType where O.E == E>(observer: O) -> Disposable { 0067 let sink = GenerateSink(parent: self, observer: observer) 0068 sink.disposable = sink.run() 0069 return sink 0070 } 0071 }