Add a data formatter for __NSArray0, the type of empty arrays
llvm-svn: 250341
diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
index 2a6c886..675a91a 100644
--- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp
+++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
@@ -202,6 +202,31 @@
std::vector<lldb::ValueObjectSP> m_children;
};
+ class NSArray0SyntheticFrontEnd : public SyntheticChildrenFrontEnd
+ {
+ public:
+ NSArray0SyntheticFrontEnd (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
+ ~NSArray0SyntheticFrontEnd ();
+ private:
+ };
+
class NSArrayCodeRunningSyntheticFrontEnd : public SyntheticChildrenFrontEnd
{
public:
@@ -275,6 +300,10 @@
if (error.Fail())
return false;
}
+ else if (!strcmp(class_name,"__NSArray0"))
+ {
+ value = 0;
+ }
else if (!strcmp(class_name,"__NSCFArray"))
{
Error error;
@@ -632,6 +661,45 @@
return retval_sp;
}
+lldb_private::formatters::NSArray0SyntheticFrontEnd::NSArray0SyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
+SyntheticChildrenFrontEnd (*valobj_sp.get())
+{
+}
+
+lldb_private::formatters::NSArray0SyntheticFrontEnd::~NSArray0SyntheticFrontEnd ()
+{
+}
+
+size_t
+lldb_private::formatters::NSArray0SyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
+{
+ return UINT32_MAX;
+}
+
+size_t
+lldb_private::formatters::NSArray0SyntheticFrontEnd::CalculateNumChildren ()
+{
+ return 0;
+}
+
+bool
+lldb_private::formatters::NSArray0SyntheticFrontEnd::Update()
+{
+ return false;
+}
+
+bool
+lldb_private::formatters::NSArray0SyntheticFrontEnd::MightHaveChildren ()
+{
+ return false;
+}
+
+lldb::ValueObjectSP
+lldb_private::formatters::NSArray0SyntheticFrontEnd::GetChildAtIndex (size_t idx)
+{
+ return lldb::ValueObjectSP();
+}
+
SyntheticChildrenFrontEnd* lldb_private::formatters::NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp)
{
if (!valobj_sp)
@@ -669,6 +737,10 @@
{
return (new NSArrayISyntheticFrontEnd(valobj_sp));
}
+ else if (!strcmp(class_name,"__NSArray0"))
+ {
+ return (new NSArray0SyntheticFrontEnd(valobj_sp));
+ }
else if (!strcmp(class_name,"__NSArrayM"))
{
if (runtime->GetFoundationVersion() >= 1100)