1254721Semaste//===-- NameToDIE.h ---------------------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef SymbolFileDWARF_NameToDIE_h_
11254721Semaste#define SymbolFileDWARF_NameToDIE_h_
12254721Semaste
13254721Semaste#include "lldb/Core/UniqueCStringMap.h"
14254721Semaste
15254721Semaste#include <functional>
16254721Semaste
17254721Semaste#include "lldb/lldb-defines.h"
18254721Semaste
19254721Semasteclass SymbolFileDWARF;
20254721Semaste
21254721Semastetypedef std::vector<uint32_t> DIEArray;
22254721Semaste
23254721Semasteclass NameToDIE
24254721Semaste{
25254721Semastepublic:
26254721Semaste    NameToDIE () :
27254721Semaste        m_map()
28254721Semaste    {
29254721Semaste    }
30254721Semaste
31254721Semaste    ~NameToDIE ()
32254721Semaste    {
33254721Semaste    }
34254721Semaste
35254721Semaste    void
36254721Semaste    Dump (lldb_private::Stream *s);
37254721Semaste
38254721Semaste    void
39254721Semaste    Insert (const lldb_private::ConstString& name, uint32_t die_offset);
40254721Semaste
41254721Semaste    void
42254721Semaste    Finalize();
43254721Semaste
44254721Semaste    size_t
45254721Semaste    Find (const lldb_private::ConstString &name,
46254721Semaste          DIEArray &info_array) const;
47254721Semaste
48254721Semaste    size_t
49254721Semaste    Find (const lldb_private::RegularExpression& regex,
50254721Semaste          DIEArray &info_array) const;
51254721Semaste
52254721Semaste    size_t
53254721Semaste    FindAllEntriesForCompileUnit (uint32_t cu_offset,
54254721Semaste                                  uint32_t cu_end_offset,
55254721Semaste                                  DIEArray &info_array) const;
56254721Semaste
57254721Semaste    void
58254721Semaste    ForEach (std::function <bool(const char *name, uint32_t die_offset)> const &callback) const;
59254721Semaste
60254721Semasteprotected:
61254721Semaste    lldb_private::UniqueCStringMap<uint32_t> m_map;
62254721Semaste
63254721Semaste};
64254721Semaste
65254721Semaste#endif  // SymbolFileDWARF_NameToDIE_h_
66