1254721Semaste//===-- SBLineEntry.h -------------------------------------------*- C++ -*-===//
2254721Semaste//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6254721Semaste//
7254721Semaste//===----------------------------------------------------------------------===//
8254721Semaste
9254721Semaste#ifndef LLDB_SBLineEntry_h_
10254721Semaste#define LLDB_SBLineEntry_h_
11254721Semaste
12314564Sdim#include "lldb/API/SBAddress.h"
13254721Semaste#include "lldb/API/SBDefines.h"
14254721Semaste#include "lldb/API/SBFileSpec.h"
15254721Semaste
16254721Semastenamespace lldb {
17254721Semaste
18314564Sdimclass LLDB_API SBLineEntry {
19254721Semastepublic:
20314564Sdim  SBLineEntry();
21254721Semaste
22314564Sdim  SBLineEntry(const lldb::SBLineEntry &rhs);
23254721Semaste
24314564Sdim  ~SBLineEntry();
25254721Semaste
26314564Sdim  const lldb::SBLineEntry &operator=(const lldb::SBLineEntry &rhs);
27254721Semaste
28314564Sdim  lldb::SBAddress GetStartAddress() const;
29254721Semaste
30314564Sdim  lldb::SBAddress GetEndAddress() const;
31254721Semaste
32353358Sdim  explicit operator bool() const;
33353358Sdim
34314564Sdim  bool IsValid() const;
35254721Semaste
36314564Sdim  lldb::SBFileSpec GetFileSpec() const;
37254721Semaste
38314564Sdim  uint32_t GetLine() const;
39254721Semaste
40314564Sdim  uint32_t GetColumn() const;
41254721Semaste
42314564Sdim  void SetFileSpec(lldb::SBFileSpec filespec);
43254721Semaste
44314564Sdim  void SetLine(uint32_t line);
45254721Semaste
46314564Sdim  void SetColumn(uint32_t column);
47254721Semaste
48314564Sdim  bool operator==(const lldb::SBLineEntry &rhs) const;
49254721Semaste
50314564Sdim  bool operator!=(const lldb::SBLineEntry &rhs) const;
51254721Semaste
52314564Sdim  bool GetDescription(lldb::SBStream &description);
53314564Sdim
54254721Semasteprotected:
55314564Sdim  lldb_private::LineEntry *get();
56254721Semaste
57254721Semasteprivate:
58314564Sdim  friend class SBAddress;
59314564Sdim  friend class SBCompileUnit;
60314564Sdim  friend class SBFrame;
61314564Sdim  friend class SBSymbolContext;
62254721Semaste
63314564Sdim  const lldb_private::LineEntry *operator->() const;
64254721Semaste
65314564Sdim  lldb_private::LineEntry &ref();
66254721Semaste
67314564Sdim  const lldb_private::LineEntry &ref() const;
68254721Semaste
69314564Sdim  SBLineEntry(const lldb_private::LineEntry *lldb_object_ptr);
70254721Semaste
71314564Sdim  void SetLineEntry(const lldb_private::LineEntry &lldb_object_ref);
72254721Semaste
73353358Sdim  std::unique_ptr<lldb_private::LineEntry> m_opaque_up;
74254721Semaste};
75254721Semaste
76254721Semaste} // namespace lldb
77254721Semaste
78254721Semaste#endif // LLDB_SBLineEntry_h_
79