aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Core/Declaration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/source/Core/Declaration.cpp')
-rw-r--r--contrib/llvm-project/lldb/source/Core/Declaration.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/Core/Declaration.cpp b/contrib/llvm-project/lldb/source/Core/Declaration.cpp
new file mode 100644
index 000000000000..579a3999d14e
--- /dev/null
+++ b/contrib/llvm-project/lldb/source/Core/Declaration.cpp
@@ -0,0 +1,83 @@
+//===-- Declaration.cpp ---------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/Declaration.h"
+#include "lldb/Utility/Stream.h"
+
+using namespace lldb_private;
+
+void Declaration::Dump(Stream *s, bool show_fullpaths) const {
+ if (m_file) {
+ *s << ", decl = ";
+ if (show_fullpaths)
+ *s << m_file;
+ else
+ *s << m_file.GetFilename();
+ if (m_line > 0)
+ s->Printf(":%u", m_line);
+ if (m_column != LLDB_INVALID_COLUMN_NUMBER)
+ s->Printf(":%u", m_column);
+ } else {
+ if (m_line > 0) {
+ s->Printf(", line = %u", m_line);
+ if (m_column != LLDB_INVALID_COLUMN_NUMBER)
+ s->Printf(":%u", m_column);
+ } else if (m_column != LLDB_INVALID_COLUMN_NUMBER)
+ s->Printf(", column = %u", m_column);
+ }
+}
+
+bool Declaration::DumpStopContext(Stream *s, bool show_fullpaths) const {
+ if (m_file) {
+ if (show_fullpaths)
+ *s << m_file;
+ else
+ m_file.GetFilename().Dump(s);
+
+ if (m_line > 0)
+ s->Printf(":%u", m_line);
+ if (m_column != LLDB_INVALID_COLUMN_NUMBER)
+ s->Printf(":%u", m_column);
+ return true;
+ } else if (m_line > 0) {
+ s->Printf(" line %u", m_line);
+ if (m_column != LLDB_INVALID_COLUMN_NUMBER)
+ s->Printf(":%u", m_column);
+ return true;
+ }
+ return false;
+}
+
+size_t Declaration::MemorySize() const { return sizeof(Declaration); }
+
+int Declaration::Compare(const Declaration &a, const Declaration &b) {
+ int result = FileSpec::Compare(a.m_file, b.m_file, true);
+ if (result)
+ return result;
+ if (a.m_line < b.m_line)
+ return -1;
+ else if (a.m_line > b.m_line)
+ return 1;
+ if (a.m_column < b.m_column)
+ return -1;
+ else if (a.m_column > b.m_column)
+ return 1;
+ return 0;
+}
+
+bool Declaration::FileAndLineEqual(const Declaration &declaration) const {
+ int file_compare = FileSpec::Compare(this->m_file, declaration.m_file, true);
+ return file_compare == 0 && this->m_line == declaration.m_line;
+}
+
+bool lldb_private::operator==(const Declaration &lhs, const Declaration &rhs) {
+ if (lhs.GetColumn() != rhs.GetColumn())
+ return false;
+
+ return lhs.GetLine() == rhs.GetLine() && lhs.GetFile() == rhs.GetFile();
+}