From 9fb5ab558b9874ac7065337a9ac274e2d857da16 Mon Sep 17 00:00:00 2001 From: Enrico Granata Date: Tue, 26 Mar 2013 18:04:53 +0000 Subject: [PATCH] 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 --- .../OptionGroupValueObjectDisplay.h | 6 ++++ .../Commands/CommandObjectExpression.cpp | 22 +------------ lldb/source/Commands/CommandObjectFrame.cpp | 17 +--------- lldb/source/Commands/CommandObjectMemory.cpp | 15 ++------- lldb/source/Commands/CommandObjectTarget.cpp | 13 +------- lldb/source/Core/Debugger.cpp | 3 +- .../OptionGroupValueObjectDisplay.cpp | 33 +++++++++++++++++++ 7 files changed, 45 insertions(+), 64 deletions(-) diff --git a/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h b/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h index c5b33b34c3f1..da05e127d5d1 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h +++ b/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h @@ -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; diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index ccb2f8e61b85..927dc628695d 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -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 diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp index aafdd79e0125..a7d412397653 100644 --- a/lldb/source/Commands/CommandObjectFrame.cpp +++ b/lldb/source/Commands/CommandObjectFrame.cpp @@ -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) { diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index 43944cea2c77..c3c3e44025c1 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -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); diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 3869efb08b99..14a743a5c16b 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -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: diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index e2323ae03d9e..20c55e63c7a6 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -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; } } diff --git a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp index c6d2e1ec1628..22a7f37740d5 100644 --- a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp +++ b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp @@ -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; +} -- GitLab