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 ®ex, 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(llvm::StringRef name, const DIERef &die_ref)> const 47 &callback) const; 48 49 protected: 50 lldb_private::UniqueCStringMap<DIERef> m_map; 51 }; 52 53 #endif // SymbolFileDWARF_NameToDIE_h_ 54