1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #pragma once
| #include <functional>
|
| namespace torch {
| namespace jit {
|
| class ResourceGuard {
| std::function<void()> _destructor;
| bool _released;
|
| public:
| ResourceGuard(std::function<void()> destructor)
| : _destructor(std::move(destructor)), _released(false) {}
|
| ~ResourceGuard() {
| if (!_released)
| _destructor();
| }
|
| void release() {
| _released = true;
| }
| };
|
| } // namespace jit
| } // namespace torch
|
|