Author: enrico Date: Tue Sep 22 21:04:34 2015 New Revision: 248363 URL: http://llvm.org/viewvc/llvm-project?rev=248363&view=rev Log: Allow CompilerType to express a vote on whether oneliner printing should happen
Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h lldb/trunk/include/lldb/Symbol/TypeSystem.h lldb/trunk/source/DataFormatters/FormatManager.cpp lldb/trunk/source/Symbol/CompilerType.cpp lldb/trunk/source/Symbol/TypeSystem.cpp Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/CompilerType.h?rev=248363&r1=248362&r2=248363&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/CompilerType.h (original) +++ lldb/trunk/include/lldb/Symbol/CompilerType.h Tue Sep 22 21:04:34 2015 @@ -459,6 +459,9 @@ public: CompilerType GetTypeForFormatters () const; + LazyBool + ShouldPrintAsOneLiner () const; + //------------------------------------------------------------------ // Pointers & References //------------------------------------------------------------------ Modified: lldb/trunk/include/lldb/Symbol/TypeSystem.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=248363&r1=248362&r2=248363&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/TypeSystem.h (original) +++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Tue Sep 22 21:04:34 2015 @@ -507,6 +507,9 @@ public: virtual CompilerType GetTypeForFormatters (void* type); + virtual LazyBool + ShouldPrintAsOneLiner (void* type); + protected: const LLVMCastKind m_kind; // Support for llvm casting SymbolFile *m_sym_file; Modified: lldb/trunk/source/DataFormatters/FormatManager.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/FormatManager.cpp?rev=248363&r1=248362&r2=248363&view=diff ============================================================================== --- lldb/trunk/source/DataFormatters/FormatManager.cpp (original) +++ lldb/trunk/source/DataFormatters/FormatManager.cpp Tue Sep 22 21:04:34 2015 @@ -558,6 +558,23 @@ FormatManager::ShouldPrintAsOneLiner (Va if (valobj.GetNumChildren() == 0) return false; + // ask the type if it has any opinion about this + // eLazyBoolCalculate == no opinion; other values should be self explanatory + CompilerType compiler_type(valobj.GetCompilerType()); + if (compiler_type.IsValid()) + { + switch (compiler_type.ShouldPrintAsOneLiner()) + { + case eLazyBoolNo: + return false; + case eLazyBoolYes: + return true; + case eLazyBoolCalculate: + default: + break; + } + } + size_t total_children_name_len = 0; for (size_t idx = 0; Modified: lldb/trunk/source/Symbol/CompilerType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CompilerType.cpp?rev=248363&r1=248362&r2=248363&view=diff ============================================================================== --- lldb/trunk/source/Symbol/CompilerType.cpp (original) +++ lldb/trunk/source/Symbol/CompilerType.cpp Tue Sep 22 21:04:34 2015 @@ -859,6 +859,14 @@ CompilerType::GetTypeForFormatters () co return CompilerType(); } +LazyBool +CompilerType::ShouldPrintAsOneLiner () const +{ + if (IsValid()) + return m_type_system->ShouldPrintAsOneLiner(m_type); + return eLazyBoolCalculate; +} + // Get the index of the child of "clang_type" whose name matches. This function // doesn't descend into the children, but only looks one level deep and name // matches can include base class names. Modified: lldb/trunk/source/Symbol/TypeSystem.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/TypeSystem.cpp?rev=248363&r1=248362&r2=248363&view=diff ============================================================================== --- lldb/trunk/source/Symbol/TypeSystem.cpp (original) +++ lldb/trunk/source/Symbol/TypeSystem.cpp Tue Sep 22 21:04:34 2015 @@ -85,3 +85,9 @@ TypeSystem::GetTypeForFormatters (void* { return CompilerType(this, type); } + +LazyBool +TypeSystem::ShouldPrintAsOneLiner (void* type) +{ + return eLazyBoolCalculate; +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits