1//===-- SBLineEntry.h -------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_SBLineEntry_h_
10#define LLDB_SBLineEntry_h_
11
12#include "lldb/API/SBAddress.h"
13#include "lldb/API/SBDefines.h"
14#include "lldb/API/SBFileSpec.h"
15
16namespace lldb {
17
18class LLDB_API SBLineEntry {
19public:
20  SBLineEntry();
21
22  SBLineEntry(const lldb::SBLineEntry &rhs);
23
24  ~SBLineEntry();
25
26  const lldb::SBLineEntry &operator=(const lldb::SBLineEntry &rhs);
27
28  lldb::SBAddress GetStartAddress() const;
29
30  lldb::SBAddress GetEndAddress() const;
31
32  explicit operator bool() const;
33
34  bool IsValid() const;
35
36  lldb::SBFileSpec GetFileSpec() const;
37
38  uint32_t GetLine() const;
39
40  uint32_t GetColumn() const;
41
42  void SetFileSpec(lldb::SBFileSpec filespec);
43
44  void SetLine(uint32_t line);
45
46  void SetColumn(uint32_t column);
47
48  bool operator==(const lldb::SBLineEntry &rhs) const;
49
50  bool operator!=(const lldb::SBLineEntry &rhs) const;
51
52  bool GetDescription(lldb::SBStream &description);
53
54protected:
55  lldb_private::LineEntry *get();
56
57private:
58  friend class SBAddress;
59  friend class SBCompileUnit;
60  friend class SBFrame;
61  friend class SBSymbolContext;
62
63  const lldb_private::LineEntry *operator->() const;
64
65  lldb_private::LineEntry &ref();
66
67  const lldb_private::LineEntry &ref() const;
68
69  SBLineEntry(const lldb_private::LineEntry *lldb_object_ptr);
70
71  void SetLineEntry(const lldb_private::LineEntry &lldb_object_ref);
72
73  std::unique_ptr<lldb_private::LineEntry> m_opaque_up;
74};
75
76} // namespace lldb
77
78#endif // LLDB_SBLineEntry_h_
79