LLDB mainline
Declaration.cpp
Go to the documentation of this file.
1//===-- Declaration.cpp ---------------------------------------------------===//
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
10#include "lldb/Utility/Stream.h"
11
12using namespace lldb_private;
13
14void Declaration::Dump(Stream *s, bool show_fullpaths) const {
15 if (m_file) {
16 *s << ", decl = ";
17 if (show_fullpaths)
18 *s << m_file;
19 else
20 *s << m_file.GetFilename();
21 if (m_line > 0)
22 s->Printf(":%u", m_line);
24 s->Printf(":%u", m_column);
25 } else {
26 if (m_line > 0) {
27 s->Printf(", line = %u", m_line);
29 s->Printf(":%u", m_column);
31 s->Printf(", column = %u", m_column);
32 }
33}
34
35bool Declaration::DumpStopContext(Stream *s, bool show_fullpaths) const {
36 if (m_file) {
37 if (show_fullpaths)
38 *s << m_file;
39 else
40 s->PutCString(m_file.GetFilename());
41
42 if (m_line > 0)
43 s->Printf(":%u", m_line);
45 s->Printf(":%u", m_column);
46 return true;
47 } else if (m_line > 0) {
48 s->Printf(" line %u", m_line);
50 s->Printf(":%u", m_column);
51 return true;
52 }
53 return false;
54}
55
57 int result = FileSpec::Compare(a.m_file, b.m_file, true);
58 if (result)
59 return result;
60 if (a.m_line < b.m_line)
61 return -1;
62 else if (a.m_line > b.m_line)
63 return 1;
64 if (a.m_column < b.m_column)
65 return -1;
66 else if (a.m_column > b.m_column)
67 return 1;
68 return 0;
69}
70
72 bool full) const {
73 int file_compare = FileSpec::Compare(this->m_file, declaration.m_file, full);
74 return file_compare == 0 && this->m_line == declaration.m_line;
75}
76
77bool lldb_private::operator==(const Declaration &lhs, const Declaration &rhs) {
78 if (lhs.GetColumn() != rhs.GetColumn())
79 return false;
80
81 return lhs.GetLine() == rhs.GetLine() && lhs.GetFile() == rhs.GetFile();
82}
A class that describes the declaration location of a lldb object.
Definition Declaration.h:24
FileSpec m_file
The file specification that points to the source file where the declaration occurred.
uint32_t GetLine() const
Get accessor for the declaration line number.
uint16_t GetColumn() const
Get accessor for the declaration column number.
void Dump(Stream *s, bool show_fullpaths) const
Dump a description of this object to a Stream.
uint32_t m_line
Non-zero values indicates a valid line number, zero indicates no line number information is available...
uint16_t m_column
Non-zero values indicates a valid column number, zero indicates no column information is available.
static int Compare(const Declaration &lhs, const Declaration &rhs)
Compare two declaration objects.
Declaration()=default
Default constructor.
bool FileAndLineEqual(const Declaration &declaration, bool full) const
Checks if this object has the same file and line as another declaration object.
bool DumpStopContext(Stream *s, bool show_fullpaths) const
FileSpec & GetFile()
Get accessor for file specification.
static int Compare(const FileSpec &lhs, const FileSpec &rhs, bool full)
Compare two FileSpec objects.
Definition FileSpec.cpp:275
A stream class that can stream formatted output to a file.
Definition Stream.h:28
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
Definition Stream.cpp:134
size_t PutCString(llvm::StringRef cstr)
Output a C string to the stream.
Definition Stream.cpp:63
#define LLDB_INVALID_COLUMN_NUMBER
A class that represents a running process on the host machine.
bool operator==(const Address &lhs, const Address &rhs)
Definition Address.cpp:1004