summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp')
-rw-r--r--contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp b/contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp
new file mode 100644
index 0000000..3943f02
--- /dev/null
+++ b/contrib/llvm/tools/lldb/source/Symbol/Declaration.cpp
@@ -0,0 +1,117 @@
+//===-- Declaration.cpp -----------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Symbol/Declaration.h"
+#include "lldb/Core/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);
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+#endif
+ }
+ else
+ {
+ if (m_line > 0)
+ {
+ s->Printf(", line = %u", m_line);
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+#endif
+ }
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ else if (m_column > 0)
+ s->Printf(", column = %u", m_column);
+#endif
+ }
+}
+
+bool
+Declaration::DumpStopContext (Stream *s, bool show_fullpaths) const
+{
+ if (m_file)
+ {
+ if (show_fullpaths || s->GetVerbose())
+ *s << m_file;
+ else
+ m_file.GetFilename().Dump(s);
+
+ if (m_line > 0)
+ s->Printf(":%u", m_line);
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+#endif
+ return true;
+ }
+ else if (m_line > 0)
+ {
+ s->Printf(" line %u", m_line);
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+#endif
+ 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;
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (a.m_column < b.m_column)
+ return -1;
+ else if (a.m_column > b.m_column)
+ return 1;
+#endif
+ return 0;
+}
+
+bool
+lldb_private::operator == (const Declaration &lhs, const Declaration &rhs)
+{
+#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
+ if (lhs.GetColumn () == rhs.GetColumn ())
+ if (lhs.GetLine () == rhs.GetLine ())
+ return lhs.GetFile() == rhs.GetFile();
+#else
+ if (lhs.GetLine () == rhs.GetLine ())
+ return lhs.GetFile() == rhs.GetFile();
+#endif
+ return false;
+}
+
OpenPOWER on IntegriCloud