1254721Semaste//===-- FormatManager.cpp -------------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/lldb-python.h" 11254721Semaste 12254721Semaste#include "lldb/DataFormatters/FormatManager.h" 13254721Semaste 14254721Semaste// C Includes 15254721Semaste// C++ Includes 16254721Semaste// Other libraries and framework includes 17254721Semaste// Project includes 18254721Semaste 19254721Semaste#include "lldb/Core/Debugger.h" 20254721Semaste#include "lldb/DataFormatters/CXXFormatterFunctions.h" 21254721Semaste#include "lldb/Interpreter/ScriptInterpreterPython.h" 22254721Semaste#include "lldb/Target/ExecutionContext.h" 23254721Semaste#include "lldb/Target/Platform.h" 24254721Semaste 25254721Semasteusing namespace lldb; 26254721Semasteusing namespace lldb_private; 27254721Semaste 28254721Semaste 29254721Semastestruct FormatInfo 30254721Semaste{ 31254721Semaste Format format; 32254721Semaste const char format_char; // One or more format characters that can be used for this format. 33254721Semaste const char *format_name; // Long format name that can be used to specify the current format 34254721Semaste}; 35254721Semaste 36254721Semastestatic FormatInfo 37254721Semasteg_format_infos[] = 38254721Semaste{ 39254721Semaste { eFormatDefault , '\0' , "default" }, 40254721Semaste { eFormatBoolean , 'B' , "boolean" }, 41254721Semaste { eFormatBinary , 'b' , "binary" }, 42254721Semaste { eFormatBytes , 'y' , "bytes" }, 43254721Semaste { eFormatBytesWithASCII , 'Y' , "bytes with ASCII" }, 44254721Semaste { eFormatChar , 'c' , "character" }, 45254721Semaste { eFormatCharPrintable , 'C' , "printable character" }, 46254721Semaste { eFormatComplexFloat , 'F' , "complex float" }, 47254721Semaste { eFormatCString , 's' , "c-string" }, 48254721Semaste { eFormatDecimal , 'd' , "decimal" }, 49254721Semaste { eFormatEnum , 'E' , "enumeration" }, 50254721Semaste { eFormatHex , 'x' , "hex" }, 51254721Semaste { eFormatHexUppercase , 'X' , "uppercase hex" }, 52254721Semaste { eFormatFloat , 'f' , "float" }, 53254721Semaste { eFormatOctal , 'o' , "octal" }, 54254721Semaste { eFormatOSType , 'O' , "OSType" }, 55254721Semaste { eFormatUnicode16 , 'U' , "unicode16" }, 56254721Semaste { eFormatUnicode32 , '\0' , "unicode32" }, 57254721Semaste { eFormatUnsigned , 'u' , "unsigned decimal" }, 58254721Semaste { eFormatPointer , 'p' , "pointer" }, 59254721Semaste { eFormatVectorOfChar , '\0' , "char[]" }, 60254721Semaste { eFormatVectorOfSInt8 , '\0' , "int8_t[]" }, 61254721Semaste { eFormatVectorOfUInt8 , '\0' , "uint8_t[]" }, 62254721Semaste { eFormatVectorOfSInt16 , '\0' , "int16_t[]" }, 63254721Semaste { eFormatVectorOfUInt16 , '\0' , "uint16_t[]" }, 64254721Semaste { eFormatVectorOfSInt32 , '\0' , "int32_t[]" }, 65254721Semaste { eFormatVectorOfUInt32 , '\0' , "uint32_t[]" }, 66254721Semaste { eFormatVectorOfSInt64 , '\0' , "int64_t[]" }, 67254721Semaste { eFormatVectorOfUInt64 , '\0' , "uint64_t[]" }, 68254721Semaste { eFormatVectorOfFloat32, '\0' , "float32[]" }, 69254721Semaste { eFormatVectorOfFloat64, '\0' , "float64[]" }, 70254721Semaste { eFormatVectorOfUInt128, '\0' , "uint128_t[]" }, 71254721Semaste { eFormatComplexInteger , 'I' , "complex integer" }, 72254721Semaste { eFormatCharArray , 'a' , "character array" }, 73254721Semaste { eFormatAddressInfo , 'A' , "address" }, 74254721Semaste { eFormatHexFloat , '\0' , "hex float" }, 75254721Semaste { eFormatInstruction , 'i' , "instruction" }, 76254721Semaste { eFormatVoid , 'v' , "void" } 77254721Semaste}; 78254721Semaste 79254721Semastestatic uint32_t 80254721Semasteg_num_format_infos = sizeof(g_format_infos)/sizeof(FormatInfo); 81254721Semaste 82254721Semastestatic bool 83254721SemasteGetFormatFromFormatChar (char format_char, Format &format) 84254721Semaste{ 85254721Semaste for (uint32_t i=0; i<g_num_format_infos; ++i) 86254721Semaste { 87254721Semaste if (g_format_infos[i].format_char == format_char) 88254721Semaste { 89254721Semaste format = g_format_infos[i].format; 90254721Semaste return true; 91254721Semaste } 92254721Semaste } 93254721Semaste format = eFormatInvalid; 94254721Semaste return false; 95254721Semaste} 96254721Semaste 97254721Semastestatic bool 98254721SemasteGetFormatFromFormatName (const char *format_name, bool partial_match_ok, Format &format) 99254721Semaste{ 100254721Semaste uint32_t i; 101254721Semaste for (i=0; i<g_num_format_infos; ++i) 102254721Semaste { 103254721Semaste if (strcasecmp (g_format_infos[i].format_name, format_name) == 0) 104254721Semaste { 105254721Semaste format = g_format_infos[i].format; 106254721Semaste return true; 107254721Semaste } 108254721Semaste } 109254721Semaste 110254721Semaste if (partial_match_ok) 111254721Semaste { 112254721Semaste for (i=0; i<g_num_format_infos; ++i) 113254721Semaste { 114254721Semaste if (strcasestr (g_format_infos[i].format_name, format_name) == g_format_infos[i].format_name) 115254721Semaste { 116254721Semaste format = g_format_infos[i].format; 117254721Semaste return true; 118254721Semaste } 119254721Semaste } 120254721Semaste } 121254721Semaste format = eFormatInvalid; 122254721Semaste return false; 123254721Semaste} 124254721Semaste 125254721Semastebool 126254721SemasteFormatManager::GetFormatFromCString (const char *format_cstr, 127254721Semaste bool partial_match_ok, 128254721Semaste lldb::Format &format) 129254721Semaste{ 130254721Semaste bool success = false; 131254721Semaste if (format_cstr && format_cstr[0]) 132254721Semaste { 133254721Semaste if (format_cstr[1] == '\0') 134254721Semaste { 135254721Semaste success = GetFormatFromFormatChar (format_cstr[0], format); 136254721Semaste if (success) 137254721Semaste return true; 138254721Semaste } 139254721Semaste 140254721Semaste success = GetFormatFromFormatName (format_cstr, partial_match_ok, format); 141254721Semaste } 142254721Semaste if (!success) 143254721Semaste format = eFormatInvalid; 144254721Semaste return success; 145254721Semaste} 146254721Semaste 147254721Semastechar 148254721SemasteFormatManager::GetFormatAsFormatChar (lldb::Format format) 149254721Semaste{ 150254721Semaste for (uint32_t i=0; i<g_num_format_infos; ++i) 151254721Semaste { 152254721Semaste if (g_format_infos[i].format == format) 153254721Semaste return g_format_infos[i].format_char; 154254721Semaste } 155254721Semaste return '\0'; 156254721Semaste} 157254721Semaste 158254721Semasteconst char * 159254721SemasteFormatManager::GetFormatAsCString (Format format) 160254721Semaste{ 161254721Semaste if (format >= eFormatDefault && format < kNumFormats) 162254721Semaste return g_format_infos[format].format_name; 163254721Semaste return NULL; 164254721Semaste} 165254721Semaste 166254721Semastelldb::TypeSummaryImplSP 167254721SemasteFormatManager::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 168254721Semaste{ 169254721Semaste if (!type_sp) 170254721Semaste return lldb::TypeSummaryImplSP(); 171254721Semaste lldb::TypeSummaryImplSP summary_chosen_sp; 172254721Semaste uint32_t num_categories = m_categories_map.GetCount(); 173254721Semaste lldb::TypeCategoryImplSP category_sp; 174254721Semaste uint32_t prio_category = UINT32_MAX; 175254721Semaste for (uint32_t category_id = 0; 176254721Semaste category_id < num_categories; 177254721Semaste category_id++) 178254721Semaste { 179254721Semaste category_sp = GetCategoryAtIndex(category_id); 180254721Semaste if (category_sp->IsEnabled() == false) 181254721Semaste continue; 182254721Semaste lldb::TypeSummaryImplSP summary_current_sp = category_sp->GetSummaryForType(type_sp); 183254721Semaste if (summary_current_sp && (summary_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 184254721Semaste { 185254721Semaste prio_category = category_sp->GetEnabledPosition(); 186254721Semaste summary_chosen_sp = summary_current_sp; 187254721Semaste } 188254721Semaste } 189254721Semaste return summary_chosen_sp; 190254721Semaste} 191254721Semaste 192254721Semastelldb::TypeFilterImplSP 193254721SemasteFormatManager::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 194254721Semaste{ 195254721Semaste if (!type_sp) 196254721Semaste return lldb::TypeFilterImplSP(); 197254721Semaste lldb::TypeFilterImplSP filter_chosen_sp; 198254721Semaste uint32_t num_categories = m_categories_map.GetCount(); 199254721Semaste lldb::TypeCategoryImplSP category_sp; 200254721Semaste uint32_t prio_category = UINT32_MAX; 201254721Semaste for (uint32_t category_id = 0; 202254721Semaste category_id < num_categories; 203254721Semaste category_id++) 204254721Semaste { 205254721Semaste category_sp = GetCategoryAtIndex(category_id); 206254721Semaste if (category_sp->IsEnabled() == false) 207254721Semaste continue; 208254721Semaste lldb::TypeFilterImplSP filter_current_sp((TypeFilterImpl*)category_sp->GetFilterForType(type_sp).get()); 209254721Semaste if (filter_current_sp && (filter_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 210254721Semaste { 211254721Semaste prio_category = category_sp->GetEnabledPosition(); 212254721Semaste filter_chosen_sp = filter_current_sp; 213254721Semaste } 214254721Semaste } 215254721Semaste return filter_chosen_sp; 216254721Semaste} 217254721Semaste 218254721Semaste#ifndef LLDB_DISABLE_PYTHON 219254721Semastelldb::ScriptedSyntheticChildrenSP 220254721SemasteFormatManager::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 221254721Semaste{ 222254721Semaste if (!type_sp) 223254721Semaste return lldb::ScriptedSyntheticChildrenSP(); 224254721Semaste lldb::ScriptedSyntheticChildrenSP synth_chosen_sp; 225254721Semaste uint32_t num_categories = m_categories_map.GetCount(); 226254721Semaste lldb::TypeCategoryImplSP category_sp; 227254721Semaste uint32_t prio_category = UINT32_MAX; 228254721Semaste for (uint32_t category_id = 0; 229254721Semaste category_id < num_categories; 230254721Semaste category_id++) 231254721Semaste { 232254721Semaste category_sp = GetCategoryAtIndex(category_id); 233254721Semaste if (category_sp->IsEnabled() == false) 234254721Semaste continue; 235254721Semaste lldb::ScriptedSyntheticChildrenSP synth_current_sp((ScriptedSyntheticChildren*)category_sp->GetSyntheticForType(type_sp).get()); 236254721Semaste if (synth_current_sp && (synth_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 237254721Semaste { 238254721Semaste prio_category = category_sp->GetEnabledPosition(); 239254721Semaste synth_chosen_sp = synth_current_sp; 240254721Semaste } 241254721Semaste } 242254721Semaste return synth_chosen_sp; 243254721Semaste} 244254721Semaste#endif 245254721Semaste 246254721Semaste#ifndef LLDB_DISABLE_PYTHON 247254721Semastelldb::SyntheticChildrenSP 248254721SemasteFormatManager::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 249254721Semaste{ 250254721Semaste if (!type_sp) 251254721Semaste return lldb::SyntheticChildrenSP(); 252254721Semaste lldb::TypeFilterImplSP filter_sp = GetFilterForType(type_sp); 253254721Semaste lldb::ScriptedSyntheticChildrenSP synth_sp = GetSyntheticForType(type_sp); 254254721Semaste if (filter_sp->GetRevision() > synth_sp->GetRevision()) 255254721Semaste return lldb::SyntheticChildrenSP(filter_sp.get()); 256254721Semaste else 257254721Semaste return lldb::SyntheticChildrenSP(synth_sp.get()); 258254721Semaste} 259254721Semaste#endif 260254721Semaste 261254721Semastelldb::TypeCategoryImplSP 262254721SemasteFormatManager::GetCategory (const ConstString& category_name, 263254721Semaste bool can_create) 264254721Semaste{ 265254721Semaste if (!category_name) 266254721Semaste return GetCategory(m_default_category_name); 267254721Semaste lldb::TypeCategoryImplSP category; 268254721Semaste if (m_categories_map.Get(category_name, category)) 269254721Semaste return category; 270254721Semaste 271254721Semaste if (!can_create) 272254721Semaste return lldb::TypeCategoryImplSP(); 273254721Semaste 274254721Semaste m_categories_map.Add(category_name,lldb::TypeCategoryImplSP(new TypeCategoryImpl(this, category_name))); 275254721Semaste return GetCategory(category_name); 276254721Semaste} 277254721Semaste 278254721Semastelldb::Format 279254721SemasteFormatManager::GetSingleItemFormat(lldb::Format vector_format) 280254721Semaste{ 281254721Semaste switch(vector_format) 282254721Semaste { 283254721Semaste case eFormatVectorOfChar: 284254721Semaste return eFormatCharArray; 285254721Semaste 286254721Semaste case eFormatVectorOfSInt8: 287254721Semaste case eFormatVectorOfSInt16: 288254721Semaste case eFormatVectorOfSInt32: 289254721Semaste case eFormatVectorOfSInt64: 290254721Semaste return eFormatDecimal; 291254721Semaste 292254721Semaste case eFormatVectorOfUInt8: 293254721Semaste case eFormatVectorOfUInt16: 294254721Semaste case eFormatVectorOfUInt32: 295254721Semaste case eFormatVectorOfUInt64: 296254721Semaste case eFormatVectorOfUInt128: 297254721Semaste return eFormatHex; 298254721Semaste 299254721Semaste case eFormatVectorOfFloat32: 300254721Semaste case eFormatVectorOfFloat64: 301254721Semaste return eFormatFloat; 302254721Semaste 303254721Semaste default: 304254721Semaste return lldb::eFormatInvalid; 305254721Semaste } 306254721Semaste} 307254721Semaste 308254721SemasteConstString 309254721SemasteFormatManager::GetValidTypeName (const ConstString& type) 310254721Semaste{ 311254721Semaste return ::GetValidTypeName_Impl(type); 312254721Semaste} 313254721Semaste 314254721SemasteConstString 315254721SemasteGetTypeForCache (ValueObject& valobj, 316254721Semaste lldb::DynamicValueType use_dynamic) 317254721Semaste{ 318254721Semaste if (use_dynamic == lldb::eNoDynamicValues) 319254721Semaste { 320254721Semaste if (valobj.IsDynamic()) 321254721Semaste { 322254721Semaste if (valobj.GetStaticValue()) 323254721Semaste return valobj.GetStaticValue()->GetQualifiedTypeName(); 324254721Semaste else 325254721Semaste return ConstString(); 326254721Semaste } 327254721Semaste else 328254721Semaste return valobj.GetQualifiedTypeName(); 329254721Semaste } 330254721Semaste if (valobj.IsDynamic()) 331254721Semaste return valobj.GetQualifiedTypeName(); 332254721Semaste if (valobj.GetDynamicValue(use_dynamic)) 333254721Semaste return valobj.GetDynamicValue(use_dynamic)->GetQualifiedTypeName(); 334254721Semaste return ConstString(); 335254721Semaste} 336254721Semaste 337254721Semastelldb::TypeSummaryImplSP 338254721SemasteFormatManager::GetSummaryFormat (ValueObject& valobj, 339254721Semaste lldb::DynamicValueType use_dynamic) 340254721Semaste{ 341254721Semaste TypeSummaryImplSP retval; 342254721Semaste Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); 343254721Semaste ConstString valobj_type(GetTypeForCache(valobj, use_dynamic)); 344254721Semaste if (valobj_type) 345254721Semaste { 346254721Semaste if (log) 347254721Semaste log->Printf("\n\n[FormatManager::GetSummaryFormat] Looking into cache for type %s", valobj_type.AsCString("<invalid>")); 348254721Semaste if (m_format_cache.GetSummary(valobj_type,retval)) 349254721Semaste { 350254721Semaste if (log) 351254721Semaste { 352254721Semaste log->Printf("[FormatManager::GetSummaryFormat] Cache search success. Returning."); 353254721Semaste if (log->GetDebug()) 354254721Semaste log->Printf("[FormatManager::GetSummaryFormat] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 355254721Semaste } 356254721Semaste return retval; 357254721Semaste } 358254721Semaste if (log) 359254721Semaste log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. Going normal route"); 360254721Semaste } 361254721Semaste retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic); 362254721Semaste if (valobj_type) 363254721Semaste { 364254721Semaste if (log) 365254721Semaste log->Printf("[FormatManager::GetSummaryFormat] Caching %p for type %s",retval.get(),valobj_type.AsCString("<invalid>")); 366254721Semaste m_format_cache.SetSummary(valobj_type,retval); 367254721Semaste } 368254721Semaste if (log && log->GetDebug()) 369254721Semaste log->Printf("[FormatManager::GetSummaryFormat] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 370254721Semaste return retval; 371254721Semaste} 372254721Semaste 373254721Semaste#ifndef LLDB_DISABLE_PYTHON 374254721Semastelldb::SyntheticChildrenSP 375254721SemasteFormatManager::GetSyntheticChildren (ValueObject& valobj, 376254721Semaste lldb::DynamicValueType use_dynamic) 377254721Semaste{ 378254721Semaste SyntheticChildrenSP retval; 379254721Semaste Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); 380254721Semaste ConstString valobj_type(GetTypeForCache(valobj, use_dynamic)); 381254721Semaste if (valobj_type) 382254721Semaste { 383254721Semaste if (log) 384254721Semaste log->Printf("\n\n[FormatManager::GetSyntheticChildren] Looking into cache for type %s", valobj_type.AsCString("<invalid>")); 385254721Semaste if (m_format_cache.GetSynthetic(valobj_type,retval)) 386254721Semaste { 387254721Semaste if (log) 388254721Semaste { 389254721Semaste log->Printf("[FormatManager::GetSyntheticChildren] Cache search success. Returning."); 390254721Semaste if (log->GetDebug()) 391254721Semaste log->Printf("[FormatManager::GetSyntheticChildren] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 392254721Semaste } 393254721Semaste return retval; 394254721Semaste } 395254721Semaste if (log) 396254721Semaste log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. Going normal route"); 397254721Semaste } 398254721Semaste retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic); 399254721Semaste if (valobj_type) 400254721Semaste { 401254721Semaste if (log) 402254721Semaste log->Printf("[FormatManager::GetSyntheticChildren] Caching %p for type %s",retval.get(),valobj_type.AsCString("<invalid>")); 403254721Semaste m_format_cache.SetSynthetic(valobj_type,retval); 404254721Semaste } 405254721Semaste if (log && log->GetDebug()) 406254721Semaste log->Printf("[FormatManager::GetSyntheticChildren] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 407254721Semaste return retval; 408254721Semaste} 409254721Semaste#endif 410254721Semaste 411254721SemasteFormatManager::FormatManager() : 412254721Semaste m_format_cache(), 413254721Semaste m_value_nav("format",this), 414254721Semaste m_named_summaries_map(this), 415254721Semaste m_last_revision(0), 416254721Semaste m_categories_map(this), 417254721Semaste m_default_category_name(ConstString("default")), 418254721Semaste m_system_category_name(ConstString("system")), 419254721Semaste m_gnu_cpp_category_name(ConstString("gnu-libstdc++")), 420254721Semaste m_libcxx_category_name(ConstString("libcxx")), 421254721Semaste m_objc_category_name(ConstString("objc")), 422254721Semaste m_corefoundation_category_name(ConstString("CoreFoundation")), 423254721Semaste m_coregraphics_category_name(ConstString("CoreGraphics")), 424254721Semaste m_coreservices_category_name(ConstString("CoreServices")), 425254721Semaste m_vectortypes_category_name(ConstString("VectorTypes")), 426254721Semaste m_appkit_category_name(ConstString("AppKit")) 427254721Semaste{ 428254721Semaste LoadSystemFormatters(); 429254721Semaste LoadLibStdcppFormatters(); 430254721Semaste LoadLibcxxFormatters(); 431254721Semaste LoadObjCFormatters(); 432254721Semaste 433254721Semaste EnableCategory(m_objc_category_name,TypeCategoryMap::Last); 434254721Semaste EnableCategory(m_corefoundation_category_name,TypeCategoryMap::Last); 435254721Semaste EnableCategory(m_appkit_category_name,TypeCategoryMap::Last); 436254721Semaste EnableCategory(m_coreservices_category_name,TypeCategoryMap::Last); 437254721Semaste EnableCategory(m_coregraphics_category_name,TypeCategoryMap::Last); 438254721Semaste EnableCategory(m_gnu_cpp_category_name,TypeCategoryMap::Last); 439254721Semaste EnableCategory(m_libcxx_category_name,TypeCategoryMap::Last); 440254721Semaste EnableCategory(m_vectortypes_category_name,TypeCategoryMap::Last); 441254721Semaste EnableCategory(m_system_category_name,TypeCategoryMap::Last); 442254721Semaste} 443254721Semaste 444254721Semastestatic void 445254721SemasteAddStringSummary(TypeCategoryImpl::SharedPointer category_sp, 446254721Semaste const char* string, 447254721Semaste ConstString type_name, 448254721Semaste TypeSummaryImpl::Flags flags, 449254721Semaste bool regex = false) 450254721Semaste{ 451254721Semaste lldb::TypeSummaryImplSP summary_sp(new StringSummaryFormat(flags, 452254721Semaste string)); 453254721Semaste 454254721Semaste if (regex) 455254721Semaste category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 456254721Semaste else 457254721Semaste category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 458254721Semaste} 459254721Semaste 460254721Semaste#ifndef LLDB_DISABLE_PYTHON 461254721Semastestatic void 462254721SemasteAddScriptSummary(TypeCategoryImpl::SharedPointer category_sp, 463254721Semaste const char* funct_name, 464254721Semaste ConstString type_name, 465254721Semaste TypeSummaryImpl::Flags flags, 466254721Semaste bool regex = false) 467254721Semaste{ 468254721Semaste 469254721Semaste std::string code(" "); 470254721Semaste code.append(funct_name).append("(valobj,internal_dict)"); 471254721Semaste 472254721Semaste lldb::TypeSummaryImplSP summary_sp(new ScriptSummaryFormat(flags, 473254721Semaste funct_name, 474254721Semaste code.c_str())); 475254721Semaste if (regex) 476254721Semaste category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 477254721Semaste else 478254721Semaste category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 479254721Semaste} 480254721Semaste#endif 481254721Semaste 482254721Semaste#ifndef LLDB_DISABLE_PYTHON 483254721Semastestatic void 484254721SemasteAddCXXSummary (TypeCategoryImpl::SharedPointer category_sp, 485254721Semaste CXXFunctionSummaryFormat::Callback funct, 486254721Semaste const char* description, 487254721Semaste ConstString type_name, 488254721Semaste TypeSummaryImpl::Flags flags, 489254721Semaste bool regex = false) 490254721Semaste{ 491254721Semaste lldb::TypeSummaryImplSP summary_sp(new CXXFunctionSummaryFormat(flags,funct,description)); 492254721Semaste if (regex) 493254721Semaste category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 494254721Semaste else 495254721Semaste category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 496254721Semaste} 497254721Semaste#endif 498254721Semaste 499254721Semaste#ifndef LLDB_DISABLE_PYTHON 500254721Semastestatic void AddCXXSynthetic (TypeCategoryImpl::SharedPointer category_sp, 501254721Semaste CXXSyntheticChildren::CreateFrontEndCallback generator, 502254721Semaste const char* description, 503254721Semaste ConstString type_name, 504254721Semaste ScriptedSyntheticChildren::Flags flags, 505254721Semaste bool regex = false) 506254721Semaste{ 507254721Semaste lldb::SyntheticChildrenSP synth_sp(new CXXSyntheticChildren(flags,description,generator)); 508254721Semaste if (regex) 509254721Semaste category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())), synth_sp); 510254721Semaste else 511254721Semaste category_sp->GetSyntheticNavigator()->Add(type_name,synth_sp); 512254721Semaste} 513254721Semaste#endif 514254721Semaste 515254721Semastevoid 516254721SemasteFormatManager::LoadLibStdcppFormatters() 517254721Semaste{ 518254721Semaste TypeSummaryImpl::Flags stl_summary_flags; 519254721Semaste stl_summary_flags.SetCascades(true) 520254721Semaste .SetSkipPointers(false) 521254721Semaste .SetSkipReferences(false) 522254721Semaste .SetDontShowChildren(true) 523254721Semaste .SetDontShowValue(true) 524254721Semaste .SetShowMembersOneLiner(false) 525254721Semaste .SetHideItemNames(false); 526254721Semaste 527254721Semaste lldb::TypeSummaryImplSP std_string_summary_sp(new StringSummaryFormat(stl_summary_flags, 528254721Semaste "${var._M_dataplus._M_p}")); 529254721Semaste 530254721Semaste TypeCategoryImpl::SharedPointer gnu_category_sp = GetCategory(m_gnu_cpp_category_name); 531254721Semaste 532254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::string"), 533254721Semaste std_string_summary_sp); 534254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char>"), 535254721Semaste std_string_summary_sp); 536254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char,std::char_traits<char>,std::allocator<char> >"), 537254721Semaste std_string_summary_sp); 538254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char, std::char_traits<char>, std::allocator<char> >"), 539254721Semaste std_string_summary_sp); 540254721Semaste 541254721Semaste // making sure we force-pick the summary for printing wstring (_M_p is a wchar_t*) 542254721Semaste lldb::TypeSummaryImplSP std_wstring_summary_sp(new StringSummaryFormat(stl_summary_flags, 543254721Semaste "${var._M_dataplus._M_p%S}")); 544254721Semaste 545254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::wstring"), 546254721Semaste std_wstring_summary_sp); 547254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t>"), 548254721Semaste std_wstring_summary_sp); 549254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >"), 550254721Semaste std_wstring_summary_sp); 551254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >"), 552254721Semaste std_wstring_summary_sp); 553254721Semaste 554254721Semaste 555254721Semaste#ifndef LLDB_DISABLE_PYTHON 556254721Semaste 557254721Semaste SyntheticChildren::Flags stl_synth_flags; 558254721Semaste stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); 559254721Semaste 560254721Semaste gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")), 561254721Semaste SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 562254721Semaste "lldb.formatters.cpp.gnu_libstdcpp.StdVectorSynthProvider"))); 563254721Semaste gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")), 564254721Semaste SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 565254721Semaste "lldb.formatters.cpp.gnu_libstdcpp.StdMapSynthProvider"))); 566254721Semaste gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")), 567254721Semaste SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 568254721Semaste "lldb.formatters.cpp.gnu_libstdcpp.StdListSynthProvider"))); 569254721Semaste 570254721Semaste stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(true); 571254721Semaste gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")), 572254721Semaste TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 573254721Semaste "size=${svar%#}"))); 574254721Semaste gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")), 575254721Semaste TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 576254721Semaste "size=${svar%#}"))); 577254721Semaste gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")), 578254721Semaste TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 579254721Semaste "size=${svar%#}"))); 580254721Semaste 581254721Semaste AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibStdcppVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^__gnu_cxx::__normal_iterator<.+>$"), stl_synth_flags, true); 582254721Semaste 583254721Semaste AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::_Rb_tree_iterator<.+>$"), stl_synth_flags, true); 584254721Semaste 585254721Semaste gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"), 586254721Semaste TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 587254721Semaste 588254721Semaste gnu_category_sp->GetSyntheticNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"), 589254721Semaste SyntheticChildrenSP(new CXXSyntheticChildren(stl_synth_flags,"libc++ std::vector<bool> synthetic children",lldb_private::formatters::LibstdcppVectorBoolSyntheticFrontEndCreator))); 590254721Semaste 591254721Semaste#endif 592254721Semaste} 593254721Semaste 594254721Semastevoid 595254721SemasteFormatManager::LoadLibcxxFormatters() 596254721Semaste{ 597254721Semaste TypeSummaryImpl::Flags stl_summary_flags; 598254721Semaste stl_summary_flags.SetCascades(true) 599254721Semaste .SetSkipPointers(false) 600254721Semaste .SetSkipReferences(false) 601254721Semaste .SetDontShowChildren(true) 602254721Semaste .SetDontShowValue(true) 603254721Semaste .SetShowMembersOneLiner(false) 604254721Semaste .SetHideItemNames(false); 605254721Semaste 606254721Semaste#ifndef LLDB_DISABLE_PYTHON 607254721Semaste //std::string code(" lldb.formatters.cpp.libcxx.stdstring_SummaryProvider(valobj,internal_dict)"); 608254721Semaste //lldb::TypeSummaryImplSP std_string_summary_sp(new ScriptSummaryFormat(stl_summary_flags, "lldb.formatters.cpp.libcxx.stdstring_SummaryProvider",code.c_str())); 609254721Semaste 610254721Semaste lldb::TypeSummaryImplSP std_string_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxStringSummaryProvider, "std::string summary provider")); 611254721Semaste lldb::TypeSummaryImplSP std_wstring_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxWStringSummaryProvider, "std::wstring summary provider")); 612254721Semaste 613254721Semaste TypeCategoryImpl::SharedPointer libcxx_category_sp = GetCategory(m_libcxx_category_name); 614254721Semaste 615254721Semaste libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::string"), 616254721Semaste std_string_summary_sp); 617254721Semaste libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >"), 618254721Semaste std_string_summary_sp); 619254721Semaste 620254721Semaste libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::wstring"), 621254721Semaste std_wstring_summary_sp); 622254721Semaste libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >"), 623254721Semaste std_wstring_summary_sp); 624254721Semaste 625254721Semaste SyntheticChildren::Flags stl_synth_flags; 626254721Semaste stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); 627254721Semaste 628254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdVectorSyntheticFrontEndCreator, "libc++ std::vector synthetic children", ConstString("^std::__1::vector<.+>(( )?&)?$"), stl_synth_flags, true); 629254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator, "libc++ std::list synthetic children", ConstString("^std::__1::list<.+>(( )?&)?$"), stl_synth_flags, true); 630254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::map synthetic children", ConstString("^std::__1::map<.+> >(( )?&)?$"), stl_synth_flags, true); 631254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEndCreator, "libc++ std::vector<bool> synthetic children", ConstString("std::__1::vector<std::__1::allocator<bool> >"), stl_synth_flags); 632254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::set synthetic children", ConstString("^std::__1::set<.+> >(( )?&)?$"), stl_synth_flags, true); 633254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::multiset synthetic children", ConstString("^std::__1::multiset<.+> >(( )?&)?$"), stl_synth_flags, true); 634254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::multimap synthetic children", ConstString("^std::__1::multimap<.+> >(( )?&)?$"), stl_synth_flags, true); 635254721Semaste 636254721Semaste libcxx_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^(std::__1::)deque<.+>(( )?&)?$")), 637254721Semaste SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 638254721Semaste "lldb.formatters.cpp.libcxx.stddeque_SynthProvider"))); 639254721Semaste 640254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "shared_ptr synthetic children", ConstString("^(std::__1::)shared_ptr<.+>(( )?&)?$"), stl_synth_flags, true); 641254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "weak_ptr synthetic children", ConstString("^(std::__1::)weak_ptr<.+>(( )?&)?$"), stl_synth_flags, true); 642254721Semaste 643254721Semaste stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(false); 644254721Semaste 645254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::vector summary provider", ConstString("^std::__1::vector<.+>(( )?&)?$"), stl_summary_flags, true); 646254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::list summary provider", ConstString("^std::__1::list<.+>(( )?&)?$"), stl_summary_flags, true); 647254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::map summary provider", ConstString("^std::__1::map<.+>(( )?&)?$"), stl_summary_flags, true); 648254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::deque summary provider", ConstString("^std::__1::deque<.+>(( )?&)?$"), stl_summary_flags, true); 649254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::vector<bool> summary provider", ConstString("std::__1::vector<std::__1::allocator<bool> >"), stl_summary_flags); 650254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::set summary provider", ConstString("^std::__1::set<.+>(( )?&)?$"), stl_summary_flags, true); 651254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::multiset summary provider", ConstString("^std::__1::multiset<.+>(( )?&)?$"), stl_summary_flags, true); 652254721Semaste AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::multimap summary provider", ConstString("^std::__1::multimap<.+>(( )?&)?$"), stl_summary_flags, true); 653254721Semaste 654254721Semaste stl_summary_flags.SetSkipPointers(true); 655254721Semaste AddStringSummary(libcxx_category_sp, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}", ConstString("^std::__1::shared_ptr<.+>(( )?&)?$"), stl_summary_flags, true); 656254721Semaste AddStringSummary(libcxx_category_sp, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}", ConstString("^std::__1::weak_ptr<.+>(( )?&)?$"), stl_summary_flags, true); 657254721Semaste 658254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^std::__1::__wrap_iter<.+>$"), stl_synth_flags, true); 659254721Semaste 660254721Semaste AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::__1::__map_iterator<.+>$"), stl_synth_flags, true); 661254721Semaste 662254721Semaste#endif 663254721Semaste} 664254721Semaste 665254721Semastevoid 666254721SemasteFormatManager::LoadSystemFormatters() 667254721Semaste{ 668254721Semaste 669254721Semaste TypeSummaryImpl::Flags string_flags; 670254721Semaste string_flags.SetCascades(true) 671254721Semaste .SetSkipPointers(true) 672254721Semaste .SetSkipReferences(false) 673254721Semaste .SetDontShowChildren(true) 674254721Semaste .SetDontShowValue(false) 675254721Semaste .SetShowMembersOneLiner(false) 676254721Semaste .SetHideItemNames(false); 677254721Semaste 678254721Semaste lldb::TypeSummaryImplSP string_format(new StringSummaryFormat(string_flags, "${var%s}")); 679254721Semaste 680254721Semaste 681254721Semaste lldb::TypeSummaryImplSP string_array_format(new StringSummaryFormat(TypeSummaryImpl::Flags().SetCascades(false) 682254721Semaste .SetSkipPointers(true) 683254721Semaste .SetSkipReferences(false) 684254721Semaste .SetDontShowChildren(true) 685254721Semaste .SetDontShowValue(true) 686254721Semaste .SetShowMembersOneLiner(false) 687254721Semaste .SetHideItemNames(false), 688254721Semaste "${var%s}")); 689254721Semaste 690254721Semaste lldb::RegularExpressionSP any_size_char_arr(new RegularExpression("char \\[[0-9]+\\]")); 691254721Semaste 692254721Semaste TypeCategoryImpl::SharedPointer sys_category_sp = GetCategory(m_system_category_name); 693254721Semaste 694254721Semaste sys_category_sp->GetSummaryNavigator()->Add(ConstString("char *"), string_format); 695254721Semaste sys_category_sp->GetSummaryNavigator()->Add(ConstString("unsigned char *"), string_format); 696254721Semaste sys_category_sp->GetRegexSummaryNavigator()->Add(any_size_char_arr, string_array_format); 697254721Semaste 698254721Semaste lldb::TypeSummaryImplSP ostype_summary(new StringSummaryFormat(TypeSummaryImpl::Flags().SetCascades(false) 699254721Semaste .SetSkipPointers(true) 700254721Semaste .SetSkipReferences(true) 701254721Semaste .SetDontShowChildren(true) 702254721Semaste .SetDontShowValue(false) 703254721Semaste .SetShowMembersOneLiner(false) 704254721Semaste .SetHideItemNames(false), 705254721Semaste "${var%O}")); 706254721Semaste 707254721Semaste sys_category_sp->GetSummaryNavigator()->Add(ConstString("OSType"), ostype_summary); 708254721Semaste 709254721Semaste#ifndef LLDB_DISABLE_PYTHON 710254721Semaste // FIXME because of a bug in the FormatNavigator we need to add a summary for both X* and const X* (<rdar://problem/12717717>) 711254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "char16_t * summary provider", ConstString("char16_t *"), string_flags); 712254721Semaste 713254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32StringSummaryProvider, "char32_t * summary provider", ConstString("char32_t *"), string_flags); 714254721Semaste 715254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharStringSummaryProvider, "wchar_t * summary provider", ConstString("wchar_t *"), string_flags); 716254721Semaste 717254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "unichar * summary provider", ConstString("unichar *"), string_flags); 718254721Semaste 719254721Semaste TypeSummaryImpl::Flags widechar_flags; 720254721Semaste widechar_flags.SetDontShowValue(true) 721254721Semaste .SetSkipPointers(true) 722254721Semaste .SetSkipReferences(false) 723254721Semaste .SetCascades(true) 724254721Semaste .SetDontShowChildren(true) 725254721Semaste .SetHideItemNames(true) 726254721Semaste .SetShowMembersOneLiner(false); 727254721Semaste 728254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "char16_t summary provider", ConstString("char16_t"), widechar_flags); 729254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32SummaryProvider, "char32_t summary provider", ConstString("char32_t"), widechar_flags); 730254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharSummaryProvider, "wchar_t summary provider", ConstString("wchar_t"), widechar_flags); 731254721Semaste 732254721Semaste AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "unichar summary provider", ConstString("unichar"), widechar_flags); 733254721Semaste 734254721Semaste#endif 735254721Semaste} 736254721Semaste 737254721Semastevoid 738254721SemasteFormatManager::LoadObjCFormatters() 739254721Semaste{ 740254721Semaste TypeSummaryImpl::Flags objc_flags; 741254721Semaste objc_flags.SetCascades(false) 742254721Semaste .SetSkipPointers(true) 743254721Semaste .SetSkipReferences(true) 744254721Semaste .SetDontShowChildren(true) 745254721Semaste .SetDontShowValue(true) 746254721Semaste .SetShowMembersOneLiner(false) 747254721Semaste .SetHideItemNames(false); 748254721Semaste 749254721Semaste TypeCategoryImpl::SharedPointer objc_category_sp = GetCategory(m_objc_category_name); 750254721Semaste 751254721Semaste lldb::TypeSummaryImplSP ObjC_BOOL_summary(new CXXFunctionSummaryFormat(objc_flags, lldb_private::formatters::ObjCBOOLSummaryProvider,"")); 752254721Semaste objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL"), 753254721Semaste ObjC_BOOL_summary); 754254721Semaste objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL &"), 755254721Semaste ObjC_BOOL_summary); 756254721Semaste objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL *"), 757254721Semaste ObjC_BOOL_summary); 758254721Semaste 759254721Semaste#ifndef LLDB_DISABLE_PYTHON 760254721Semaste // we need to skip pointers here since we are special casing a SEL* when retrieving its value 761254721Semaste objc_flags.SetSkipPointers(true); 762254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("SEL"), objc_flags); 763254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("struct objc_selector"), objc_flags); 764254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("objc_selector"), objc_flags); 765254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("objc_selector *"), objc_flags); 766254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("SEL *"), objc_flags); 767254721Semaste 768254721Semaste AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCClassSummaryProvider, "Class summary provider", ConstString("Class"), objc_flags); 769254721Semaste 770254721Semaste SyntheticChildren::Flags class_synth_flags; 771254721Semaste class_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); 772254721Semaste 773254721Semaste AddCXXSynthetic(objc_category_sp, lldb_private::formatters::ObjCClassSyntheticFrontEndCreator, "Class synthetic children", ConstString("Class"), class_synth_flags); 774254721Semaste#endif // LLDB_DISABLE_PYTHON 775254721Semaste 776254721Semaste objc_flags.SetSkipPointers(false); 777254721Semaste objc_flags.SetCascades(true); 778254721Semaste objc_flags.SetSkipReferences(false); 779254721Semaste 780254721Semaste AddStringSummary (objc_category_sp, 781254721Semaste "${var.__FuncPtr%A}", 782254721Semaste ConstString("__block_literal_generic"), 783254721Semaste objc_flags); 784254721Semaste 785254721Semaste TypeCategoryImpl::SharedPointer corefoundation_category_sp = GetCategory(m_corefoundation_category_name); 786254721Semaste 787254721Semaste AddStringSummary(corefoundation_category_sp, 788254721Semaste "${var.years} years, ${var.months} months, ${var.days} days, ${var.hours} hours, ${var.minutes} minutes ${var.seconds} seconds", 789254721Semaste ConstString("CFGregorianUnits"), 790254721Semaste objc_flags); 791254721Semaste AddStringSummary(corefoundation_category_sp, 792254721Semaste "location=${var.location} length=${var.length}", 793254721Semaste ConstString("CFRange"), 794254721Semaste objc_flags); 795254721Semaste AddStringSummary(corefoundation_category_sp, 796254721Semaste "(x=${var.x}, y=${var.y})", 797254721Semaste ConstString("NSPoint"), 798254721Semaste objc_flags); 799254721Semaste AddStringSummary(corefoundation_category_sp, 800254721Semaste "location=${var.location}, length=${var.length}", 801254721Semaste ConstString("NSRange"), 802254721Semaste objc_flags); 803254721Semaste AddStringSummary(corefoundation_category_sp, 804254721Semaste "${var.origin}, ${var.size}", 805254721Semaste ConstString("NSRect"), 806254721Semaste objc_flags); 807254721Semaste AddStringSummary(corefoundation_category_sp, 808254721Semaste "(${var.origin}, ${var.size}), ...", 809254721Semaste ConstString("NSRectArray"), 810254721Semaste objc_flags); 811254721Semaste AddStringSummary(objc_category_sp, 812254721Semaste "(width=${var.width}, height=${var.height})", 813254721Semaste ConstString("NSSize"), 814254721Semaste objc_flags); 815254721Semaste 816254721Semaste TypeCategoryImpl::SharedPointer coregraphics_category_sp = GetCategory(m_coregraphics_category_name); 817254721Semaste 818254721Semaste AddStringSummary(coregraphics_category_sp, 819254721Semaste "(width=${var.width}, height=${var.height})", 820254721Semaste ConstString("CGSize"), 821254721Semaste objc_flags); 822254721Semaste AddStringSummary(coregraphics_category_sp, 823254721Semaste "(x=${var.x}, y=${var.y})", 824254721Semaste ConstString("CGPoint"), 825254721Semaste objc_flags); 826254721Semaste AddStringSummary(coregraphics_category_sp, 827254721Semaste "origin=${var.origin} size=${var.size}", 828254721Semaste ConstString("CGRect"), 829254721Semaste objc_flags); 830254721Semaste 831254721Semaste TypeCategoryImpl::SharedPointer coreservices_category_sp = GetCategory(m_coreservices_category_name); 832254721Semaste 833254721Semaste AddStringSummary(coreservices_category_sp, 834254721Semaste "red=${var.red} green=${var.green} blue=${var.blue}", 835254721Semaste ConstString("RGBColor"), 836254721Semaste objc_flags); 837254721Semaste AddStringSummary(coreservices_category_sp, 838254721Semaste "(t=${var.top}, l=${var.left}, b=${var.bottom}, r=${var.right})", 839254721Semaste ConstString("Rect"), 840254721Semaste objc_flags); 841254721Semaste AddStringSummary(coreservices_category_sp, 842254721Semaste "(v=${var.v}, h=${var.h})", 843254721Semaste ConstString("Point"), 844254721Semaste objc_flags); 845254721Semaste AddStringSummary(coreservices_category_sp, 846254721Semaste "${var.month}/${var.day}/${var.year} ${var.hour} :${var.minute} :${var.second} dayOfWeek:${var.dayOfWeek}", 847254721Semaste ConstString("DateTimeRect *"), 848254721Semaste objc_flags); 849254721Semaste AddStringSummary(coreservices_category_sp, 850254721Semaste "${var.ld.month}/${var.ld.day}/${var.ld.year} ${var.ld.hour} :${var.ld.minute} :${var.ld.second} dayOfWeek:${var.ld.dayOfWeek}", 851254721Semaste ConstString("LongDateRect"), 852254721Semaste objc_flags); 853254721Semaste AddStringSummary(coreservices_category_sp, 854254721Semaste "(x=${var.x}, y=${var.y})", 855254721Semaste ConstString("HIPoint"), 856254721Semaste objc_flags); 857254721Semaste AddStringSummary(coreservices_category_sp, 858254721Semaste "origin=${var.origin} size=${var.size}", 859254721Semaste ConstString("HIRect"), 860254721Semaste objc_flags); 861254721Semaste 862254721Semaste TypeCategoryImpl::SharedPointer appkit_category_sp = GetCategory(m_appkit_category_name); 863254721Semaste 864254721Semaste TypeSummaryImpl::Flags appkit_flags; 865254721Semaste appkit_flags.SetCascades(true) 866254721Semaste .SetSkipPointers(false) 867254721Semaste .SetSkipReferences(false) 868254721Semaste .SetDontShowChildren(true) 869254721Semaste .SetDontShowValue(false) 870254721Semaste .SetShowMembersOneLiner(false) 871254721Semaste .SetHideItemNames(false); 872254721Semaste 873254721Semaste appkit_flags.SetDontShowChildren(false); 874254721Semaste 875254721Semaste 876254721Semaste#ifndef LLDB_DISABLE_PYTHON 877254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSArray"), appkit_flags); 878254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSMutableArray"), appkit_flags); 879254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayI"), appkit_flags); 880254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayM"), appkit_flags); 881254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSCFArray"), appkit_flags); 882254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFArrayRef"), appkit_flags); 883254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFMutableArrayRef"), appkit_flags); 884254721Semaste 885254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSDictionary"), appkit_flags); 886254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSMutableDictionary"), appkit_flags); 887254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSCFDictionary"), appkit_flags); 888254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryI"), appkit_flags); 889254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryM"), appkit_flags); 890254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFDictionaryRef"), appkit_flags); 891254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFMutableDictionaryRef"), appkit_flags); 892254721Semaste 893254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSSet summary", ConstString("NSSet"), appkit_flags); 894254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSMutableSet summary", ConstString("NSMutableSet"), appkit_flags); 895254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFSetRef summary", ConstString("CFSetRef"), appkit_flags); 896254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFMutableSetRef summary", ConstString("CFMutableSetRef"), appkit_flags); 897254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSCFSet summary", ConstString("__NSCFSet"), appkit_flags); 898254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetI summary", ConstString("__NSSetI"), appkit_flags); 899254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetM summary", ConstString("__NSSetM"), appkit_flags); 900254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSCountedSet summary", ConstString("NSCountedSet"), appkit_flags); 901254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSMutableSet summary", ConstString("NSMutableSet"), appkit_flags); 902254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSOrderedSet summary", ConstString("NSOrderedSet"), appkit_flags); 903254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSOrderedSetI summary", ConstString("__NSOrderedSetI"), appkit_flags); 904254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSOrderedSetM summary", ConstString("__NSOrderedSetM"), appkit_flags); 905254721Semaste 906254721Semaste // AddSummary(appkit_category_sp, "${var.key%@} -> ${var.value%@}", ConstString("$_lldb_typegen_nspair"), appkit_flags); 907254721Semaste 908254721Semaste appkit_flags.SetDontShowChildren(true); 909254721Semaste 910254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayM"), ScriptedSyntheticChildren::Flags()); 911254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayI"), ScriptedSyntheticChildren::Flags()); 912254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSArray"), ScriptedSyntheticChildren::Flags()); 913254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSMutableArray"), ScriptedSyntheticChildren::Flags()); 914254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSCFArray"), ScriptedSyntheticChildren::Flags()); 915254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFMutableArrayRef"), ScriptedSyntheticChildren::Flags()); 916254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFArrayRef"), ScriptedSyntheticChildren::Flags()); 917254721Semaste 918254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryM"), ScriptedSyntheticChildren::Flags()); 919254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryI"), ScriptedSyntheticChildren::Flags()); 920254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSDictionary"), ScriptedSyntheticChildren::Flags()); 921254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSMutableDictionary"), ScriptedSyntheticChildren::Flags()); 922254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFDictionaryRef"), ScriptedSyntheticChildren::Flags()); 923254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFMutableDictionaryRef"), ScriptedSyntheticChildren::Flags()); 924254721Semaste 925254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("NSSet"), ScriptedSyntheticChildren::Flags()); 926254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSSetI synthetic children", ConstString("__NSSetI"), ScriptedSyntheticChildren::Flags()); 927254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSSetM synthetic children", ConstString("__NSSetM"), ScriptedSyntheticChildren::Flags()); 928254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSMutableSet synthetic children", ConstString("NSMutableSet"), ScriptedSyntheticChildren::Flags()); 929254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSOrderedSet synthetic children", ConstString("NSOrderedSet"), ScriptedSyntheticChildren::Flags()); 930254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSOrderedSetI synthetic children", ConstString("__NSOrderedSetI"), ScriptedSyntheticChildren::Flags()); 931254721Semaste AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSOrderedSetM synthetic children", ConstString("__NSOrderedSetM"), ScriptedSyntheticChildren::Flags()); 932254721Semaste 933254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFBagRef"), appkit_flags); 934254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("__CFBag"), appkit_flags); 935254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("const struct __CFBag"), appkit_flags); 936254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFMutableBagRef"), appkit_flags); 937254721Semaste 938254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("CFBinaryHeapRef"), appkit_flags); 939254721Semaste AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("__CFBinaryHeap"), appkit_flags); 940254721Semaste 941254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSString"), appkit_flags); 942254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFStringRef"), appkit_flags); 943254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFMutableStringRef"), appkit_flags); 944254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSMutableString"), appkit_flags); 945254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFConstantString"), appkit_flags); 946254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFString"), appkit_flags); 947254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFConstantString"), appkit_flags); 948254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFString"), appkit_flags); 949254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSPathStore2"), appkit_flags); 950254721Semaste 951254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSAttributedStringSummaryProvider, "NSAttributedString summary provider", ConstString("NSAttributedString"), appkit_flags); 952254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSMutableAttributedString"), appkit_flags); 953254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSConcreteMutableAttributedString"), appkit_flags); 954254721Semaste 955254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSBundleSummaryProvider, "NSBundle summary provider", ConstString("NSBundle"), appkit_flags); 956254721Semaste 957254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSData"), appkit_flags); 958254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteData"), appkit_flags); 959254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteMutableData"), appkit_flags); 960254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("__NSCFData"), appkit_flags); 961254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFDataRef"), appkit_flags); 962254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFMutableDataRef"), appkit_flags); 963254721Semaste 964254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMachPortSummaryProvider, "NSMachPort summary provider", ConstString("NSMachPort"), appkit_flags); 965254721Semaste 966254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSNotification"), appkit_flags); 967254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSConcreteNotification"), appkit_flags); 968254721Semaste 969254721Semaste AddStringSummary(appkit_category_sp, "domain: ${var._domain} - code: ${var._code}", ConstString("NSError"), appkit_flags); 970254721Semaste AddStringSummary(appkit_category_sp,"name:${var.name%S} reason:${var.reason%S}",ConstString("NSException"),appkit_flags); 971254721Semaste 972254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSNumber"), appkit_flags); 973254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFBoolean"), appkit_flags); 974254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFNumber"), appkit_flags); 975254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFBoolean"), appkit_flags); 976254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFNumber"), appkit_flags); 977254721Semaste 978254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSDecimalNumber summary provider", ConstString("NSDecimalNumber"), appkit_flags); 979254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSHost summary provider", ConstString("NSHost"), appkit_flags); 980254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSTask summary provider", ConstString("NSTask"), appkit_flags); 981254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSValue summary provider", ConstString("NSValue"), appkit_flags); 982254721Semaste 983254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("NSURL"), appkit_flags); 984254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("CFURLRef"), appkit_flags); 985254721Semaste 986254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSDate"), appkit_flags); 987254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSDate"), appkit_flags); 988254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSTaggedDate"), appkit_flags); 989254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSCalendarDate"), appkit_flags); 990254721Semaste 991254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("NSTimeZone"), appkit_flags); 992254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("CFTimeZoneRef"), appkit_flags); 993254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("__NSTimeZone"), appkit_flags); 994254721Semaste 995254721Semaste // CFAbsoluteTime is actually a double rather than a pointer to an object 996254721Semaste // we do not care about the numeric value, since it is probably meaningless to users 997254721Semaste appkit_flags.SetDontShowValue(true); 998254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFAbsoluteTimeSummaryProvider, "CFAbsoluteTime summary provider", ConstString("CFAbsoluteTime"), appkit_flags); 999254721Semaste appkit_flags.SetDontShowValue(false); 1000254721Semaste 1001254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSIndexSet"), appkit_flags); 1002254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSMutableIndexSet"), appkit_flags); 1003254721Semaste 1004254721Semaste AddStringSummary(appkit_category_sp, 1005254721Semaste "@\"${var.month%d}/${var.day%d}/${var.year%d} ${var.hour%d}:${var.minute%d}:${var.second}\"", 1006254721Semaste ConstString("CFGregorianDate"), 1007254721Semaste appkit_flags); 1008254721Semaste 1009254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFBitVectorRef"), appkit_flags); 1010254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFMutableBitVectorRef"), appkit_flags); 1011254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFBitVector"), appkit_flags); 1012254721Semaste AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFMutableBitVector"), appkit_flags); 1013254721Semaste#endif // LLDB_DISABLE_PYTHON 1014254721Semaste 1015254721Semaste TypeCategoryImpl::SharedPointer vectors_category_sp = GetCategory(m_vectortypes_category_name); 1016254721Semaste 1017254721Semaste TypeSummaryImpl::Flags vector_flags; 1018254721Semaste vector_flags.SetCascades(true) 1019254721Semaste .SetSkipPointers(true) 1020254721Semaste .SetSkipReferences(false) 1021254721Semaste .SetDontShowChildren(true) 1022254721Semaste .SetDontShowValue(false) 1023254721Semaste .SetShowMembersOneLiner(true) 1024254721Semaste .SetHideItemNames(true); 1025254721Semaste 1026254721Semaste AddStringSummary(vectors_category_sp, 1027254721Semaste "${var.uint128}", 1028254721Semaste ConstString("builtin_type_vec128"), 1029254721Semaste objc_flags); 1030254721Semaste 1031254721Semaste AddStringSummary(vectors_category_sp, 1032254721Semaste "", 1033254721Semaste ConstString("float [4]"), 1034254721Semaste vector_flags); 1035254721Semaste AddStringSummary(vectors_category_sp, 1036254721Semaste "", 1037254721Semaste ConstString("int32_t [4]"), 1038254721Semaste vector_flags); 1039254721Semaste AddStringSummary(vectors_category_sp, 1040254721Semaste "", 1041254721Semaste ConstString("int16_t [8]"), 1042254721Semaste vector_flags); 1043254721Semaste AddStringSummary(vectors_category_sp, 1044254721Semaste "", 1045254721Semaste ConstString("vDouble"), 1046254721Semaste vector_flags); 1047254721Semaste AddStringSummary(vectors_category_sp, 1048254721Semaste "", 1049254721Semaste ConstString("vFloat"), 1050254721Semaste vector_flags); 1051254721Semaste AddStringSummary(vectors_category_sp, 1052254721Semaste "", 1053254721Semaste ConstString("vSInt8"), 1054254721Semaste vector_flags); 1055254721Semaste AddStringSummary(vectors_category_sp, 1056254721Semaste "", 1057254721Semaste ConstString("vSInt16"), 1058254721Semaste vector_flags); 1059254721Semaste AddStringSummary(vectors_category_sp, 1060254721Semaste "", 1061254721Semaste ConstString("vSInt32"), 1062254721Semaste vector_flags); 1063254721Semaste AddStringSummary(vectors_category_sp, 1064254721Semaste "", 1065254721Semaste ConstString("vUInt16"), 1066254721Semaste vector_flags); 1067254721Semaste AddStringSummary(vectors_category_sp, 1068254721Semaste "", 1069254721Semaste ConstString("vUInt8"), 1070254721Semaste vector_flags); 1071254721Semaste AddStringSummary(vectors_category_sp, 1072254721Semaste "", 1073254721Semaste ConstString("vUInt16"), 1074254721Semaste vector_flags); 1075254721Semaste AddStringSummary(vectors_category_sp, 1076254721Semaste "", 1077254721Semaste ConstString("vUInt32"), 1078254721Semaste vector_flags); 1079254721Semaste AddStringSummary(vectors_category_sp, 1080254721Semaste "", 1081254721Semaste ConstString("vBool32"), 1082254721Semaste vector_flags); 1083254721Semaste} 1084