#pragma once #include #include #include #include #include namespace torch::jit::mobile { /* The CustomClassTracer class handles the attachment and removal of a recording * callback that traces the invocation of code that handles loading custom * classes on mobile. * * You can get the set of used custom classes using * getLoadedClasses(). * * Note: This class is not thread safe or re-entrant, and should not be used * across multiple threads of execution. * */ struct CustomClassTracer final { at::CallbackHandle handle_; /* These are the custom class names (constant * character string) which shows up in code. */ typedef std::set custom_classes_type; CustomClassTracer(); static c10::Synchronized& getLoadedClasses(); ~CustomClassTracer() { at::removeCallback(handle_); } }; } // namespace torch::jit::mobile