124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBLineEntry.h -------------------------------------------*- 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
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBLineEntry_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBLineEntry_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
145f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBAddress.h"
155f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBFileSpec.h"
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBLineEntry
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBLineEntry ();
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBLineEntry (const lldb::SBLineEntry &rhs);
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBLineEntry ();
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb::SBLineEntry &
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator = (const lldb::SBLineEntry &rhs);
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBAddress
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStartAddress () const;
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBAddress
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetEndAddress () const;
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid () const;
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBFileSpec
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetFileSpec () const;
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetLine () const;
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetColumn () const;
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5023b8abbe214c252028f6e09f79169529c846409dGreg Clayton    void
5123b8abbe214c252028f6e09f79169529c846409dGreg Clayton    SetFileSpec (lldb::SBFileSpec filespec);
5223b8abbe214c252028f6e09f79169529c846409dGreg Clayton
5323b8abbe214c252028f6e09f79169529c846409dGreg Clayton    void
5423b8abbe214c252028f6e09f79169529c846409dGreg Clayton    SetLine (uint32_t line);
5523b8abbe214c252028f6e09f79169529c846409dGreg Clayton
5623b8abbe214c252028f6e09f79169529c846409dGreg Clayton    void
5723b8abbe214c252028f6e09f79169529c846409dGreg Clayton    SetColumn (uint32_t column);
5823b8abbe214c252028f6e09f79169529c846409dGreg Clayton
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator == (const lldb::SBLineEntry &rhs) const;
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator != (const lldb::SBLineEntry &rhs) const;
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6598f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    bool
6698f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    GetDescription (lldb::SBStream &description);
6798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice
6861ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Ticeprotected:
6961ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice
7061ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice    lldb_private::LineEntry *
7161ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice    get ();
7261ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
74c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton    friend class SBAddress;
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBCompileUnit;
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBFrame;
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBSymbolContext;
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::LineEntry *
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->() const;
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8223b8abbe214c252028f6e09f79169529c846409dGreg Clayton    lldb_private::LineEntry &
8323b8abbe214c252028f6e09f79169529c846409dGreg Clayton    ref();
8423b8abbe214c252028f6e09f79169529c846409dGreg Clayton
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::LineEntry &
8623b8abbe214c252028f6e09f79169529c846409dGreg Clayton    ref() const;
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBLineEntry (const lldb_private::LineEntry *lldb_object_ptr);
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetLineEntry (const lldb_private::LineEntry &lldb_object_ref);
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
93102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton    std::unique_ptr<lldb_private::LineEntry> m_opaque_ap;
9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBLineEntry_h_
100