bool lldb_private::formatters::ObjCClassSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) { ProcessSP process_sp = valobj.GetProcessSP(); if (!process_sp) return false; ObjCLanguageRuntime* runtime = (ObjCLanguageRuntime*)process_sp->GetLanguageRuntime(lldb::eLanguageTypeObjC); if (!runtime) return false; ObjCLanguageRuntime::ClassDescriptorSP descriptor(runtime->GetClassDescriptorFromISA(valobj.GetValueAsUnsigned(0))); if (!descriptor.get() || !descriptor->IsValid()) return false; const char* class_name = descriptor->GetClassName().GetCString(); if (!class_name || !*class_name) return false; stream.Printf("%s",class_name); return true; }
bool lldb_private::formatters::ObjCClassSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) { ProcessSP process_sp = valobj.GetProcessSP(); if (!process_sp) return false; ObjCLanguageRuntime* runtime = (ObjCLanguageRuntime*)process_sp->GetLanguageRuntime(lldb::eLanguageTypeObjC); if (!runtime) return false; ObjCLanguageRuntime::ClassDescriptorSP descriptor(runtime->GetClassDescriptorFromISA(valobj.GetValueAsUnsigned(0))); if (!descriptor || !descriptor->IsValid()) return false; ConstString class_name = descriptor->GetClassName(); if (class_name.IsEmpty()) return false; if (ConstString cs = Mangled(class_name).GetDemangledName(lldb::eLanguageTypeUnknown)) class_name = cs; stream.Printf("%s",class_name.AsCString("<unknown class>")); return true; }