• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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