]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/NameToDIE.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.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 "lldb/Core/UniqueCStringMap.h"
14
15 #include <functional>
16
17 #include "lldb/lldb-defines.h"
18
19 class SymbolFileDWARF;
20
21 typedef std::vector<uint32_t> DIEArray;
22
23 class NameToDIE
24 {
25 public:
26     NameToDIE () :   
27         m_map()
28     {
29     }
30     
31     ~NameToDIE ()
32     {
33     }
34     
35     void
36     Dump (lldb_private::Stream *s);
37
38     void
39     Insert (const lldb_private::ConstString& name, uint32_t die_offset);
40
41     void
42     Finalize();
43
44     size_t
45     Find (const lldb_private::ConstString &name, 
46           DIEArray &info_array) const;
47     
48     size_t
49     Find (const lldb_private::RegularExpression& regex, 
50           DIEArray &info_array) const;
51
52     size_t
53     FindAllEntriesForCompileUnit (uint32_t cu_offset, 
54                                   uint32_t cu_end_offset, 
55                                   DIEArray &info_array) const;
56
57     void
58     ForEach (std::function <bool(const char *name, uint32_t die_offset)> const &callback) const;
59
60 protected:
61     lldb_private::UniqueCStringMap<uint32_t> m_map;
62
63 };
64
65 #endif  // SymbolFileDWARF_NameToDIE_h_