//===-- DWARFDIECollection.cpp ----------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "DWARFDIECollection.h" #include <algorithm> #include "lldb/Core/Stream.h" #include "DWARFDebugInfoEntry.h" using namespace lldb_private; using namespace std; bool DWARFDIECollection::Insert(const DWARFDebugInfoEntry *die) { iterator end_pos = m_dies.end(); iterator insert_pos = upper_bound(m_dies.begin(), end_pos, die); if (insert_pos != end_pos && (*insert_pos == die)) return false; m_dies.insert(insert_pos, die); return true; } void DWARFDIECollection::Append (const DWARFDebugInfoEntry *die) { m_dies.push_back (die); } const DWARFDebugInfoEntry * DWARFDIECollection::GetDIEPtrAtIndex(uint32_t idx) const { if (idx < m_dies.size()) return m_dies[idx]; return NULL; } size_t DWARFDIECollection::Size() const { return m_dies.size(); } void DWARFDIECollection::Dump(Stream *s, const char* title) const { if (title && title[0] != '\0') s->Printf( "%s\n", title); const_iterator end_pos = m_dies.end(); const_iterator pos; for (pos = m_dies.begin(); pos != end_pos; ++pos) s->Printf( "0x%8.8x\n", (*pos)->GetOffset()); }