]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/NameToDIE.h
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r302069, and update
[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 "DIERef.h"
16 #include "lldb/Core/UniqueCStringMap.h"
17 #include "lldb/Core/dwarf.h"
18 #include "lldb/lldb-defines.h"
19
20 class SymbolFileDWARF;
21
22 class NameToDIE {
23 public:
24   NameToDIE() : m_map() {}
25
26   ~NameToDIE() {}
27
28   void Dump(lldb_private::Stream *s);
29
30   void Insert(const lldb_private::ConstString &name, const DIERef &die_ref);
31
32   void Append(const NameToDIE &other);
33
34   void Finalize();
35
36   size_t Find(const lldb_private::ConstString &name,
37               DIEArray &info_array) const;
38
39   size_t Find(const lldb_private::RegularExpression &regex,
40               DIEArray &info_array) const;
41
42   size_t FindAllEntriesForCompileUnit(dw_offset_t cu_offset,
43                                       DIEArray &info_array) const;
44
45   void
46   ForEach(std::function<bool(lldb_private::ConstString name,
47                              const DIERef &die_ref)> const
48               &callback) const;
49
50 protected:
51   lldb_private::UniqueCStringMap<DIERef> m_map;
52 };
53
54 #endif // SymbolFileDWARF_NameToDIE_h_