0001    //
0002    //  AnonymousDisposable.swift
0003    //  Rx
0004    //
0005    //  Created by Krunoslav Zaher on 2/15/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    /**
0012    Represents an Action-based disposable.
0013    
0014    When dispose method is called, disposal action will be dereferenced.
0015    */
0016    public final class AnonymousDisposable
ConcurrentDispatchQueueScheduler.swift:109
        compositeDisposable.addDisposable(AnonymousDisposable {
ConcurrentDispatchQueueScheduler.swift:136
        let cancel = AnonymousDisposable {
ImmediateSchedulerType.swift:38
        return AnonymousDisposable {
Observable+Extensions.swift:44
            disposable = AnonymousDisposable(disposed)
OperationQueueScheduler.swift:52
        compositeDisposable.addDisposable(AnonymousDisposable {
RefCount.swift:37
        return AnonymousDisposable {
SchedulerType.swift:76
        return AnonymousDisposable {
SerialDispatchQueueScheduler.swift:146
        compositeDisposable.addDisposable(AnonymousDisposable {
SerialDispatchQueueScheduler.swift:173
        let cancel = AnonymousDisposable {
: DisposeBase, Cancelable { 0017 public typealias DisposeAction
AnonymousDisposable.swift:20
    private var _disposeAction: DisposeAction?
AnonymousDisposable.swift:36
    public init(_ disposeAction: DisposeAction) {
= () -> Void 0018 0019 private var _disposed
AnonymousDisposable.swift:27
            return _disposed == 1
AnonymousDisposable.swift:47
        if AtomicCompareAndSwap(0, 1, &_disposed) {
AnonymousDisposable.swift:48
            assert(_disposed == 1)
: AtomicInt = 0 0020 private var _disposeAction
AnonymousDisposable.swift:37
        _disposeAction = disposeAction
AnonymousDisposable.swift:50
            if let action = _disposeAction {
AnonymousDisposable.swift:51
                _disposeAction = nil
: DisposeAction? 0021 0022 /** 0023 - returns: Was resource disposed. 0024 */ 0025 public var disposed
ConcurrentDispatchQueueScheduler.swift:140
            if cancel.disposed {
SerialDispatchQueueScheduler.swift:177
            if cancel.disposed {
: Bool { 0026 get { 0027 return _disposed == 1 0028 } 0029 } 0030 0031 /** 0032 Constructs a new disposable with the given action used for disposal. 0033 0034 - parameter disposeAction: Disposal action which will be run upon calling `dispose`. 0035 */ 0036 public init
ConcurrentDispatchQueueScheduler.swift:109
        compositeDisposable.addDisposable(AnonymousDisposable {
ConcurrentDispatchQueueScheduler.swift:136
        let cancel = AnonymousDisposable {
ImmediateSchedulerType.swift:38
        return AnonymousDisposable {
Observable+Extensions.swift:44
            disposable = AnonymousDisposable(disposed)
OperationQueueScheduler.swift:52
        compositeDisposable.addDisposable(AnonymousDisposable {
RefCount.swift:37
        return AnonymousDisposable {
SchedulerType.swift:76
        return AnonymousDisposable {
SerialDispatchQueueScheduler.swift:146
        compositeDisposable.addDisposable(AnonymousDisposable {
SerialDispatchQueueScheduler.swift:173
        let cancel = AnonymousDisposable {
(_ disposeAction: DisposeAction) { 0037 _disposeAction = disposeAction 0038 super.init() 0039 } 0040 0041 /** 0042 Calls the disposal action if and only if the current instance hasn't been disposed yet. 0043 0044 After invoking disposal action, disposal action will be dereferenced. 0045 */ 0046 public func dispose() { 0047 if AtomicCompareAndSwap(0, 1, &_disposed) { 0048 assert(_disposed == 1) 0049 0050 if let action = _disposeAction { 0051 _disposeAction = nil 0052 action() 0053 } 0054 } 0055 } 0056 } 0057