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