174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton//===-- NameToDIE.h ---------------------------------------------*- C++ -*-===// 274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// 374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// The LLVM Compiler Infrastructure 474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// 574124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// This file is distributed under the University of Illinois Open Source 674124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// License. See LICENSE.TXT for details. 774124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton// 874124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton//===----------------------------------------------------------------------===// 974124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 1074124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton#ifndef SymbolFileDWARF_NameToDIE_h_ 1174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton#define SymbolFileDWARF_NameToDIE_h_ 1274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 13144188bc458a35997d2f2e52206ab69747439073Greg Clayton#include "lldb/Core/UniqueCStringMap.h" 14a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 15a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton#include <functional> 16a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 1728f867447c71231a7376e579fba8938ec2571232Greg Clayton#include "lldb/lldb-defines.h" 1874124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 19c8cf5e234be554d4acb6ae644a8269c303c4f56eGreg Claytonclass SymbolFileDWARF; 20c8cf5e234be554d4acb6ae644a8269c303c4f56eGreg Clayton 21144188bc458a35997d2f2e52206ab69747439073Greg Claytontypedef std::vector<uint32_t> DIEArray; 22144188bc458a35997d2f2e52206ab69747439073Greg Clayton 2374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Claytonclass NameToDIE 2474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton{ 2574124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Claytonpublic: 26144188bc458a35997d2f2e52206ab69747439073Greg Clayton NameToDIE () : 27144188bc458a35997d2f2e52206ab69747439073Greg Clayton m_map() 2874124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton { 2974124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton } 3074124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 3174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton ~NameToDIE () 3274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton { 3374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton } 3474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 3574124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton void 3674124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton Dump (lldb_private::Stream *s); 3774124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 3874124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton void 39144188bc458a35997d2f2e52206ab69747439073Greg Clayton Insert (const lldb_private::ConstString& name, uint32_t die_offset); 40144188bc458a35997d2f2e52206ab69747439073Greg Clayton 41144188bc458a35997d2f2e52206ab69747439073Greg Clayton void 42144188bc458a35997d2f2e52206ab69747439073Greg Clayton Finalize(); 43144188bc458a35997d2f2e52206ab69747439073Greg Clayton 4474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton size_t 4574124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton Find (const lldb_private::ConstString &name, 46144188bc458a35997d2f2e52206ab69747439073Greg Clayton DIEArray &info_array) const; 4774124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 4874124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton size_t 4974124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton Find (const lldb_private::RegularExpression& regex, 50144188bc458a35997d2f2e52206ab69747439073Greg Clayton DIEArray &info_array) const; 5174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 5274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton size_t 53144188bc458a35997d2f2e52206ab69747439073Greg Clayton FindAllEntriesForCompileUnit (uint32_t cu_offset, 54144188bc458a35997d2f2e52206ab69747439073Greg Clayton uint32_t cu_end_offset, 55144188bc458a35997d2f2e52206ab69747439073Greg Clayton DIEArray &info_array) const; 562b1b4115afff049ff4462df3b206cbf25b8f1d3fGreg Clayton 57a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton void 58a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton ForEach (std::function <bool(const char *name, uint32_t die_offset)> const &callback) const; 59a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 6074124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Claytonprotected: 61144188bc458a35997d2f2e52206ab69747439073Greg Clayton lldb_private::UniqueCStringMap<uint32_t> m_map; 6274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 6374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton}; 6474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 6574124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton#endif // SymbolFileDWARF_NameToDIE_h_ 66