Files
llvm/lldb/source/Symbol/Declaration.cpp
Greg Clayton 45ba854399 Allow the built in ValueObject summary providers for C strings
use lldb_private::Target::ReadMemory(...) to allow constant strings
to be displayed in global variables prior on in between process
execution.

Centralized the variable declaration dumping into:

	bool
	Variable::DumpDeclaration (Stream *s, bool show_fullpaths, bool show_module);

Fixed an issue if you used "target variable --regex <regex>" where the
variable name would not be displayed, but the regular expression would.

Fixed an issue when viewing global variables through "target variable"
might not display correctly when doing DWARF in object files.

llvm-svn: 134878
2011-07-10 19:21:23 +00:00

118 lines
2.7 KiB
C++

//===-- 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;
}