1//===-- DWARFDIECollection.cpp ----------------------------------*- 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#include "DWARFDIECollection.h"
11
12#include <algorithm>
13
14#include "lldb/Core/Stream.h"
15
16#include "DWARFDebugInfoEntry.h"
17
18using namespace lldb_private;
19using namespace std;
20
21bool
22DWARFDIECollection::Insert(const DWARFDebugInfoEntry *die)
23{
24    iterator end_pos = m_dies.end();
25    iterator insert_pos = upper_bound(m_dies.begin(), end_pos, die);
26    if (insert_pos != end_pos && (*insert_pos == die))
27        return false;
28    m_dies.insert(insert_pos, die);
29    return true;
30}
31
32void
33DWARFDIECollection::Append (const DWARFDebugInfoEntry *die)
34{
35    m_dies.push_back (die);
36}
37
38const DWARFDebugInfoEntry *
39DWARFDIECollection::GetDIEPtrAtIndex(uint32_t idx) const
40{
41    if (idx < m_dies.size())
42        return m_dies[idx];
43    return NULL;
44}
45
46
47size_t
48DWARFDIECollection::Size() const
49{
50    return m_dies.size();
51}
52
53void
54DWARFDIECollection::Dump(Stream *s, const char* title) const
55{
56    if (title && title[0] != '\0')
57        s->Printf( "%s\n", title);
58    const_iterator end_pos = m_dies.end();
59    const_iterator pos;
60    for (pos = m_dies.begin(); pos != end_pos; ++pos)
61        s->Printf( "0x%8.8x\n", (*pos)->GetOffset());
62}
63