diff options
author | Enrico Granata <egranata@apple.com> | 2014-10-22 20:34:38 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2014-10-22 20:34:38 +0000 |
commit | e85fe3a4d103b55f9bde86b7afc9253a0039b40a (patch) | |
tree | 4d9ff49383ef18fcf5f31240bb4f33226e57afef /lldb/source/DataFormatters/LibCxxUnorderedMap.cpp | |
parent | 4bd54a15445cca5565bfb5e43cb3e10bf00a642e (diff) | |
download | bcm5719-llvm-e85fe3a4d103b55f9bde86b7afc9253a0039b40a.tar.gz bcm5719-llvm-e85fe3a4d103b55f9bde86b7afc9253a0039b40a.zip |
Reorganize some of the data formatters code to simplify CXXFormattersFunction.h. Also, add a synthetic child provider for libc++'s version of std::initializer_list<T>
llvm-svn: 220421
Diffstat (limited to 'lldb/source/DataFormatters/LibCxxUnorderedMap.cpp')
-rw-r--r-- | lldb/source/DataFormatters/LibCxxUnorderedMap.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lldb/source/DataFormatters/LibCxxUnorderedMap.cpp b/lldb/source/DataFormatters/LibCxxUnorderedMap.cpp index bf68f20955b..da2a88966f5 100644 --- a/lldb/source/DataFormatters/LibCxxUnorderedMap.cpp +++ b/lldb/source/DataFormatters/LibCxxUnorderedMap.cpp @@ -25,6 +25,41 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::formatters; +namespace lldb_private { + namespace formatters { + class LibcxxStdUnorderedMapSyntheticFrontEnd : public SyntheticChildrenFrontEnd + { + public: + LibcxxStdUnorderedMapSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp); + + virtual size_t + CalculateNumChildren (); + + virtual lldb::ValueObjectSP + GetChildAtIndex (size_t idx); + + virtual bool + Update(); + + virtual bool + MightHaveChildren (); + + virtual size_t + GetIndexOfChildWithName (const ConstString &name); + + virtual + ~LibcxxStdUnorderedMapSyntheticFrontEnd (); + private: + + ValueObject* m_tree; + size_t m_num_elements; + ValueObject* m_next_element; + std::map<size_t,lldb::ValueObjectSP> m_children; + std::vector<std::pair<ValueObject*, uint64_t> > m_elements_cache; + }; + } +} + lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEnd::LibcxxStdUnorderedMapSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) : SyntheticChildrenFrontEnd(*valobj_sp.get()), m_tree(NULL), |