diff options
author | emaste <emaste@FreeBSD.org> | 2013-08-23 17:46:38 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2013-08-23 17:46:38 +0000 |
commit | dcd15f81789e389c1cb27d264fcdddfd0a6002bd (patch) | |
tree | f561dabc721ad515599172c16da3a4400b7f4aec /source/Symbol/Declaration.cpp | |
download | FreeBSD-src-dcd15f81789e389c1cb27d264fcdddfd0a6002bd.zip FreeBSD-src-dcd15f81789e389c1cb27d264fcdddfd0a6002bd.tar.gz |
Import lldb as of SVN r188801
(A number of files not required for the FreeBSD build have been removed.)
Sponsored by: DARPA, AFRL
Diffstat (limited to 'source/Symbol/Declaration.cpp')
-rw-r--r-- | source/Symbol/Declaration.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/source/Symbol/Declaration.cpp b/source/Symbol/Declaration.cpp new file mode 100644 index 0000000..3943f02 --- /dev/null +++ b/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; +} + |