| //===-- 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/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); |
| #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 << 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 FileSpec::Equal(lhs.GetFile(), rhs.GetFile(), true); |
| #endif |
| return false; |
| } |