summaryrefslogtreecommitdiffstats
path: root/lldb/source/DataFormatters/LibCxxUnorderedMap.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2014-10-22 20:34:38 +0000
committerEnrico Granata <egranata@apple.com>2014-10-22 20:34:38 +0000
commite85fe3a4d103b55f9bde86b7afc9253a0039b40a (patch)
tree4d9ff49383ef18fcf5f31240bb4f33226e57afef /lldb/source/DataFormatters/LibCxxUnorderedMap.cpp
parent4bd54a15445cca5565bfb5e43cb3e10bf00a642e (diff)
downloadbcm5719-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.cpp35
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),
OpenPOWER on IntegriCloud