aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/Host/DynamicLibrary.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lldb/Host/DynamicLibrary.h')
-rw-r--r--include/lldb/Host/DynamicLibrary.h51
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_