Our commands that end up displaying a ValueObject as part of their workflow use OptionGroupValueObjectDisplay as their currency for deciding the final representation

ValueObjects themselves use DumpValueObjectOptions as the currency for the same purpose

The code to convert between these two units was replicated (to varying degrees of correctness) in several spots in the code
This checkin provides one and only one (and hopefully correct :-) entry point for this conversion

llvm-svn: 178044
This commit is contained in:
Enrico Granata 2013-03-26 18:04:53 +00:00
parent cfed3cf33c
commit 9fb5ab558b
7 changed files with 45 additions and 64 deletions

View File

@ -14,6 +14,7 @@
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Core/ValueObject.h"
#include "lldb/Interpreter/Options.h"
namespace lldb_private {
@ -60,6 +61,11 @@ public:
be_raw == true ||
ignore_cap == true;
}
ValueObject::DumpValueObjectOptions
GetAsDumpOptions (bool objc_is_compact = false,
lldb::Format format = lldb::eFormatDefault,
lldb::TypeSummaryImplSP summary_sp = lldb::TypeSummaryImplSP());
bool show_types;
uint32_t no_summary_depth;

View File

@ -386,27 +386,7 @@ CommandObjectExpression::EvaluateExpression
if (format != eFormatDefault)
result_valobj_sp->SetFormat (format);
ValueObject::DumpValueObjectOptions options;
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth);
if (m_varobj_options.use_objc)
options.SetShowSummary(false);
else
options.SetOmitSummaryDepth(m_varobj_options.no_summary_depth);
options.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowTypes(m_varobj_options.show_types)
.SetShowLocation(m_varobj_options.show_location)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetUseDynamicType(m_varobj_options.use_dynamic)
.SetUseSyntheticValue(m_varobj_options.use_synth)
.SetFlatOutput(m_varobj_options.flat_output)
.SetIgnoreCap(m_varobj_options.ignore_cap)
.SetFormat(format)
.SetHideRootType(m_varobj_options.use_objc)
.SetHideName(m_varobj_options.use_objc)
.SetHideValue(m_varobj_options.use_objc);
if (m_varobj_options.be_raw)
options.SetRawDisplay(true);
ValueObject::DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions(true,format));
ValueObject::DumpValueObject (*(output_stream),
result_valobj_sp.get(), // Variable object to dump

View File

@ -374,22 +374,7 @@ protected:
else if (!m_option_variable.summary_string.IsCurrentValueEmpty())
summary_format_sp.reset(new StringSummaryFormat(TypeSummaryImpl::Flags(),m_option_variable.summary_string.GetCurrentValue()));
ValueObject::DumpValueObjectOptions options;
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth)
.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowTypes(m_varobj_options.show_types)
.SetShowLocation(m_varobj_options.show_location)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetUseDynamicType(m_varobj_options.use_dynamic)
.SetUseSyntheticValue(m_varobj_options.use_synth)
.SetFlatOutput(m_varobj_options.flat_output)
.SetOmitSummaryDepth(m_varobj_options.no_summary_depth)
.SetIgnoreCap(m_varobj_options.ignore_cap)
.SetSummary(summary_format_sp);
if (m_varobj_options.be_raw)
options.SetRawDisplay(true);
ValueObject::DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions(false,eFormatDefault,summary_format_sp));
if (variable_list)
{

View File

@ -807,19 +807,8 @@ protected:
bool scope_already_checked = true;
ValueObject::DumpValueObjectOptions options;
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth)
.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowLocation(m_varobj_options.show_location)
.SetShowTypes(m_varobj_options.show_types)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetScopeChecked(scope_already_checked)
.SetFlatOutput(m_varobj_options.flat_output)
.SetUseSyntheticValue(m_varobj_options.be_raw ? false : m_varobj_options.use_synth)
.SetOmitSummaryDepth(m_varobj_options.be_raw ? UINT32_MAX : m_varobj_options.no_summary_depth)
.SetIgnoreCap(m_varobj_options.be_raw ? true : m_varobj_options.ignore_cap)
.SetFormat(format)
.SetSummary();
ValueObject::DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions(false,format));
ValueObject::DumpValueObject (*output_stream,
valobj_sp.get(),
options);

View File

@ -637,19 +637,8 @@ public:
void
DumpValueObject (Stream &s, VariableSP &var_sp, ValueObjectSP &valobj_sp, const char *root_name)
{
ValueObject::DumpValueObjectOptions options;
ValueObject::DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions());
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth)
.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowTypes(m_varobj_options.show_types)
.SetShowLocation(m_varobj_options.show_location)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetUseDynamicType(m_varobj_options.use_dynamic)
.SetUseSyntheticValue(m_varobj_options.use_synth)
.SetFlatOutput(m_varobj_options.flat_output)
.SetOmitSummaryDepth(m_varobj_options.no_summary_depth)
.SetIgnoreCap(m_varobj_options.ignore_cap);
switch (var_sp->GetScope())
{
case eValueTypeVariableGlobal:

View File

@ -1989,8 +1989,7 @@ Debugger::FormatPrompt
ValueObjectSP return_valobj_sp = StopInfo::GetReturnValueObject (stop_info_sp);
if (return_valobj_sp)
{
ValueObject::DumpValueObjectOptions dump_options;
ValueObject::DumpValueObject (s, return_valobj_sp.get(), dump_options);
ValueObject::DumpValueObject (s, return_valobj_sp.get());
var_success = true;
}
}

View File

@ -146,3 +146,36 @@ OptionGroupValueObjectDisplay::OptionParsingStarting (CommandInterpreter &interp
use_dynamic = lldb::eNoDynamicValues;
}
}
ValueObject::DumpValueObjectOptions
OptionGroupValueObjectDisplay::GetAsDumpOptions (bool objc_is_compact,
lldb::Format format,
lldb::TypeSummaryImplSP summary_sp)
{
ValueObject::DumpValueObjectOptions options;
options.SetMaximumPointerDepth(ptr_depth);
if (use_objc)
options.SetShowSummary(false);
else
options.SetOmitSummaryDepth(no_summary_depth);
options.SetMaximumDepth(max_depth)
.SetShowTypes(show_types)
.SetShowLocation(show_location)
.SetUseObjectiveC(use_objc)
.SetUseDynamicType(use_dynamic)
.SetUseSyntheticValue(use_synth)
.SetFlatOutput(flat_output)
.SetIgnoreCap(ignore_cap)
.SetFormat(format)
.SetSummary(summary_sp);
if (objc_is_compact)
options.SetHideRootType(use_objc)
.SetHideName(use_objc)
.SetHideValue(use_objc);
if (be_raw)
options.SetRawDisplay(true);
return options;
}