1 //===-- DynamicLibrary.h -------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_DynamicLibrary_h_ 11 #define liblldb_DynamicLibrary_h_ 12 13 #include "lldb/Host/FileSpec.h" 14 #include "lldb/Host/Host.h" 15 16 namespace lldb_private { 17 18 class DynamicLibrary 19 { 20 public: 21 DynamicLibrary (const FileSpec& spec, uint32_t options = Host::eDynamicLibraryOpenOptionLazy | 22 Host::eDynamicLibraryOpenOptionLocal | 23 Host::eDynamicLibraryOpenOptionLimitGetSymbol); 24 25 ~DynamicLibrary (); 26 27 template <typename T = void*> GetSymbol(const char * name)28 T GetSymbol (const char* name) 29 { 30 Error err; 31 if (!m_handle) 32 return (T)NULL; 33 void* symbol = Host::DynamicLibraryGetSymbol (m_handle, name, err); 34 if (!symbol) 35 return (T)NULL; 36 return (T)symbol; 37 } 38 39 bool 40 IsValid (); 41 42 private: 43 lldb_private::FileSpec m_filespec; 44 void* m_handle; 45 46 DISALLOW_COPY_AND_ASSIGN (DynamicLibrary); 47 }; 48 49 } // namespace lldb_private 50 51 #endif // liblldb_DynamicLibrary_h_ 52