xref: /aosp_15_r20/external/pytorch/torch/csrc/jit/resource_guard.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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