diff options
Diffstat (limited to 'include/lldb/Host/DynamicLibrary.h')
-rw-r--r-- | include/lldb/Host/DynamicLibrary.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/include/lldb/Host/DynamicLibrary.h b/include/lldb/Host/DynamicLibrary.h new file mode 100644 index 000000000000..1fcc7d1883cf --- /dev/null +++ b/include/lldb/Host/DynamicLibrary.h @@ -0,0 +1,51 @@ +//===-- DynamicLibrary.h -------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_DynamicLibrary_h_ +#define liblldb_DynamicLibrary_h_ + +#include "lldb/Host/FileSpec.h" +#include "lldb/Host/Host.h" + +namespace lldb_private { + +class DynamicLibrary +{ +public: + DynamicLibrary (const FileSpec& spec, uint32_t options = Host::eDynamicLibraryOpenOptionLazy | + Host::eDynamicLibraryOpenOptionLocal | + Host::eDynamicLibraryOpenOptionLimitGetSymbol); + + ~DynamicLibrary (); + + template <typename T = void*> + T GetSymbol (const char* name) + { + Error err; + if (!m_handle) + return (T)NULL; + void* symbol = Host::DynamicLibraryGetSymbol (m_handle, name, err); + if (!symbol) + return (T)NULL; + return (T)symbol; + } + + bool + IsValid (); + +private: + lldb_private::FileSpec m_filespec; + void* m_handle; + + DISALLOW_COPY_AND_ASSIGN (DynamicLibrary); +}; + +} // namespace lldb_private + +#endif // liblldb_DynamicLibrary_h_ |