diff options
Diffstat (limited to 'lldb/source/DataFormatters/LibStdcpp.cpp')
-rw-r--r-- | lldb/source/DataFormatters/LibStdcpp.cpp | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/lldb/source/DataFormatters/LibStdcpp.cpp b/lldb/source/DataFormatters/LibStdcpp.cpp index 33447af5328..73f9594e7fb 100644 --- a/lldb/source/DataFormatters/LibStdcpp.cpp +++ b/lldb/source/DataFormatters/LibStdcpp.cpp @@ -7,13 +7,14 @@ // //===----------------------------------------------------------------------===// -#include "lldb/DataFormatters/CXXFormatterFunctions.h" +#include "lldb/DataFormatters/LibStdcpp.h" #include "lldb/Core/DataBufferHeap.h" #include "lldb/Core/Error.h" #include "lldb/Core/Stream.h" #include "lldb/Core/ValueObject.h" #include "lldb/Core/ValueObjectConstResult.h" +#include "lldb/DataFormatters/VectorIterator.h" #include "lldb/Host/Endian.h" #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Target/Target.h" @@ -22,6 +23,36 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::formatters; +class LibstdcppMapIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd +{ +public: + LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp); + + size_t + CalculateNumChildren() override; + + lldb::ValueObjectSP + GetChildAtIndex(size_t idx) override; + + bool + Update() override; + + bool + MightHaveChildren() override; + + size_t + GetIndexOfChildWithName (const ConstString &name) override; + + ~LibstdcppMapIteratorSyntheticFrontEnd() override; + +private: + ExecutionContextRef m_exe_ctx_ref; + lldb::addr_t m_pair_address; + CompilerType m_pair_type; + EvaluateExpressionOptions m_options; + lldb::ValueObjectSP m_pair_sp; +}; + /* (std::_Rb_tree_iterator<std::pair<const int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) ibeg = { (_Base_ptr) _M_node = 0x0000000100103910 { @@ -33,7 +64,7 @@ using namespace lldb_private::formatters; } */ -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) : +LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) : SyntheticChildrenFrontEnd(*valobj_sp.get()), m_exe_ctx_ref(), m_pair_address(0), @@ -50,7 +81,7 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIte } bool -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::Update() +LibstdcppMapIteratorSyntheticFrontEnd::Update() { ValueObjectSP valobj_sp = m_backend.GetSP(); if (!valobj_sp) @@ -93,13 +124,13 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::Update() } size_t -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::CalculateNumChildren () +LibstdcppMapIteratorSyntheticFrontEnd::CalculateNumChildren () { return 2; } lldb::ValueObjectSP -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex (size_t idx) +LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex (size_t idx) { if (m_pair_address != 0 && m_pair_type) { @@ -112,13 +143,13 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex } bool -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::MightHaveChildren () +LibstdcppMapIteratorSyntheticFrontEnd::MightHaveChildren () { return true; } size_t -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name) +LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name) { if (name == ConstString("first")) return 0; @@ -127,7 +158,7 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChild return UINT32_MAX; } -lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::~LibstdcppMapIteratorSyntheticFrontEnd () +LibstdcppMapIteratorSyntheticFrontEnd::~LibstdcppMapIteratorSyntheticFrontEnd () {} SyntheticChildrenFrontEnd* |