Skip to content

Commit 4380ded

Browse files
committed
[lldb][DataFormatter][NFC] Use GetFirstValueOfLibCXXCompressedPair in std::map formatter
This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in upcoming refactorings of this formatter. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not.
1 parent 0129ff1 commit 4380ded

File tree

1 file changed

+8
-18
lines changed

1 file changed

+8
-18
lines changed

lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,20 @@ size_t lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::
213213
CalculateNumChildren() {
214214
if (m_count != UINT32_MAX)
215215
return m_count;
216+
216217
if (m_tree == nullptr)
217218
return 0;
218-
ValueObjectSP m_item(m_tree->GetChildMemberWithName("__pair3_"));
219-
if (!m_item)
219+
220+
ValueObjectSP size_node(m_tree->GetChildMemberWithName("__pair3_"));
221+
if (!size_node)
220222
return 0;
221223

222-
switch (m_item->GetCompilerType().GetNumDirectBaseClasses()) {
223-
case 1:
224-
// Assume a pre llvm r300140 __compressed_pair implementation:
225-
m_item = m_item->GetChildMemberWithName("__first_");
226-
break;
227-
case 2: {
228-
// Assume a post llvm r300140 __compressed_pair implementation:
229-
ValueObjectSP first_elem_parent = m_item->GetChildAtIndex(0);
230-
m_item = first_elem_parent->GetChildMemberWithName("__value_");
231-
break;
232-
}
233-
default:
234-
return false;
235-
}
224+
size_node = GetFirstValueOfLibCXXCompressedPair(*size_node);
236225

237-
if (!m_item)
226+
if (!size_node)
238227
return 0;
239-
m_count = m_item->GetValueAsUnsigned(0);
228+
229+
m_count = size_node->GetValueAsUnsigned(0);
240230
return m_count;
241231
}
242232

0 commit comments

Comments
 (0)