]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/AddressResolver.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / include / lldb / Core / AddressResolver.h
1 //===-- AddressResolver.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_AddressResolver_h_
11 #define liblldb_AddressResolver_h_
12
13 #include <vector>
14
15 // C Includes
16 // C++ Includes
17 // Other libraries and framework includes
18 // Project includes
19 #include "lldb/lldb-private.h"
20 #include "lldb/Core/Address.h"
21 #include "lldb/Core/AddressRange.h"
22 #include "lldb/Host/FileSpec.h"
23 #include "lldb/Core/SearchFilter.h"
24 #include "lldb/Core/ConstString.h"
25
26 namespace lldb_private {
27
28 //----------------------------------------------------------------------
29 /// @class AddressResolver AddressResolver.h "lldb/Core/AddressResolver.h"
30 /// @brief This class works with SearchFilter to resolve function names and
31 /// source file locations to their concrete addresses.
32 //----------------------------------------------------------------------
33
34 //----------------------------------------------------------------------
35 /// General Outline:
36 /// The AddressResolver is a Searcher.  In that protocol,
37 /// the SearchFilter asks the question "At what depth of the symbol context
38 /// descent do you want your callback to get called?" of the filter.  The resolver
39 /// answers this question (in the GetDepth method) and provides the resolution callback.
40 //----------------------------------------------------------------------
41
42 class AddressResolver :
43    public Searcher
44 {
45 public:
46
47     typedef enum
48     {
49         Exact,
50         Regexp,
51         Glob
52     } MatchType;
53
54
55     AddressResolver ();
56
57     virtual
58     ~AddressResolver ();
59
60     virtual void
61     ResolveAddress (SearchFilter &filter);
62
63     virtual void
64     ResolveAddressInModules (SearchFilter &filter,
65                              ModuleList &modules);
66
67     virtual void
68     GetDescription (Stream *s) = 0;
69
70     std::vector<AddressRange> &
71     GetAddressRanges ();
72
73     size_t
74     GetNumberOfAddresses ();
75
76     AddressRange &
77     GetAddressRangeAtIndex (size_t idx);
78
79 protected:
80
81     std::vector<AddressRange> m_address_ranges;
82
83 private:
84     DISALLOW_COPY_AND_ASSIGN(AddressResolver);
85 };
86
87 } // namespace lldb_private
88
89 #endif  // liblldb_AddressResolver_h_