1 //===-- SBLineEntry.h -------------------------------------------*- 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 #ifndef LLDB_SBLineEntry_h_
11 #define LLDB_SBLineEntry_h_
12 
13 #include "lldb/API/SBAddress.h"
14 #include "lldb/API/SBDefines.h"
15 #include "lldb/API/SBFileSpec.h"
16 
17 namespace lldb {
18 
19 class LLDB_API SBLineEntry {
20 public:
21   SBLineEntry();
22 
23   SBLineEntry(const lldb::SBLineEntry &rhs);
24 
25   ~SBLineEntry();
26 
27   const lldb::SBLineEntry &operator=(const lldb::SBLineEntry &rhs);
28 
29   lldb::SBAddress GetStartAddress() const;
30 
31   lldb::SBAddress GetEndAddress() const;
32 
33   bool IsValid() const;
34 
35   lldb::SBFileSpec GetFileSpec() const;
36 
37   uint32_t GetLine() const;
38 
39   uint32_t GetColumn() const;
40 
41   void SetFileSpec(lldb::SBFileSpec filespec);
42 
43   void SetLine(uint32_t line);
44 
45   void SetColumn(uint32_t column);
46 
47   bool operator==(const lldb::SBLineEntry &rhs) const;
48 
49   bool operator!=(const lldb::SBLineEntry &rhs) const;
50 
51   bool GetDescription(lldb::SBStream &description);
52 
53 protected:
54   lldb_private::LineEntry *get();
55 
56 private:
57   friend class SBAddress;
58   friend class SBCompileUnit;
59   friend class SBFrame;
60   friend class SBSymbolContext;
61 
62   const lldb_private::LineEntry *operator->() const;
63 
64   lldb_private::LineEntry &ref();
65 
66   const lldb_private::LineEntry &ref() const;
67 
68   SBLineEntry(const lldb_private::LineEntry *lldb_object_ptr);
69 
70   void SetLineEntry(const lldb_private::LineEntry &lldb_object_ref);
71 
72   std::unique_ptr<lldb_private::LineEntry> m_opaque_ap;
73 };
74 
75 } // namespace lldb
76 
77 #endif // LLDB_SBLineEntry_h_
78