]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/NameToDIE.h
MFV r312970:
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / SymbolFile / DWARF / NameToDIE.h
1 //===-- NameToDIE.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 SymbolFileDWARF_NameToDIE_h_
11 #define SymbolFileDWARF_NameToDIE_h_
12
13 #include <functional>
14
15 #include "lldb/Core/dwarf.h"
16 #include "lldb/Core/UniqueCStringMap.h"
17 #include "lldb/lldb-defines.h"
18 #include "DIERef.h"
19
20 class SymbolFileDWARF;
21
22 class NameToDIE
23 {
24 public:
25     NameToDIE () :
26         m_map()
27     {
28     }
29
30     ~NameToDIE ()
31     {
32     }
33
34     void
35     Dump (lldb_private::Stream *s);
36
37     void
38     Insert (const lldb_private::ConstString& name, const DIERef& die_ref);
39
40     void
41     Append (const NameToDIE& other);
42
43     void
44     Finalize();
45
46     size_t
47     Find (const lldb_private::ConstString &name, DIEArray &info_array) const;
48     
49     size_t
50     Find (const lldb_private::RegularExpression& regex, DIEArray &info_array) const;
51
52     size_t
53     FindAllEntriesForCompileUnit (dw_offset_t cu_offset, DIEArray &info_array) const;
54
55     void
56     ForEach (std::function <bool(const char *name, const DIERef& die_ref)> const &callback) const;
57
58 protected:
59     lldb_private::UniqueCStringMap<DIERef> m_map;
60 };
61
62 #endif  // SymbolFileDWARF_NameToDIE_h_