#pragma once #include namespace at { namespace impl { struct TORCH_API RestorePythonTLSSnapshot { RestorePythonTLSSnapshot(); ~RestorePythonTLSSnapshot(); private: c10::impl::LocalDispatchKeySet saved_; c10::impl::ForceDispatchKeyGuard guard_; }; // RAII guard to make working with the above TLS safer. struct TORCH_API MaybeSetTLSOnEntryGuard { public: MaybeSetTLSOnEntryGuard(); ~MaybeSetTLSOnEntryGuard(); private: bool value_set_; }; } // namespace impl } // namespace at