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 #include "lldb/lldb-defines.h"
15 
16 class SymbolFileDWARF;
17 
18 typedef std::vector<uint32_t> DIEArray;
19 
20 class NameToDIE
21 {
22 public:
23     NameToDIE () :
24         m_map()
25     {
26     }
27 
28     ~NameToDIE ()
29     {
30     }
31 
32     void
33     Dump (lldb_private::Stream *s);
34 
35     void
36     Insert (const lldb_private::ConstString& name, uint32_t die_offset);
37 
38     void
39     Finalize();
40 
41     size_t
42     Find (const lldb_private::ConstString &name,
43           DIEArray &info_array) const;
44 
45     size_t
46     Find (const lldb_private::RegularExpression& regex,
47           DIEArray &info_array) const;
48 
49     size_t
50     FindAllEntriesForCompileUnit (uint32_t cu_offset,
51                                   uint32_t cu_end_offset,
52                                   DIEArray &info_array) const;
53 
54 protected:
55     lldb_private::UniqueCStringMap<uint32_t> m_map;
56 
57 };
58 
59 #endif  // SymbolFileDWARF_NameToDIE_h_
60