1*da0073e9SAndroid Build Coastguard Worker #pragma once 2*da0073e9SAndroid Build Coastguard Worker 3*da0073e9SAndroid Build Coastguard Worker #include <ATen/Utils.h> 4*da0073e9SAndroid Build Coastguard Worker #include <c10/macros/Export.h> 5*da0073e9SAndroid Build Coastguard Worker #include <c10/util/Exception.h> 6*da0073e9SAndroid Build Coastguard Worker 7*da0073e9SAndroid Build Coastguard Worker namespace c10 { 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Worker class DynamicLibraryError : public Error { 10*da0073e9SAndroid Build Coastguard Worker using Error::Error; 11*da0073e9SAndroid Build Coastguard Worker }; 12*da0073e9SAndroid Build Coastguard Worker 13*da0073e9SAndroid Build Coastguard Worker } // namespace c10 14*da0073e9SAndroid Build Coastguard Worker 15*da0073e9SAndroid Build Coastguard Worker namespace at { 16*da0073e9SAndroid Build Coastguard Worker 17*da0073e9SAndroid Build Coastguard Worker struct DynamicLibrary { 18*da0073e9SAndroid Build Coastguard Worker AT_DISALLOW_COPY_AND_ASSIGN(DynamicLibrary); 19*da0073e9SAndroid Build Coastguard Worker 20*da0073e9SAndroid Build Coastguard Worker TORCH_API DynamicLibrary( 21*da0073e9SAndroid Build Coastguard Worker const char* name, 22*da0073e9SAndroid Build Coastguard Worker const char* alt_name = nullptr, 23*da0073e9SAndroid Build Coastguard Worker bool leak_handle = false); 24*da0073e9SAndroid Build Coastguard Worker 25*da0073e9SAndroid Build Coastguard Worker TORCH_API void* sym(const char* name); 26*da0073e9SAndroid Build Coastguard Worker 27*da0073e9SAndroid Build Coastguard Worker TORCH_API ~DynamicLibrary(); 28*da0073e9SAndroid Build Coastguard Worker 29*da0073e9SAndroid Build Coastguard Worker private: 30*da0073e9SAndroid Build Coastguard Worker bool leak_handle; 31*da0073e9SAndroid Build Coastguard Worker void* handle = nullptr; 32*da0073e9SAndroid Build Coastguard Worker }; 33*da0073e9SAndroid Build Coastguard Worker 34*da0073e9SAndroid Build Coastguard Worker } // namespace at 35