[Lldb-commits] [lldb] r226634 - Allow individual ValueObjects to pick their preferred display language
Enrico Granata
egranata at apple.com
Tue Jan 20 17:47:14 PST 2015
Author: enrico
Date: Tue Jan 20 19:47:13 2015
New Revision: 226634
URL: http://llvm.org/viewvc/llvm-project?rev=226634&view=rev
Log:
Allow individual ValueObjects to pick their preferred display language
Most of the time, we can use context information just fine to choose a language (i.e. the language of the frame that the root object was defined in, if any); but in some cases, synthetic children may be fabricated as root frame-less entities, and then we wouldn't know any better
This patch allows (internal) synthetic child providers to set a display language on the children they generate, should they so choose
Modified:
lldb/trunk/include/lldb/Core/ValueObject.h
lldb/trunk/source/Core/ValueObject.cpp
Modified: lldb/trunk/include/lldb/Core/ValueObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=226634&r1=226633&r2=226634&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObject.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObject.h Tue Jan 20 19:47:13 2015
@@ -875,6 +875,9 @@ public:
virtual lldb::LanguageType
GetPreferredDisplayLanguage ();
+ void
+ SetPreferredDisplayLanguage (lldb::LanguageType);
+
lldb::TypeSummaryImplSP
GetSummaryFormat()
{
@@ -1106,6 +1109,8 @@ protected:
llvm::SmallVector<uint8_t, 16> m_value_checksum;
+ lldb::LanguageType m_preferred_display_language;
+
bool m_value_is_valid:1,
m_value_did_change:1,
m_children_count_valid:1,
Modified: lldb/trunk/source/Core/ValueObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=226634&r1=226633&r2=226634&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObject.cpp (original)
+++ lldb/trunk/source/Core/ValueObject.cpp Tue Jan 20 19:47:13 2015
@@ -99,6 +99,7 @@ ValueObject::ValueObject (ValueObject &p
m_user_id_of_forced_summary(),
m_address_type_of_ptr_or_ref_children(eAddressTypeInvalid),
m_value_checksum(),
+ m_preferred_display_language(lldb::eLanguageTypeUnknown),
m_value_is_valid (false),
m_value_did_change (false),
m_children_count_valid (false),
@@ -149,6 +150,7 @@ ValueObject::ValueObject (ExecutionConte
m_user_id_of_forced_summary(),
m_address_type_of_ptr_or_ref_children(child_ptr_or_ref_addr_type),
m_value_checksum(),
+ m_preferred_display_language(lldb::eLanguageTypeUnknown),
m_value_is_valid (false),
m_value_did_change (false),
m_children_count_valid (false),
@@ -4181,24 +4183,33 @@ ValueObject::GetFormat () const
lldb::LanguageType
ValueObject::GetPreferredDisplayLanguage ()
{
- lldb::LanguageType type = lldb::eLanguageTypeUnknown;
- if (GetRoot())
+ lldb::LanguageType type = m_preferred_display_language;
+ if (m_preferred_display_language == lldb::eLanguageTypeUnknown)
{
- if (GetRoot() == this)
+ if (GetRoot())
{
- if (StackFrameSP frame_sp = GetFrameSP())
+ if (GetRoot() == this)
{
- const SymbolContext& sc(frame_sp->GetSymbolContext(eSymbolContextCompUnit));
- if (CompileUnit* cu = sc.comp_unit)
- type = cu->GetLanguage();
+ if (StackFrameSP frame_sp = GetFrameSP())
+ {
+ const SymbolContext& sc(frame_sp->GetSymbolContext(eSymbolContextCompUnit));
+ if (CompileUnit* cu = sc.comp_unit)
+ type = cu->GetLanguage();
+ }
+ }
+ else
+ {
+ type = GetRoot()->GetPreferredDisplayLanguage();
}
- }
- else
- {
- type = GetRoot()->GetPreferredDisplayLanguage();
}
}
- return type;
+ return (m_preferred_display_language = type); // only compute it once
+}
+
+void
+ValueObject::SetPreferredDisplayLanguage (lldb::LanguageType lt)
+{
+ m_preferred_display_language = lt;
}
bool
More information about the lldb-commits
mailing list