0001    //
0002    //  CompositeDisposable.swift
0003    //  Rx
0004    //
0005    //  Created by Krunoslav Zaher on 2/20/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    /**
0012    Represents a group of disposable resources that are disposed together.
0013    */
0014    public class CompositeDisposable
CombineLatest+arity.swift:60
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:145
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:237
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:336
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:442
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:555
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:675
        return CompositeDisposable(disposables: [
CombineLatest+CollectionType.swift:103
        return CompositeDisposable(disposables: _subscriptions.map { $0 })
ConcurrentDispatchQueueScheduler.swift:98
        let compositeDisposable = CompositeDisposable()
Merge.swift:79
    private let _group = CompositeDisposable()
Merge.swift:96
    func subscribe(innerSource: E, group: CompositeDisposable) {
Merge.swift:233
    typealias DisposeKey = CompositeDisposable.DisposeKey
Merge.swift:286
    private let _group = CompositeDisposable()
OperationQueueScheduler.swift:37
        let compositeDisposable = CompositeDisposable()
RecursiveScheduler.swift:20
    private let _group = CompositeDisposable()
RecursiveScheduler.swift:41
        var removeKey: CompositeDisposable.DisposeKey? = nil
RecursiveScheduler.swift:84
        var removeKey: CompositeDisposable.DisposeKey? = nil
RecursiveScheduler.swift:132
    private let _group = CompositeDisposable()
RecursiveScheduler.swift:154
        var removeKey: CompositeDisposable.DisposeKey? = nil
SerialDispatchQueueScheduler.swift:135
        let compositeDisposable = CompositeDisposable()
VirtualTimeScheduler.swift:120
        let compositeDisposable = CompositeDisposable()
Window.swift:29
    private let _groupDisposable = CompositeDisposable()
Zip+arity.swift:72
        return CompositeDisposable(disposables: [
Zip+arity.swift:170
        return CompositeDisposable(disposables: [
Zip+arity.swift:276
        return CompositeDisposable(disposables: [
Zip+arity.swift:390
        return CompositeDisposable(disposables: [
Zip+arity.swift:512
        return CompositeDisposable(disposables: [
Zip+arity.swift:642
        return CompositeDisposable(disposables: [
Zip+arity.swift:780
        return CompositeDisposable(disposables: [
Zip+CollectionType.swift:115
        return CompositeDisposable(disposables: _subscriptions.map { $0 })
: DisposeBase, Disposable, Cancelable { 0015 public typealias DisposeKey
CompositeDisposable.swift:65
    public func addDisposable(disposable: Disposable) -> DisposeKey? {
CompositeDisposable.swift:75
    private func _addDisposable(disposable: Disposable) -> DisposeKey? {
CompositeDisposable.swift:96
    public func removeDisposable(disposeKey: DisposeKey) {
CompositeDisposable.swift:100
    private func _removeDisposable(disposeKey: DisposeKey) -> Disposable? {
Merge.swift:233
    typealias DisposeKey = CompositeDisposable.DisposeKey
RecursiveScheduler.swift:41
        var removeKey: CompositeDisposable.DisposeKey? = nil
RecursiveScheduler.swift:84
        var removeKey: CompositeDisposable.DisposeKey? = nil
RecursiveScheduler.swift:154
        var removeKey: CompositeDisposable.DisposeKey? = nil
= Bag<Disposable>.KeyType 0016 0017 private var _lock
CompositeDisposable.swift:24
            _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:24
            _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:76
        _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:76
        _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:86
            _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:86
            _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:101
        _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:101
        _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:115
        _lock.lock(); defer { _lock.unlock() }
CompositeDisposable.swift:115
        _lock.lock(); defer { _lock.unlock() }
= SpinLock() 0018 0019 // state 0020 private var _disposables
CompositeDisposable.swift:25
            return _disposables == nil
CompositeDisposable.swift:36
        _disposables!.insert(disposable1)
CompositeDisposable.swift:37
        _disposables!.insert(disposable2)
CompositeDisposable.swift:44
        _disposables!.insert(disposable1)
CompositeDisposable.swift:45
        _disposables!.insert(disposable2)
CompositeDisposable.swift:46
        _disposables!.insert(disposable3)
CompositeDisposable.swift:54
            _disposables!.insert(disposable)
CompositeDisposable.swift:78
        return _disposables?.insert(disposable)
CompositeDisposable.swift:87
            return _disposables?.count ?? 0
CompositeDisposable.swift:102
        return _disposables?.removeKey(disposeKey)
CompositeDisposable.swift:117
        let disposeBag = _disposables
CompositeDisposable.swift:118
        _disposables = nil
: Bag<Disposable>? = Bag() 0021 0022 public var disposed
ConcurrentDispatchQueueScheduler.swift:102
            if compositeDisposable.disposed {
OperationQueueScheduler.swift:42
            if compositeDisposableWeak?.disposed ?? false {
RecursiveScheduler.swift:44
            if self._group.disposed {
RecursiveScheduler.swift:87
            if self._group.disposed {
RecursiveScheduler.swift:157
            if self._group.disposed {
SerialDispatchQueueScheduler.swift:139
            if compositeDisposable.disposed {
: Bool { 0023 get { 0024 _lock.lock(); defer { _lock.unlock() } 0025 return _disposables == nil 0026 } 0027 } 0028 0029 public override init
ConcurrentDispatchQueueScheduler.swift:98
        let compositeDisposable = CompositeDisposable()
Merge.swift:79
    private let _group = CompositeDisposable()
Merge.swift:286
    private let _group = CompositeDisposable()
OperationQueueScheduler.swift:37
        let compositeDisposable = CompositeDisposable()
RecursiveScheduler.swift:20
    private let _group = CompositeDisposable()
RecursiveScheduler.swift:132
    private let _group = CompositeDisposable()
SerialDispatchQueueScheduler.swift:135
        let compositeDisposable = CompositeDisposable()
VirtualTimeScheduler.swift:120
        let compositeDisposable = CompositeDisposable()
Window.swift:29
    private let _groupDisposable = CompositeDisposable()
() { 0030 } 0031 0032 /** 0033 Initializes a new instance of composite disposable with the specified number of disposables. 0034 */ 0035 public init(_ disposable1: Disposable, _ disposable2: Disposable) { 0036 _disposables!.insert(disposable1) 0037 _disposables!.insert(disposable2) 0038 } 0039 0040 /** 0041 Initializes a new instance of composite disposable with the specified number of disposables. 0042 */ 0043 public init(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) { 0044 _disposables!.insert(disposable1) 0045 _disposables!.insert(disposable2) 0046 _disposables!.insert(disposable3) 0047 } 0048 0049 /** 0050 Initializes a new instance of composite disposable with the specified number of disposables. 0051 */ 0052 public init
CombineLatest+arity.swift:60
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:145
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:237
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:336
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:442
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:555
        return CompositeDisposable(disposables: [
CombineLatest+arity.swift:675
        return CompositeDisposable(disposables: [
CombineLatest+CollectionType.swift:103
        return CompositeDisposable(disposables: _subscriptions.map { $0 })
Zip+arity.swift:72
        return CompositeDisposable(disposables: [
Zip+arity.swift:170
        return CompositeDisposable(disposables: [
Zip+arity.swift:276
        return CompositeDisposable(disposables: [
Zip+arity.swift:390
        return CompositeDisposable(disposables: [
Zip+arity.swift:512
        return CompositeDisposable(disposables: [
Zip+arity.swift:642
        return CompositeDisposable(disposables: [
Zip+arity.swift:780
        return CompositeDisposable(disposables: [
Zip+CollectionType.swift:115
        return CompositeDisposable(disposables: _subscriptions.map { $0 })
(disposables: [Disposable]) { 0053 for disposable in disposables { 0054 _disposables!.insert(disposable) 0055 } 0056 } 0057 0058 /** 0059 Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed. 0060 0061 - parameter disposable: Disposable to add. 0062 - returns: Key that can be used to remove disposable from composite disposable. In case dispose bag was already 0063 disposed `nil` will be returned. 0064 */ 0065 public func addDisposable
ConcurrentDispatchQueueScheduler.swift:105
           compositeDisposable.addDisposable(action(state))
ConcurrentDispatchQueueScheduler.swift:109
        compositeDisposable.addDisposable(AnonymousDisposable {
Merge.swift:84
        _group.addDisposable(_sourceSubscription)
Merge.swift:89
        _group.addDisposable(_sourceSubscription)
Merge.swift:99
        let key = group.addDisposable(subscription)
Merge.swift:334
        if let disposeKey = _group.addDisposable(iterDisposable) {
Merge.swift:342
        _group.addDisposable(_sourceSubscription)
OperationQueueScheduler.swift:47
            compositeDisposableWeak?.addDisposable(disposable)
OperationQueueScheduler.swift:52
        compositeDisposable.addDisposable(AnonymousDisposable {
RecursiveScheduler.swift:68
                removeKey = _group.addDisposable(d)
RecursiveScheduler.swift:111
                removeKey = _group.addDisposable(d)
RecursiveScheduler.swift:181
                removeKey = _group.addDisposable(d)
SerialDispatchQueueScheduler.swift:142
            compositeDisposable.addDisposable(action(state))
SerialDispatchQueueScheduler.swift:146
        compositeDisposable.addDisposable(AnonymousDisposable {
VirtualTimeScheduler.swift:131
        compositeDisposable.addDisposable(item)
Window.swift:34
        _groupDisposable.addDisposable(_timerD)
Window.swift:45
        _groupDisposable.addDisposable(_parent._source.subscribeSafe(self))
(disposable: Disposable) -> DisposeKey? { 0066 let key = _addDisposable(disposable) 0067 0068 if key == nil { 0069 disposable.dispose() 0070 } 0071 0072 return key 0073 } 0074 0075 private func _addDisposable
CompositeDisposable.swift:66
        let key = _addDisposable(disposable)
(disposable: Disposable) -> DisposeKey? { 0076 _lock.lock(); defer { _lock.unlock() } 0077 0078 return _disposables?.insert(disposable) 0079 } 0080 0081 /** 0082 - returns: Gets the number of disposables contained in the `CompositeDisposable`. 0083 */ 0084 public var count
Merge.swift:215
        return _group.count == MergeNoIterators
Merge.swift:262
            if _parent._stopped && _parent._group.count == MergeNoIterators {
Merge.swift:321
                if _group.count == MergeNoIterators {
: Int { 0085 get { 0086 _lock.lock(); defer { _lock.unlock() } 0087 return _disposables?.count ?? 0 0088 } 0089 } 0090 0091 /** 0092 Removes and disposes the disposable identified by `disposeKey` from the CompositeDisposable. 0093 0094 - parameter disposeKey: Key used to identify disposable to be removed. 0095 */ 0096 public func removeDisposable
Merge.swift:45
            _parent._group.removeDisposable(_disposeKey)
Merge.swift:256
            _parent._group.removeDisposable(_disposeKey)
RecursiveScheduler.swift:50
                    self._group.removeDisposable(removeKey!)
RecursiveScheduler.swift:93
                    self._group.removeDisposable(removeKey!)
RecursiveScheduler.swift:163
                    self._group.removeDisposable(removeKey!)
(disposeKey: DisposeKey) { 0097 _removeDisposable(disposeKey)?.dispose() 0098 } 0099 0100 private func _removeDisposable
CompositeDisposable.swift:97
        _removeDisposable(disposeKey)?.dispose()
(disposeKey: DisposeKey) -> Disposable? { 0101 _lock.lock(); defer { _lock.unlock() } 0102 return _disposables?.removeKey(disposeKey) 0103 } 0104 0105 /** 0106 Disposes all disposables in the group and removes them from the group. 0107 */ 0108 public func dispose
RecursiveScheduler.swift:121
        _group.dispose()
RecursiveScheduler.swift:191
        _group.dispose()
() { 0109 if let disposables = _dispose() { 0110 disposeAllIn(disposables) 0111 } 0112 } 0113 0114 private func _dispose
CompositeDisposable.swift:109
        if let disposables = _dispose() {
() -> Bag<Disposable>? { 0115 _lock.lock(); defer { _lock.unlock() } 0116 0117 let disposeBag = _disposables 0118 _disposables = nil 0119 0120 return disposeBag 0121 } 0122 }