DynamicLibrary.h revision 6d101887bb427b3c879c0c06775ab4dcb1cd265b
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 16namespace lldb_private { 17 18class DynamicLibrary 19{ 20public: 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*> 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 39private: 40 lldb_private::FileSpec m_filespec; 41 void* m_handle; 42 43 DISALLOW_COPY_AND_ASSIGN (DynamicLibrary); 44}; 45 46} // namespace lldb_private 47 48#endif // liblldb_DynamicLibrary_h_ 49