124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBLineEntry.cpp -----------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10ec2d9787bed36e9eda6eac1996c7bed76c8d3da4Stephen Wilson#include <limits.h>
11ec2d9787bed36e9eda6eac1996c7bed76c8d3da4Stephen Wilson
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/API/SBLineEntry.h"
1398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice#include "lldb/API/SBStream.h"
1449ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton#include "lldb/Core/StreamString.h"
157826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice#include "lldb/Core/Log.h"
1649ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton#include "lldb/Symbol/LineEntry.h"
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb;
197826c8894803dc729f29789ebc038956a94d3e7aCaroline Ticeusing namespace lldb_private;
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::SBLineEntry () :
2363094e0bb161580564954dee512955c1c79d3476Greg Clayton    m_opaque_ap ()
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::SBLineEntry (const SBLineEntry &rhs) :
2863094e0bb161580564954dee512955c1c79d3476Greg Clayton    m_opaque_ap ()
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    if (rhs.IsValid())
3123b8abbe214c252028f6e09f79169529c846409dGreg Clayton        ref() = rhs.ref();
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::SBLineEntry (const lldb_private::LineEntry *lldb_object_ptr) :
3563094e0bb161580564954dee512955c1c79d3476Greg Clayton    m_opaque_ap ()
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    if (lldb_object_ptr)
3823b8abbe214c252028f6e09f79169529c846409dGreg Clayton        ref() = *lldb_object_ptr;
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst SBLineEntry &
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::operator = (const SBLineEntry &rhs)
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
4423b8abbe214c252028f6e09f79169529c846409dGreg Clayton    if (this != &rhs)
4523b8abbe214c252028f6e09f79169529c846409dGreg Clayton    {
4623b8abbe214c252028f6e09f79169529c846409dGreg Clayton        if (rhs.IsValid())
4723b8abbe214c252028f6e09f79169529c846409dGreg Clayton            ref() = rhs.ref();
4823b8abbe214c252028f6e09f79169529c846409dGreg Clayton        else
4923b8abbe214c252028f6e09f79169529c846409dGreg Clayton            m_opaque_ap.reset();
5023b8abbe214c252028f6e09f79169529c846409dGreg Clayton    }
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return *this;
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::SetLineEntry (const lldb_private::LineEntry &lldb_object_ref)
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
5723b8abbe214c252028f6e09f79169529c846409dGreg Clayton    ref() = lldb_object_ref;
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::~SBLineEntry ()
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBAddress
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::GetStartAddress () const
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
697826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBAddress sb_address;
7163094e0bb161580564954dee512955c1c79d3476Greg Clayton    if (m_opaque_ap.get())
7263094e0bb161580564954dee512955c1c79d3476Greg Clayton        sb_address.SetAddress(&m_opaque_ap->range.GetBaseAddress());
737826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
74952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
757826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    if (log)
767826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    {
7749ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        StreamString sstr;
7869c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton        const Address *addr = sb_address.get();
7969c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton        if (addr)
8069c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton            addr->Dump (&sstr, NULL, Address::DumpStyleModuleWithFileAddress, Address::DumpStyleInvalid, 4);
8149ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        log->Printf ("SBLineEntry(%p)::GetStartAddress () => SBAddress (%p): %s",
8249ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton                     m_opaque_ap.get(), sb_address.get(), sstr.GetData());
837826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    }
847826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return sb_address;
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBAddress
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::GetEndAddress () const
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBAddress sb_address;
9263094e0bb161580564954dee512955c1c79d3476Greg Clayton    if (m_opaque_ap.get())
9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
9463094e0bb161580564954dee512955c1c79d3476Greg Clayton        sb_address.SetAddress(&m_opaque_ap->range.GetBaseAddress());
9563094e0bb161580564954dee512955c1c79d3476Greg Clayton        sb_address.OffsetAddress(m_opaque_ap->range.GetByteSize());
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
97952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
9849ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton    if (log)
9949ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton    {
10049ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        StreamString sstr;
10169c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton        const Address *addr = sb_address.get();
10269c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton        if (addr)
10369c540dc5b2b498e4bb9a4cb8d7cd4e3c993bbbcGreg Clayton            addr->Dump (&sstr, NULL, Address::DumpStyleModuleWithFileAddress, Address::DumpStyleInvalid, 4);
10449ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        log->Printf ("SBLineEntry(%p)::GetEndAddress () => SBAddress (%p): %s",
10549ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton                     m_opaque_ap.get(), sb_address.get(), sstr.GetData());
10649ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton    }
10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return sb_address;
10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::IsValid () const
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1133a70d5d2f090682dda624de23dbb6e8d580d08f0Greg Clayton    return m_opaque_ap.get() && m_opaque_ap->IsValid();
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBFileSpec
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::GetFileSpec () const
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
120952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
1217826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBFileSpec sb_file_spec;
12363094e0bb161580564954dee512955c1c79d3476Greg Clayton    if (m_opaque_ap.get() && m_opaque_ap->file)
12463094e0bb161580564954dee512955c1c79d3476Greg Clayton        sb_file_spec.SetFileSpec(m_opaque_ap->file);
1257826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
1267826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    if (log)
1277826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    {
1287826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice        SBStream sstr;
1297826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice        sb_file_spec.GetDescription (sstr);
13049ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        log->Printf ("SBLineEntry(%p)::GetFileSpec () => SBFileSpec(%p): %s", m_opaque_ap.get(),
13161ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice                     sb_file_spec.get(), sstr.GetData());
1327826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    }
1337826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return sb_file_spec;
13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t
13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::GetLine () const
13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
140952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
1417826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
1427826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    uint32_t line = 0;
14363094e0bb161580564954dee512955c1c79d3476Greg Clayton    if (m_opaque_ap.get())
1447826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice        line = m_opaque_ap->line;
1457826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
1467826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    if (log)
14749ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton        log->Printf ("SBLineEntry(%p)::GetLine () => %u", m_opaque_ap.get(), line);
1487826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
1497826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    return line;
15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t
15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::GetColumn () const
15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
15663094e0bb161580564954dee512955c1c79d3476Greg Clayton    if (m_opaque_ap.get())
15763094e0bb161580564954dee512955c1c79d3476Greg Clayton        return m_opaque_ap->column;
15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return 0;
15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
16123b8abbe214c252028f6e09f79169529c846409dGreg Claytonvoid
16223b8abbe214c252028f6e09f79169529c846409dGreg ClaytonSBLineEntry::SetFileSpec (lldb::SBFileSpec filespec)
16323b8abbe214c252028f6e09f79169529c846409dGreg Clayton{
16423b8abbe214c252028f6e09f79169529c846409dGreg Clayton    if (filespec.IsValid())
16523b8abbe214c252028f6e09f79169529c846409dGreg Clayton        ref().file = filespec.ref();
16623b8abbe214c252028f6e09f79169529c846409dGreg Clayton    else
16723b8abbe214c252028f6e09f79169529c846409dGreg Clayton        ref().file.Clear();
16823b8abbe214c252028f6e09f79169529c846409dGreg Clayton}
16923b8abbe214c252028f6e09f79169529c846409dGreg Claytonvoid
17023b8abbe214c252028f6e09f79169529c846409dGreg ClaytonSBLineEntry::SetLine (uint32_t line)
17123b8abbe214c252028f6e09f79169529c846409dGreg Clayton{
17223b8abbe214c252028f6e09f79169529c846409dGreg Clayton    ref().line = line;
17323b8abbe214c252028f6e09f79169529c846409dGreg Clayton}
17423b8abbe214c252028f6e09f79169529c846409dGreg Clayton
17523b8abbe214c252028f6e09f79169529c846409dGreg Claytonvoid
17623b8abbe214c252028f6e09f79169529c846409dGreg ClaytonSBLineEntry::SetColumn (uint32_t column)
17723b8abbe214c252028f6e09f79169529c846409dGreg Clayton{
17823b8abbe214c252028f6e09f79169529c846409dGreg Clayton    ref().line = column;
17923b8abbe214c252028f6e09f79169529c846409dGreg Clayton}
18023b8abbe214c252028f6e09f79169529c846409dGreg Clayton
18123b8abbe214c252028f6e09f79169529c846409dGreg Clayton
18223b8abbe214c252028f6e09f79169529c846409dGreg Clayton
18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool
18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::operator == (const SBLineEntry &rhs) const
18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
18663094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::LineEntry *lhs_ptr = m_opaque_ap.get();
18763094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::LineEntry *rhs_ptr = rhs.m_opaque_ap.get();
18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    if (lhs_ptr && rhs_ptr)
19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        return lldb_private::LineEntry::Compare (*lhs_ptr, *rhs_ptr) == 0;
19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return lhs_ptr == rhs_ptr;
19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool
19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::operator != (const SBLineEntry &rhs) const
19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
19863094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::LineEntry *lhs_ptr = m_opaque_ap.get();
19963094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::LineEntry *rhs_ptr = rhs.m_opaque_ap.get();
20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    if (lhs_ptr && rhs_ptr)
20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        return lldb_private::LineEntry::Compare (*lhs_ptr, *rhs_ptr) != 0;
20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return lhs_ptr != rhs_ptr;
20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst lldb_private::LineEntry *
20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBLineEntry::operator->() const
20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
21063094e0bb161580564954dee512955c1c79d3476Greg Clayton    return m_opaque_ap.get();
21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
21323b8abbe214c252028f6e09f79169529c846409dGreg Claytonlldb_private::LineEntry &
21423b8abbe214c252028f6e09f79169529c846409dGreg ClaytonSBLineEntry::ref()
21523b8abbe214c252028f6e09f79169529c846409dGreg Clayton{
21623b8abbe214c252028f6e09f79169529c846409dGreg Clayton    if (m_opaque_ap.get() == NULL)
21723b8abbe214c252028f6e09f79169529c846409dGreg Clayton        m_opaque_ap.reset (new lldb_private::LineEntry ());
21823b8abbe214c252028f6e09f79169529c846409dGreg Clayton    return *m_opaque_ap;
21923b8abbe214c252028f6e09f79169529c846409dGreg Clayton}
22023b8abbe214c252028f6e09f79169529c846409dGreg Clayton
22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst lldb_private::LineEntry &
22223b8abbe214c252028f6e09f79169529c846409dGreg ClaytonSBLineEntry::ref() const
22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
22463094e0bb161580564954dee512955c1c79d3476Greg Clayton    return *m_opaque_ap;
22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
22798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Ticebool
22898f930f429160f9777f626c3ac6aa609f4e965d2Caroline TiceSBLineEntry::GetDescription (SBStream &description)
22998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice{
23096154be69fa240a662419183ed08e1cfc5418164Greg Clayton    Stream &strm = description.ref();
23196154be69fa240a662419183ed08e1cfc5418164Greg Clayton
23298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    if (m_opaque_ap.get())
23398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    {
23498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice        char file_path[PATH_MAX*2];
23598f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice        m_opaque_ap->file.GetPath (file_path, sizeof (file_path));
23696154be69fa240a662419183ed08e1cfc5418164Greg Clayton        strm.Printf ("%s:%u", file_path, GetLine());
23798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice        if (GetColumn() > 0)
23896154be69fa240a662419183ed08e1cfc5418164Greg Clayton            strm.Printf (":%u", GetColumn());
23998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    }
24098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    else
24196154be69fa240a662419183ed08e1cfc5418164Greg Clayton        strm.PutCString ("No value");
24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
24398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    return true;
24498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice}
24561ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice
24661ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Ticelldb_private::LineEntry *
24761ba7ec20f616f907473dd501341cef5b47fa3f8Caroline TiceSBLineEntry::get ()
24861ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice{
24961ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice    return m_opaque_ap.get();
25061ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice}
251