diff options
| author | Greg Clayton <gclayton@apple.com> | 2010-10-06 03:09:11 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2010-10-06 03:09:11 +0000 |
| commit | 32c4085ba2d259ff9a4365b1962362248de2c655 (patch) | |
| tree | 33daf492f6ff65a408bdbddea830dd789735b6d7 | |
| parent | 0f7e94fd7b7d877359cfeeb9d9d9ca52f2577233 (diff) | |
| download | bcm5719-llvm-32c4085ba2d259ff9a4365b1962362248de2c655.tar.gz bcm5719-llvm-32c4085ba2d259ff9a4365b1962362248de2c655.zip | |
Restored the ability to set the format for expressions after changing the expression results over to ValueObjectSP objects.
llvm-svn: 115733
| -rw-r--r-- | lldb/include/lldb/Core/ValueObject.h | 13 | ||||
| -rw-r--r-- | lldb/source/Commands/CommandObjectExpression.cpp | 3 | ||||
| -rw-r--r-- | lldb/source/Core/ValueObject.cpp | 24 |
3 files changed, 30 insertions, 10 deletions
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h index 2d1b43a0a6f..0e6385f7d40 100644 --- a/lldb/include/lldb/Core/ValueObject.h +++ b/lldb/include/lldb/Core/ValueObject.h @@ -213,6 +213,18 @@ public: m_update_id = LLDB_INVALID_UID; } + lldb::Format + GetFormat () const + { + return m_format; + } + + void + SetFormat (lldb::Format format) + { + m_format = format; + } + protected: //------------------------------------------------------------------ // Classes that inherit from ValueObject can see and modify these @@ -236,6 +248,7 @@ protected: std::vector<lldb::ValueObjectSP> m_children; std::map<ConstString, lldb::ValueObjectSP> m_synthetic_children; lldb::ValueObjectSP m_dynamic_value_sp; + lldb::Format m_format; bool m_value_is_valid:1, m_value_did_change:1, m_children_count_valid:1, diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 1f6c3de1903..516d941867d 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -237,6 +237,9 @@ CommandObjectExpression::EvaluateExpression assert (result_valobj_sp.get()); if (result_valobj_sp->GetError().Success()) { + if (m_options.format != eFormatDefault) + result_valobj_sp->SetFormat (m_options.format); + ValueObject::DumpValueObject (output_stream, m_exe_ctx.GetBestExecutionContextScope(), result_valobj_sp.get(), // Variable object to dump diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index cc7f40887b8..bd613ba7b2c 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -56,6 +56,8 @@ ValueObject::ValueObject () : m_object_desc_str (), m_children (), m_synthetic_children (), + m_dynamic_value_sp (), + m_format (eFormatDefault), m_value_is_valid (false), m_value_did_change (false), m_children_count_valid (false), @@ -584,16 +586,18 @@ ValueObject::GetValueAsCString (ExecutionContextScope *exe_scope) if (clang_type) { StreamString sstr; - lldb::Format format = ClangASTType::GetFormat(clang_type); - if (ClangASTType::DumpTypeValue(GetClangAST(), // The clang AST - clang_type, // The clang type to display - &sstr, - format, // Format to display this type with - m_data, // Data to extract from - 0, // Byte offset into "m_data" - GetByteSize(), // Byte size of item in "m_data" - GetBitfieldBitSize(), // Bitfield bit size - GetBitfieldBitOffset())) // Bitfield bit offset + if (m_format == eFormatDefault) + m_format = ClangASTType::GetFormat(clang_type); + + if (ClangASTType::DumpTypeValue (GetClangAST(), // The clang AST + clang_type, // The clang type to display + &sstr, + m_format, // Format to display this type with + m_data, // Data to extract from + 0, // Byte offset into "m_data" + GetByteSize(), // Byte size of item in "m_data" + GetBitfieldBitSize(), // Bitfield bit size + GetBitfieldBitOffset())) // Bitfield bit offset m_value_str.swap(sstr.GetString()); else m_value_str.clear(); |

