1 | #include "taichi/common/cleanup.h" |
---|---|
2 | #include <utility> |
3 | |
4 | namespace taichi { |
5 | |
6 | RaiiCleanup::RaiiCleanup(Func fn) : fn_(std::move(fn)) { |
7 | } |
8 | |
9 | RaiiCleanup::~RaiiCleanup() { |
10 | if (fn_) { |
11 | fn_(); |
12 | fn_ = nullptr; |
13 | } |
14 | } |
15 | |
16 | RaiiCleanup make_cleanup(RaiiCleanup::Func fn) { |
17 | return RaiiCleanup{std::move(fn)}; |
18 | } |
19 | |
20 | } // namespace taichi |
21 |