1//===-- Declaration.cpp -----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Symbol/Declaration.h" 11#include "lldb/Core/Stream.h" 12 13using namespace lldb_private; 14 15void 16Declaration::Dump(Stream *s, bool show_fullpaths) const 17{ 18 if (m_file) 19 { 20 *s << ", decl = "; 21 if (show_fullpaths) 22 *s << m_file; 23 else 24 *s << m_file.GetFilename(); 25 if (m_line > 0) 26 s->Printf(":%u", m_line); 27#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 28 if (m_column > 0) 29 s->Printf(":%u", m_column); 30#endif 31 } 32 else 33 { 34 if (m_line > 0) 35 { 36 s->Printf(", line = %u", m_line); 37#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 38 if (m_column > 0) 39 s->Printf(":%u", m_column); 40#endif 41 } 42#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 43 else if (m_column > 0) 44 s->Printf(", column = %u", m_column); 45#endif 46 } 47} 48 49bool 50Declaration::DumpStopContext (Stream *s, bool show_fullpaths) const 51{ 52 if (m_file) 53 { 54 if (show_fullpaths || s->GetVerbose()) 55 *s << m_file; 56 else 57 m_file.GetFilename().Dump(s); 58 59 if (m_line > 0) 60 s->Printf(":%u", m_line); 61#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 62 if (m_column > 0) 63 s->Printf(":%u", m_column); 64#endif 65 return true; 66 } 67 else if (m_line > 0) 68 { 69 s->Printf(" line %u", m_line); 70#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 71 if (m_column > 0) 72 s->Printf(":%u", m_column); 73#endif 74 return true; 75 } 76 return false; 77} 78 79size_t 80Declaration::MemorySize() const 81{ 82 return sizeof(Declaration); 83} 84 85int 86Declaration::Compare(const Declaration& a, const Declaration& b) 87{ 88 int result = FileSpec::Compare(a.m_file, b.m_file, true); 89 if (result) 90 return result; 91 if (a.m_line < b.m_line) 92 return -1; 93 else if (a.m_line > b.m_line) 94 return 1; 95#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 96 if (a.m_column < b.m_column) 97 return -1; 98 else if (a.m_column > b.m_column) 99 return 1; 100#endif 101 return 0; 102} 103 104bool 105lldb_private::operator == (const Declaration &lhs, const Declaration &rhs) 106{ 107#ifdef LLDB_ENABLE_DECLARATION_COLUMNS 108 if (lhs.GetColumn () == rhs.GetColumn ()) 109 if (lhs.GetLine () == rhs.GetLine ()) 110 return lhs.GetFile() == rhs.GetFile(); 111#else 112 if (lhs.GetLine () == rhs.GetLine ()) 113 return lhs.GetFile() == rhs.GetFile(); 114#endif 115 return false; 116} 117 118