|  | //===-- 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()); | 
|  | } |