Woops... Guess I am just gonna reformat the entire file... Sorry about that!
On 10/03/16 04:43 PM, Zachary Turner <ztur...@google.com> wrote: > > > Was this clang-formatted? some of these lines look way longer than 80 columns. > > > > On Mon, Oct 3, 2016 at 4:41 PM Enrico Granata via lldb-commits > <lldb-commits@lists.llvm.org> wrote: > > > Author: enrico > > Date: Mon Oct 3 18:33:00 2016 > > New Revision: 283160 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=283160&view=rev > > Log: > > Changes to the std::multimap formatter to make it work against trunk libc++ > > > > Fixes rdar://28237486 > > > > > > Modified: > > lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp > > > > Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp?rev=283160&r1=283159&r2=283160&view=diff > > ============================================================================== > > --- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp (original) > > +++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp Mon Oct 3 > > 18:33:00 2016 > > @@ -39,21 +39,21 @@ public: > > static ConstString g_left("__left_"); > > if (!m_entry_sp) > > return m_entry_sp; > > - return m_entry_sp->GetChildMemberWithName(g_left, true); > > + return m_entry_sp->GetSyntheticChildAtOffset(0, > > m_entry_sp->GetCompilerType(), true); > > } > > > > ValueObjectSP right() const { > > static ConstString g_right("__right_"); > > if (!m_entry_sp) > > return m_entry_sp; > > - return m_entry_sp->GetChildMemberWithName(g_right, true); > > + return > > m_entry_sp->GetSyntheticChildAtOffset(m_entry_sp->GetProcessSP()->GetAddressByteSize(), > > m_entry_sp->GetCompilerType(), true); > > } > > > > ValueObjectSP parent() const { > > static ConstString g_parent("__parent_"); > > if (!m_entry_sp) > > return m_entry_sp; > > - return m_entry_sp->GetChildMemberWithName(g_parent, true); > > + return > > m_entry_sp->GetSyntheticChildAtOffset(2*m_entry_sp->GetProcessSP()->GetAddressByteSize(), > > m_entry_sp->GetCompilerType(), true); > > } > > > > uint64_t value() const { > > @@ -231,6 +231,8 @@ size_t lldb_private::formatters::LibcxxS > > > > bool > > lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::GetDataType() { > > static ConstString g___value_("__value_"); > > + static ConstString g_tree_("__tree_"); > > + static ConstString g_pair3("__pair3_"); > > > > if (m_element_type.GetOpaqueQualType() && m_element_type.GetTypeSystem()) > > return true; > > @@ -241,10 +243,21 @@ bool lldb_private::formatters::LibcxxStd > > if (!deref || error.Fail()) > > return false; > > deref = deref->GetChildMemberWithName(g___value_, true); > > + if (deref) { > > + m_element_type = deref->GetCompilerType(); > > + return true; > > + } > > + lldb::TemplateArgumentKind kind; > > + deref = m_backend.GetChildAtNamePath( {g_tree_, g_pair3} ); > > if (!deref) > > return false; > > - m_element_type = deref->GetCompilerType(); > > - return true; > > + m_element_type = deref->GetCompilerType().GetTemplateArgument(1, > > kind).GetTemplateArgument(1, kind); > > + if (!m_element_type) > > + return false; > > + std::string name; uint64_t bit_offset_ptr; uint32_t > > bitfield_bit_size_ptr; bool is_bitfield_ptr; > > + m_element_type = m_element_type.GetFieldAtIndex(0, name, &bit_offset_ptr, > > &bitfield_bit_size_ptr, &is_bitfield_ptr); > > + m_element_type = m_element_type.GetTypedefedType(); > > + return m_element_type.IsValid(); > > } > > > > void > > lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::GetValueOffset( > > @@ -255,10 +268,32 @@ void lldb_private::formatters::LibcxxStd > > return; > > CompilerType node_type(node->GetCompilerType()); > > uint64_t bit_offset; > > - if (node_type.GetIndexOfFieldWithName("__value_", nullptr, &bit_offset) == > > - UINT32_MAX) > > - return; > > - m_skip_size = bit_offset / 8u; > > + if (node_type.GetIndexOfFieldWithName("__value_", nullptr, &bit_offset) != > > + UINT32_MAX) { > > + m_skip_size = bit_offset / 8u; > > + } > > + else { > > + ClangASTContext *ast_ctx = > > llvm::dyn_cast_or_null<ClangASTContext>(node_type.GetTypeSystem()); > > + if (!ast_ctx) > > + return; > > + CompilerType tree_node_type = > > ast_ctx->CreateStructForIdentifier(ConstString(), { > > + {"ptr0",ast_ctx->GetBasicType(lldb::eBasicTypeVoid).GetPointerType()}, > > + {"ptr1",ast_ctx->GetBasicType(lldb::eBasicTypeVoid).GetPointerType()}, > > + {"ptr2",ast_ctx->GetBasicType(lldb::eBasicTypeVoid).GetPointerType()}, > > + {"cw",ast_ctx->GetBasicType(lldb::eBasicTypeBool)}, > > + {"payload",m_element_type} > > + }); > > + std::string child_name; > > + uint32_t child_byte_size; > > + int32_t child_byte_offset = 0; > > + uint32_t child_bitfield_bit_size; > > + uint32_t child_bitfield_bit_offset; > > + bool child_is_base_class; > > + bool child_is_deref_of_parent; > > + uint64_t language_flags; > > + if (tree_node_type.GetChildCompilerTypeAtIndex(nullptr, 4, true, true, > > true, child_name, child_byte_size, child_byte_offset, > > child_bitfield_bit_size, child_bitfield_bit_offset, child_is_base_class, > > child_is_deref_of_parent, nullptr, language_flags).IsValid()) > > + m_skip_size = (uint32_t)child_byte_offset; > > + } > > } > > > > lldb::ValueObjectSP > > @@ -301,7 +336,12 @@ lldb_private::formatters::LibcxxStdMapSy > > return lldb::ValueObjectSP(); > > } > > GetValueOffset(iterated_sp); > > - iterated_sp = iterated_sp->GetChildMemberWithName(g___value_, true); > > + auto child_sp = iterated_sp->GetChildMemberWithName(g___value_, true); > > + if (child_sp) > > + iterated_sp = child_sp; > > + else > > + iterated_sp = iterated_sp->GetSyntheticChildAtOffset( > > + m_skip_size, m_element_type, true); > > if (!iterated_sp) { > > m_tree = nullptr; > > return lldb::ValueObjectSP(); > > > > > > _______________________________________________ > > lldb-commits mailing list > > lldb-commits@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits > > > > -- Thanks, - Enrico 📩 egranata@.com ☎️ 27683
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits