xref: /aosp_15_r20/external/pytorch/aten/src/ATen/DynamicLibrary.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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