]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/Host/DynamicLibrary.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / Host / DynamicLibrary.h
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*>
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_