Our commands that end up displaying a ValueObject as part of their workflow use Optio...
authorEnrico Granata <egranata@apple.com>
Tue, 26 Mar 2013 18:04:53 +0000 (18:04 +0000)
committerEnrico Granata <egranata@apple.com>
Tue, 26 Mar 2013 18:04:53 +0000 (18:04 +0000)
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

lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
lldb/source/Commands/CommandObjectExpression.cpp
lldb/source/Commands/CommandObjectFrame.cpp
lldb/source/Commands/CommandObjectMemory.cpp
lldb/source/Commands/CommandObjectTarget.cpp
lldb/source/Core/Debugger.cpp
lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp

index c5b33b3..da05e12 100644 (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;
index ccb2f8e..927dc62 100644 (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
index aafdd79..a7d4123 100644 (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)
         {
index 43944ce..c3c3e44 100644 (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);
index 3869efb..14a743a 100644 (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:
index e2323ae..20c55e6 100644 (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;
                                                 }
                                             }
index c6d2e1e..22a7f37 100644 (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;
+}