//===-- NameToDIE.cpp -------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "NameToDIE.h" #include "lldb/Core/Stream.h" size_t NameToDIE::Find (const lldb_private::ConstString &name, std::vector &info_array) const { const char *name_cstr = name.AsCString(); const size_t initial_info_array_size = info_array.size(); collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.lower_bound (name_cstr); pos != end && pos->first == name_cstr; ++pos) { info_array.push_back (pos->second); } return info_array.size() - initial_info_array_size; } size_t NameToDIE::Find (const lldb_private::RegularExpression& regex, std::vector &info_array) const { const size_t initial_info_array_size = info_array.size(); collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.begin(); pos != end; ++pos) { if (regex.Execute(pos->first)) info_array.push_back (pos->second); } return info_array.size() - initial_info_array_size; } size_t NameToDIE::FindAllEntriesForCompileUnitWithIndex (const uint32_t cu_idx, std::vector &info_array) const { const size_t initial_info_array_size = info_array.size(); collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.begin(); pos != end; ++pos) { if (cu_idx == pos->second.cu_idx) info_array.push_back (pos->second); } return info_array.size() - initial_info_array_size; } void NameToDIE::Dump (lldb_private::Stream *s) { collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.begin(); pos != end; ++pos) { s->Printf("%p: 0x%8.8x 0x%8.8x \"%s\"\n", pos->first, pos->second.cu_idx, pos->second.die_idx, pos->first); } }