Platform.Data.Doublets C++
Loading...
Searching...
No Matches
LinksDisposableDecoratorBase.h
Go to the documentation of this file.
2{
3 template <typename...>
5 template <std::integral TLinkAddress>
7 : public DecoratorBase<TFacade, TDecorated>, ILinks<TLinkAddress>, System::IDisposable
8 {
9 class DisposableWithMultipleCallsAllowed : public Disposable
10 {
11 public:
12 DisposableWithMultipleCallsAllowed(std::function<Disposal> disposal) : base(disposal) {}
13
14 public:
15 bool AllowMultipleDisposeCalls
16 {
17 get = > true;
18 }
19 }
20
21 public : DisposableWithMultipleCallsAllowed Disposable = 0;
22
23 public:
24 LinksDisposableDecoratorBase(ILinks<TLinkAddress>& storage) : base(storage)
25 {
26 return Disposable = DisposableWithMultipleCallsAllowed(Dispose);
27 }
28
30 {
31 Disposable.Destruct();
32 }
33
34 public:
35 void Dispose()
36 {
37 Disposable.Dispose();
38 }
39
40 public:
41 virtual void Dispose(bool manual, bool wasDisposed)
42 {
43 if (!wasDisposed)
44 {
45 this->decorated().TDecorated::DisposeIfPossible();
46 }
47 }
48 };
49} // namespace Platform::Data::Doublets::Decorators
LinksDisposableDecoratorBase(ILinks< TLinkAddress > &storage)
Definition LinksDisposableDecoratorBase.h:24
virtual void Dispose(bool manual, bool wasDisposed)
Definition LinksDisposableDecoratorBase.h:41
Definition Decorators.h:4