Flyby SDK v1.0.2
Loading...
Searching...
No Matches
observable.h
Go to the documentation of this file.
1
7
8#pragma once
9
10#include <memory>
11#include <vector>
12
13namespace flyby {
14 class DisposeBag;
15
20 class Observable : public std::enable_shared_from_this<Observable> {
21 public:
22 virtual ~Observable() = default;
26 virtual void dispose() {}
27
31 virtual void disposed_by(DisposeBag& bag);
32 };
33
38 class DisposeBag {
39 public:
40 DisposeBag() = default;
41
42 virtual ~DisposeBag();
43
48
52 void add(const std::shared_ptr<Observable>& observable);
53
54 private:
55 std::vector<std::shared_ptr<Observable>> m_observables;
56 };
57} // namespace flyby
Dispose bag is used to hold and automatically dispose observables.
Definition observable.h:38
void dispose_all()
Disposes of all observables in the bag.
void add(const std::shared_ptr< Observable > &observable)
Add an observable to this bag to be disposed automatically.
General observable interface.
Definition observable.h:20
virtual void dispose()
Override to handle disposal.
Definition observable.h:26
virtual void disposed_by(DisposeBag &bag)
Adds observable to dispose bag.