FormatManager.cpp revision 98b449f489fb521f2e03287bd5515b3502481089
15c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton//===-- FormatManager.cpp -------------------------------------------*- C++ -*-===// 25c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// 35c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// The LLVM Compiler Infrastructure 45c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// 55c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// This file is distributed under the University of Illinois Open Source 65c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// License. See LICENSE.TXT for details. 75c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// 85c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton//===----------------------------------------------------------------------===// 95c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton 10d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea#include "lldb/lldb-python.h" 11d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea 12f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/DataFormatters/FormatManager.h" 135c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton 145c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// C Includes 155c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// C++ Includes 165c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// Other libraries and framework includes 175c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton// Project includes 185c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton 19f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata#include "lldb/Core/Debugger.h" 20f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/DataFormatters/CXXFormatterFunctions.h" 21f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/Interpreter/ScriptInterpreterPython.h" 22f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/Target/ExecutionContext.h" 23f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/Target/Platform.h" 24f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata 255c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Claytonusing namespace lldb; 265c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Claytonusing namespace lldb_private; 275c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton 283182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 293182effd150f2e0381d7c6867236737ac69ad846Greg Claytonstruct FormatInfo 303182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 313182effd150f2e0381d7c6867236737ac69ad846Greg Clayton Format format; 323182effd150f2e0381d7c6867236737ac69ad846Greg Clayton const char format_char; // One or more format characters that can be used for this format. 333182effd150f2e0381d7c6867236737ac69ad846Greg Clayton const char *format_name; // Long format name that can be used to specify the current format 343182effd150f2e0381d7c6867236737ac69ad846Greg Clayton}; 353182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 363182effd150f2e0381d7c6867236737ac69ad846Greg Claytonstatic FormatInfo 373182effd150f2e0381d7c6867236737ac69ad846Greg Claytong_format_infos[] = 383182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 393182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatDefault , '\0' , "default" }, 403182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatBoolean , 'B' , "boolean" }, 413182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatBinary , 'b' , "binary" }, 423182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatBytes , 'y' , "bytes" }, 433182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatBytesWithASCII , 'Y' , "bytes with ASCII" }, 443182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatChar , 'c' , "character" }, 453182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatCharPrintable , 'C' , "printable character" }, 463182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatComplexFloat , 'F' , "complex float" }, 473182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatCString , 's' , "c-string" }, 4824a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton { eFormatDecimal , 'd' , "decimal" }, 493182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatEnum , 'E' , "enumeration" }, 503182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatHex , 'x' , "hex" }, 51535543d6104ee45b4503db6bb6c175e66d0e093bEnrico Granata { eFormatHexUppercase , 'X' , "uppercase hex" }, 523182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatFloat , 'f' , "float" }, 533182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatOctal , 'o' , "octal" }, 543182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatOSType , 'O' , "OSType" }, 553182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatUnicode16 , 'U' , "unicode16" }, 563182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatUnicode32 , '\0' , "unicode32" }, 573182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatUnsigned , 'u' , "unsigned decimal" }, 583182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatPointer , 'p' , "pointer" }, 593182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfChar , '\0' , "char[]" }, 603182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfSInt8 , '\0' , "int8_t[]" }, 613182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfUInt8 , '\0' , "uint8_t[]" }, 623182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfSInt16 , '\0' , "int16_t[]" }, 633182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfUInt16 , '\0' , "uint16_t[]" }, 6454890a32efd3a6ffd2bfe38f7398c0a63b5913d5Enrico Granata { eFormatVectorOfSInt32 , '\0' , "int32_t[]" }, 6554890a32efd3a6ffd2bfe38f7398c0a63b5913d5Enrico Granata { eFormatVectorOfUInt32 , '\0' , "uint32_t[]" }, 6654890a32efd3a6ffd2bfe38f7398c0a63b5913d5Enrico Granata { eFormatVectorOfSInt64 , '\0' , "int64_t[]" }, 6754890a32efd3a6ffd2bfe38f7398c0a63b5913d5Enrico Granata { eFormatVectorOfUInt64 , '\0' , "uint64_t[]" }, 683182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfFloat32, '\0' , "float32[]" }, 693182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfFloat64, '\0' , "float64[]" }, 703182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatVectorOfUInt128, '\0' , "uint128_t[]" }, 713182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { eFormatComplexInteger , 'I' , "complex integer" }, 7224a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton { eFormatCharArray , 'a' , "character array" }, 7324a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton { eFormatAddressInfo , 'A' , "address" }, 74535543d6104ee45b4503db6bb6c175e66d0e093bEnrico Granata { eFormatHexFloat , '\0' , "hex float" }, 7596abc62dcb25159dbb532e477ba2cf6d85b81700Sean Callanan { eFormatInstruction , 'i' , "instruction" }, 7696abc62dcb25159dbb532e477ba2cf6d85b81700Sean Callanan { eFormatVoid , 'v' , "void" } 773182effd150f2e0381d7c6867236737ac69ad846Greg Clayton}; 783182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 793182effd150f2e0381d7c6867236737ac69ad846Greg Claytonstatic uint32_t 803182effd150f2e0381d7c6867236737ac69ad846Greg Claytong_num_format_infos = sizeof(g_format_infos)/sizeof(FormatInfo); 813182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 823182effd150f2e0381d7c6867236737ac69ad846Greg Claytonstatic bool 833182effd150f2e0381d7c6867236737ac69ad846Greg ClaytonGetFormatFromFormatChar (char format_char, Format &format) 843182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 853182effd150f2e0381d7c6867236737ac69ad846Greg Clayton for (uint32_t i=0; i<g_num_format_infos; ++i) 863182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 873182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (g_format_infos[i].format_char == format_char) 883182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 893182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = g_format_infos[i].format; 903182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return true; 913182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 923182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 933182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = eFormatInvalid; 943182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return false; 953182effd150f2e0381d7c6867236737ac69ad846Greg Clayton} 963182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 973182effd150f2e0381d7c6867236737ac69ad846Greg Claytonstatic bool 983182effd150f2e0381d7c6867236737ac69ad846Greg ClaytonGetFormatFromFormatName (const char *format_name, bool partial_match_ok, Format &format) 993182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 1003182effd150f2e0381d7c6867236737ac69ad846Greg Clayton uint32_t i; 1013182effd150f2e0381d7c6867236737ac69ad846Greg Clayton for (i=0; i<g_num_format_infos; ++i) 1023182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1033182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (strcasecmp (g_format_infos[i].format_name, format_name) == 0) 1043182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1053182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = g_format_infos[i].format; 1063182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return true; 1073182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1083182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1093182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 1103182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (partial_match_ok) 1113182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1123182effd150f2e0381d7c6867236737ac69ad846Greg Clayton for (i=0; i<g_num_format_infos; ++i) 1133182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1143182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (strcasestr (g_format_infos[i].format_name, format_name) == g_format_infos[i].format_name) 1153182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1163182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = g_format_infos[i].format; 1173182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return true; 1183182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1193182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1203182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1213182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = eFormatInvalid; 1223182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return false; 1233182effd150f2e0381d7c6867236737ac69ad846Greg Clayton} 1243182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 1253182effd150f2e0381d7c6867236737ac69ad846Greg Claytonbool 1263182effd150f2e0381d7c6867236737ac69ad846Greg ClaytonFormatManager::GetFormatFromCString (const char *format_cstr, 1273182effd150f2e0381d7c6867236737ac69ad846Greg Clayton bool partial_match_ok, 1283182effd150f2e0381d7c6867236737ac69ad846Greg Clayton lldb::Format &format) 1293182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 1303182effd150f2e0381d7c6867236737ac69ad846Greg Clayton bool success = false; 1313182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (format_cstr && format_cstr[0]) 1323182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1333182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (format_cstr[1] == '\0') 1343182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1353182effd150f2e0381d7c6867236737ac69ad846Greg Clayton success = GetFormatFromFormatChar (format_cstr[0], format); 1363182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (success) 1373182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return true; 1383182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1393182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 1403182effd150f2e0381d7c6867236737ac69ad846Greg Clayton success = GetFormatFromFormatName (format_cstr, partial_match_ok, format); 1413182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1423182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (!success) 1433182effd150f2e0381d7c6867236737ac69ad846Greg Clayton format = eFormatInvalid; 1443182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return success; 1453182effd150f2e0381d7c6867236737ac69ad846Greg Clayton} 1463182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 1473182effd150f2e0381d7c6867236737ac69ad846Greg Claytonchar 1483182effd150f2e0381d7c6867236737ac69ad846Greg ClaytonFormatManager::GetFormatAsFormatChar (lldb::Format format) 1493182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 1503182effd150f2e0381d7c6867236737ac69ad846Greg Clayton for (uint32_t i=0; i<g_num_format_infos; ++i) 1513182effd150f2e0381d7c6867236737ac69ad846Greg Clayton { 1523182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (g_format_infos[i].format == format) 1533182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return g_format_infos[i].format_char; 1543182effd150f2e0381d7c6867236737ac69ad846Greg Clayton } 1553182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return '\0'; 1563182effd150f2e0381d7c6867236737ac69ad846Greg Clayton} 1573182effd150f2e0381d7c6867236737ac69ad846Greg Clayton 1583182effd150f2e0381d7c6867236737ac69ad846Greg Claytonconst char * 1593182effd150f2e0381d7c6867236737ac69ad846Greg ClaytonFormatManager::GetFormatAsCString (Format format) 1603182effd150f2e0381d7c6867236737ac69ad846Greg Clayton{ 1613182effd150f2e0381d7c6867236737ac69ad846Greg Clayton if (format >= eFormatDefault && format < kNumFormats) 1623182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return g_format_infos[format].format_name; 1633182effd150f2e0381d7c6867236737ac69ad846Greg Clayton return NULL; 1643182effd150f2e0381d7c6867236737ac69ad846Greg Clayton} 165886bc3e5cb48e9660692609a7be69ec15b898bd7Enrico Granata 16607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granatalldb::TypeSummaryImplSP 16707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico GranataFormatManager::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 16807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata{ 16907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (!type_sp) 17007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return lldb::TypeSummaryImplSP(); 17107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeSummaryImplSP summary_chosen_sp; 17207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t num_categories = m_categories_map.GetCount(); 17307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeCategoryImplSP category_sp; 17407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t prio_category = UINT32_MAX; 17507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata for (uint32_t category_id = 0; 17607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id < num_categories; 17707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id++) 17807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 17907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_sp = GetCategoryAtIndex(category_id); 18007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (category_sp->IsEnabled() == false) 18107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata continue; 18207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeSummaryImplSP summary_current_sp = category_sp->GetSummaryForType(type_sp); 18307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (summary_current_sp && (summary_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 18407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 18507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata prio_category = category_sp->GetEnabledPosition(); 18607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata summary_chosen_sp = summary_current_sp; 18707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 18807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 18907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return summary_chosen_sp; 19007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata} 19107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata 19207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granatalldb::TypeFilterImplSP 19307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico GranataFormatManager::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 19407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata{ 19507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (!type_sp) 19607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return lldb::TypeFilterImplSP(); 19707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeFilterImplSP filter_chosen_sp; 19807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t num_categories = m_categories_map.GetCount(); 19907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeCategoryImplSP category_sp; 20007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t prio_category = UINT32_MAX; 20107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata for (uint32_t category_id = 0; 20207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id < num_categories; 20307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id++) 20407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 20507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_sp = GetCategoryAtIndex(category_id); 20607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (category_sp->IsEnabled() == false) 20707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata continue; 20807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeFilterImplSP filter_current_sp((TypeFilterImpl*)category_sp->GetFilterForType(type_sp).get()); 20907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (filter_current_sp && (filter_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 21007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 21107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata prio_category = category_sp->GetEnabledPosition(); 21207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata filter_chosen_sp = filter_current_sp; 21307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 21407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 21507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return filter_chosen_sp; 21607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata} 21707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata 21845c47aabcb6b1b3861fd15e8cbe2fc7d7d44a71fJason Molenda#ifndef LLDB_DISABLE_PYTHON 219f509c5ec066599a3399fced39ea36996184939e8Enrico Granatalldb::ScriptedSyntheticChildrenSP 22007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico GranataFormatManager::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 22107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata{ 22207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (!type_sp) 223f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return lldb::ScriptedSyntheticChildrenSP(); 224f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::ScriptedSyntheticChildrenSP synth_chosen_sp; 22507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t num_categories = m_categories_map.GetCount(); 22607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeCategoryImplSP category_sp; 22707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata uint32_t prio_category = UINT32_MAX; 22807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata for (uint32_t category_id = 0; 22907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id < num_categories; 23007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_id++) 23107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 23207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata category_sp = GetCategoryAtIndex(category_id); 23307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (category_sp->IsEnabled() == false) 23407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata continue; 235f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::ScriptedSyntheticChildrenSP synth_current_sp((ScriptedSyntheticChildren*)category_sp->GetSyntheticForType(type_sp).get()); 23607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (synth_current_sp && (synth_chosen_sp.get() == NULL || (prio_category > category_sp->GetEnabledPosition()))) 23707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata { 23807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata prio_category = category_sp->GetEnabledPosition(); 23907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata synth_chosen_sp = synth_current_sp; 24007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 24107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata } 24207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return synth_chosen_sp; 24307baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata} 24445c47aabcb6b1b3861fd15e8cbe2fc7d7d44a71fJason Molenda#endif 24507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata 24645c47aabcb6b1b3861fd15e8cbe2fc7d7d44a71fJason Molenda#ifndef LLDB_DISABLE_PYTHON 24707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granatalldb::SyntheticChildrenSP 24807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico GranataFormatManager::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 24907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata{ 25007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (!type_sp) 25107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return lldb::SyntheticChildrenSP(); 25207baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata lldb::TypeFilterImplSP filter_sp = GetFilterForType(type_sp); 253f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::ScriptedSyntheticChildrenSP synth_sp = GetSyntheticForType(type_sp); 25407baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata if (filter_sp->GetRevision() > synth_sp->GetRevision()) 25507baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return lldb::SyntheticChildrenSP(filter_sp.get()); 25607baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata else 25707baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata return lldb::SyntheticChildrenSP(synth_sp.get()); 25807baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata} 25945c47aabcb6b1b3861fd15e8cbe2fc7d7d44a71fJason Molenda#endif 26007baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata 26116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granatalldb::TypeCategoryImplSP 262915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataFormatManager::GetCategory (const ConstString& category_name, 2632c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata bool can_create) 2642c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata{ 2652c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata if (!category_name) 266915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return GetCategory(m_default_category_name); 26716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata lldb::TypeCategoryImplSP category; 2682c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata if (m_categories_map.Get(category_name, category)) 2692c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata return category; 2702c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata 2712c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata if (!can_create) 27216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata return lldb::TypeCategoryImplSP(); 2732c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata 27416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata m_categories_map.Add(category_name,lldb::TypeCategoryImplSP(new TypeCategoryImpl(this, category_name))); 275915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return GetCategory(category_name); 2762c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata} 2772c6a3d80dab3cf50c26fefe037357a4e6e621258Enrico Granata 27886e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granatalldb::Format 27986e7c3ecb82655e77581ec042aa6b31753a42afcEnrico GranataFormatManager::GetSingleItemFormat(lldb::Format vector_format) 28086e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata{ 28186e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata switch(vector_format) 28286e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata { 28386e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfChar: 28486e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata return eFormatCharArray; 28586e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata 28686e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfSInt8: 28786e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfSInt16: 28886e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfSInt32: 28986e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfSInt64: 29086e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata return eFormatDecimal; 29186e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata 29286e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfUInt8: 29386e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfUInt16: 29486e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfUInt32: 29586e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfUInt64: 29686e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfUInt128: 29786e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata return eFormatHex; 29886e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata 29986e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfFloat32: 30086e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata case eFormatVectorOfFloat64: 30186e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata return eFormatFloat; 30286e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata 30386e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata default: 30486e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata return lldb::eFormatInvalid; 30586e7c3ecb82655e77581ec042aa6b31753a42afcEnrico Granata } 306153ccd72f52a6cc3595d7614558e2954f67833ebGreg Clayton} 307f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata 308d3a86a2bad17204570577dbafc51f3b107310de8Enrico GranataConstString 309d3a86a2bad17204570577dbafc51f3b107310de8Enrico GranataFormatManager::GetValidTypeName (const ConstString& type) 310d3a86a2bad17204570577dbafc51f3b107310de8Enrico Granata{ 311d3a86a2bad17204570577dbafc51f3b107310de8Enrico Granata return ::GetValidTypeName_Impl(type); 312d3a86a2bad17204570577dbafc51f3b107310de8Enrico Granata} 313d3a86a2bad17204570577dbafc51f3b107310de8Enrico Granata 314f509c5ec066599a3399fced39ea36996184939e8Enrico GranataConstString 315f509c5ec066599a3399fced39ea36996184939e8Enrico GranataGetTypeForCache (ValueObject& valobj, 316f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::DynamicValueType use_dynamic) 317f509c5ec066599a3399fced39ea36996184939e8Enrico Granata{ 318f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (use_dynamic == lldb::eNoDynamicValues) 319f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 320f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj.IsDynamic()) 321f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 322f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj.GetStaticValue()) 323f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return valobj.GetStaticValue()->GetQualifiedTypeName(); 324f509c5ec066599a3399fced39ea36996184939e8Enrico Granata else 325f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return ConstString(); 326f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 327f509c5ec066599a3399fced39ea36996184939e8Enrico Granata else 328f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return valobj.GetQualifiedTypeName(); 329f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 330f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj.IsDynamic()) 331f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return valobj.GetQualifiedTypeName(); 332f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj.GetDynamicValue(use_dynamic)) 333f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return valobj.GetDynamicValue(use_dynamic)->GetQualifiedTypeName(); 334f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return ConstString(); 335f509c5ec066599a3399fced39ea36996184939e8Enrico Granata} 336f509c5ec066599a3399fced39ea36996184939e8Enrico Granata 337f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#define USE_CACHE 1 338f509c5ec066599a3399fced39ea36996184939e8Enrico Granatalldb::TypeSummaryImplSP 339f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::GetSummaryFormat (ValueObject& valobj, 340f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::DynamicValueType use_dynamic) 341f509c5ec066599a3399fced39ea36996184939e8Enrico Granata{ 342f509c5ec066599a3399fced39ea36996184939e8Enrico Granata TypeSummaryImplSP retval; 343f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#if USE_CACHE 344952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); 345f509c5ec066599a3399fced39ea36996184939e8Enrico Granata ConstString valobj_type(GetTypeForCache(valobj, use_dynamic)); 346f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj_type) 347f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 348f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 349f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSummaryFormat] Looking into cache for type %s", valobj_type.AsCString("<invalid>")); 350f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (m_format_cache.GetSummary(valobj_type,retval)) 351f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return retval; 352f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 353f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. Going normal route"); 354f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 355f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 356f509c5ec066599a3399fced39ea36996184939e8Enrico Granata retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic); 357f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#if USE_CACHE 358f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj_type) 359f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 360f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 361f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSummaryFormat] Caching %p for type %s",retval.get(),valobj_type.AsCString("<invalid>")); 362f509c5ec066599a3399fced39ea36996184939e8Enrico Granata m_format_cache.SetSummary(valobj_type,retval); 363f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 364f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#ifdef LLDB_CONFIGURATION_DEBUG 365f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 366f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSummaryFormat] Cache hits: %llu - Cache Misses: %llu", m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 367f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 368f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 369f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return retval; 370f509c5ec066599a3399fced39ea36996184939e8Enrico Granata} 371f509c5ec066599a3399fced39ea36996184939e8Enrico Granata 372f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#ifndef LLDB_DISABLE_PYTHON 373f509c5ec066599a3399fced39ea36996184939e8Enrico Granatalldb::SyntheticChildrenSP 374f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::GetSyntheticChildren (ValueObject& valobj, 375f509c5ec066599a3399fced39ea36996184939e8Enrico Granata lldb::DynamicValueType use_dynamic) 376f509c5ec066599a3399fced39ea36996184939e8Enrico Granata{ 377f509c5ec066599a3399fced39ea36996184939e8Enrico Granata SyntheticChildrenSP retval; 378f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#if USE_CACHE 379952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); 380f509c5ec066599a3399fced39ea36996184939e8Enrico Granata ConstString valobj_type(GetTypeForCache(valobj, use_dynamic)); 381f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj_type) 382f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 383f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 384f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSyntheticChildren] Looking into cache for type %s\n", valobj_type.AsCString("<invalid>")); 385f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (m_format_cache.GetSynthetic(valobj_type,retval)) 386f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return retval; 387f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 388f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. Going normal route\n"); 389f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 390f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 391f509c5ec066599a3399fced39ea36996184939e8Enrico Granata retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic); 392f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#if USE_CACHE 393f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (valobj_type) 394f509c5ec066599a3399fced39ea36996184939e8Enrico Granata { 395f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 396f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSyntheticChildren] Caching %p for type %s\n",retval.get(),valobj_type.AsCString("<invalid>")); 397f509c5ec066599a3399fced39ea36996184939e8Enrico Granata m_format_cache.SetSynthetic(valobj_type,retval); 398f509c5ec066599a3399fced39ea36996184939e8Enrico Granata } 399f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#ifdef LLDB_CONFIGURATION_DEBUG 400f509c5ec066599a3399fced39ea36996184939e8Enrico Granata if (log) 401f509c5ec066599a3399fced39ea36996184939e8Enrico Granata log->Printf("[FormatManager::GetSyntheticChildren] Cache hits: %llu - Cache Misses: %llu", m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); 402f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 403f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 404f509c5ec066599a3399fced39ea36996184939e8Enrico Granata return retval; 405f509c5ec066599a3399fced39ea36996184939e8Enrico Granata} 406f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif 407f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#undef USE_CACHE 408f509c5ec066599a3399fced39ea36996184939e8Enrico Granata 409f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::FormatManager() : 410f509c5ec066599a3399fced39ea36996184939e8Enrico Granata m_format_cache(), 411f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata m_value_nav("format",this), 412f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata m_named_summaries_map(this), 413f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata m_last_revision(0), 414f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata m_categories_map(this), 415b0968f5c6b8c15d5cb223676686e014eb12c44c1Enrico Granata m_default_category_name(ConstString("default")), 416b0968f5c6b8c15d5cb223676686e014eb12c44c1Enrico Granata m_system_category_name(ConstString("system")), 417b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata m_gnu_cpp_category_name(ConstString("gnu-libstdc++")), 41866205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata m_libcxx_category_name(ConstString("libcxx")), 419d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata m_objc_category_name(ConstString("objc")), 420d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata m_corefoundation_category_name(ConstString("CoreFoundation")), 421d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata m_coregraphics_category_name(ConstString("CoreGraphics")), 422d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata m_coreservices_category_name(ConstString("CoreServices")), 4238f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata m_vectortypes_category_name(ConstString("VectorTypes")), 4248f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata m_appkit_category_name(ConstString("AppKit")) 425f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata{ 426d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata LoadSystemFormatters(); 42715c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata LoadLibStdcppFormatters(); 42866205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata LoadLibcxxFormatters(); 429d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata LoadObjCFormatters(); 430f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata 431f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_objc_category_name,TypeCategoryMap::Last); 432f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_corefoundation_category_name,TypeCategoryMap::Last); 433f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_appkit_category_name,TypeCategoryMap::Last); 434f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_coreservices_category_name,TypeCategoryMap::Last); 435f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_coregraphics_category_name,TypeCategoryMap::Last); 436f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_gnu_cpp_category_name,TypeCategoryMap::Last); 437f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_libcxx_category_name,TypeCategoryMap::Last); 438f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_vectortypes_category_name,TypeCategoryMap::Last); 439f509c5ec066599a3399fced39ea36996184939e8Enrico Granata EnableCategory(m_system_category_name,TypeCategoryMap::Last); 440d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata} 441d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 442f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void 443f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddStringSummary(TypeCategoryImpl::SharedPointer category_sp, 444f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata const char* string, 445f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata ConstString type_name, 44632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata TypeSummaryImpl::Flags flags, 44732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata bool regex = false) 448f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{ 449f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata lldb::TypeSummaryImplSP summary_sp(new StringSummaryFormat(flags, 450f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata string)); 45132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 45232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata if (regex) 45332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata {} 45432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata else 45532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 456f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata} 457f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 458f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON 459f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void 460f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddScriptSummary(TypeCategoryImpl::SharedPointer category_sp, 461f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata const char* funct_name, 462f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata ConstString type_name, 46332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata TypeSummaryImpl::Flags flags, 46432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata bool regex = false) 465f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{ 466f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 467f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata std::string code(" "); 468f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata code.append(funct_name).append("(valobj,internal_dict)"); 469f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 470f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata lldb::TypeSummaryImplSP summary_sp(new ScriptSummaryFormat(flags, 471f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata funct_name, 472f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata code.c_str())); 47332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata if (regex) 47432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata {} 47532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata else 47632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 477f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata} 478f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif 479f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 480f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON 481f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void 482f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddCXXSummary (TypeCategoryImpl::SharedPointer category_sp, 483f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata CXXFunctionSummaryFormat::Callback funct, 484f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata const char* description, 485f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata ConstString type_name, 48632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata TypeSummaryImpl::Flags flags, 48732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata bool regex = false) 488f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{ 489f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata lldb::TypeSummaryImplSP summary_sp(new CXXFunctionSummaryFormat(flags,funct,description)); 49032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata if (regex) 49132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata {} 49232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata else 49332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata category_sp->GetSummaryNavigator()->Add(type_name, summary_sp); 494f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata} 495f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif 496f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 497f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON 498f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void AddCXXSynthetic (TypeCategoryImpl::SharedPointer category_sp, 499f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata CXXSyntheticChildren::CreateFrontEndCallback generator, 500f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata const char* description, 501f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata ConstString type_name, 50232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata ScriptedSyntheticChildren::Flags flags, 50332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata bool regex = false) 504f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{ 505f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata lldb::SyntheticChildrenSP synth_sp(new CXXSyntheticChildren(flags,description,generator)); 50632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata if (regex) 50732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())), synth_sp); 50832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata else 50932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata category_sp->GetSyntheticNavigator()->Add(type_name,synth_sp); 510f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata} 511f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif 512f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 513d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid 51415c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico GranataFormatManager::LoadLibStdcppFormatters() 515d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata{ 51686fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata TypeSummaryImpl::Flags stl_summary_flags; 51786fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata stl_summary_flags.SetCascades(true) 51886fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetSkipPointers(false) 51986fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetSkipReferences(false) 52086fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetDontShowChildren(true) 52186fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetDontShowValue(true) 52286fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetShowMembersOneLiner(false) 52386fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata .SetHideItemNames(false); 52486fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata 52586fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata lldb::TypeSummaryImplSP std_string_summary_sp(new StringSummaryFormat(stl_summary_flags, 52616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata "${var._M_dataplus._M_p}")); 527915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 52816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata TypeCategoryImpl::SharedPointer gnu_category_sp = GetCategory(m_gnu_cpp_category_name); 529915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 530915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::string"), 531915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata std_string_summary_sp); 532915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char>"), 533915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata std_string_summary_sp); 534915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char,std::char_traits<char>,std::allocator<char> >"), 535915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata std_string_summary_sp); 536dc0a38c5a727cae5362b218a3180d0f4265a619dGreg Clayton gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char, std::char_traits<char>, std::allocator<char> >"), 5372f2c277dd88f3e252394f70516b63f757d1a09a3Enrico Granata std_string_summary_sp); 538d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 53915c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata // making sure we force-pick the summary for printing wstring (_M_p is a wchar_t*) 54015c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata lldb::TypeSummaryImplSP std_wstring_summary_sp(new StringSummaryFormat(stl_summary_flags, 54115c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata "${var._M_dataplus._M_p%S}")); 54215c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata 54315c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::wstring"), 54415c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata std_wstring_summary_sp); 54515c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t>"), 54615c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata std_wstring_summary_sp); 54715c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >"), 54815c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata std_wstring_summary_sp); 54915c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >"), 55015c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata std_wstring_summary_sp); 55115c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata 552915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 5533e4238d47a6d1a3106f357d2e7b495870721c7aeGreg Clayton#ifndef LLDB_DISABLE_PYTHON 55416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata 55516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata SyntheticChildren::Flags stl_synth_flags; 55616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); 55716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata 558dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")), 559f509c5ec066599a3399fced39ea36996184939e8Enrico Granata SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 560a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata "lldb.formatters.cpp.gnu_libstdcpp.StdVectorSynthProvider"))); 561dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")), 562f509c5ec066599a3399fced39ea36996184939e8Enrico Granata SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 563a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata "lldb.formatters.cpp.gnu_libstdcpp.StdMapSynthProvider"))); 564dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")), 565f509c5ec066599a3399fced39ea36996184939e8Enrico Granata SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 566a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata "lldb.formatters.cpp.gnu_libstdcpp.StdListSynthProvider"))); 56786fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata 56898b449f489fb521f2e03287bd5515b3502481089Enrico Granata stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(true); 569dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")), 570dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 571dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata "size=${svar%#}"))); 572dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")), 573dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 574dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata "size=${svar%#}"))); 575dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")), 57686fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, 57786fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata "size=${svar%#}"))); 57832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 57932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibStdcppVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^__gnu_cxx::__normal_iterator<.+>$"), stl_synth_flags, true); 58032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 58132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::_Rb_tree_iterator<.+>$"), stl_synth_flags, true); 582689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata 583689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"), 584689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 585689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata 586689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata gnu_category_sp->GetSyntheticNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"), 587689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata SyntheticChildrenSP(new CXXSyntheticChildren(stl_synth_flags,"libc++ std::vector<bool> synthetic children",lldb_private::formatters::LibstdcppVectorBoolSyntheticFrontEndCreator))); 588689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata 589d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata#endif 590d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata} 591d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 592d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid 59366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico GranataFormatManager::LoadLibcxxFormatters() 59466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata{ 59566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata TypeSummaryImpl::Flags stl_summary_flags; 59666205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata stl_summary_flags.SetCascades(true) 59766205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetSkipPointers(false) 59866205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetSkipReferences(false) 59966205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetDontShowChildren(true) 60066205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetDontShowValue(true) 60166205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetShowMembersOneLiner(false) 60266205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata .SetHideItemNames(false); 60366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata 6045ae31e2857ff6da596533baa11c3f82f340fefecJason Molenda#ifndef LLDB_DISABLE_PYTHON 605b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata //std::string code(" lldb.formatters.cpp.libcxx.stdstring_SummaryProvider(valobj,internal_dict)"); 606b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata //lldb::TypeSummaryImplSP std_string_summary_sp(new ScriptSummaryFormat(stl_summary_flags, "lldb.formatters.cpp.libcxx.stdstring_SummaryProvider",code.c_str())); 60766205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata 608b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata lldb::TypeSummaryImplSP std_string_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxStringSummaryProvider, "std::string summary provider")); 609b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata lldb::TypeSummaryImplSP std_wstring_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxWStringSummaryProvider, "std::wstring summary provider")); 610b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata 61166205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata TypeCategoryImpl::SharedPointer libcxx_category_sp = GetCategory(m_libcxx_category_name); 61266205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata 61366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::string"), 61466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata std_string_summary_sp); 615dc0a38c5a727cae5362b218a3180d0f4265a619dGreg Clayton libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >"), 61666205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata std_string_summary_sp); 6175ae31e2857ff6da596533baa11c3f82f340fefecJason Molenda 618b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::wstring"), 619b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata std_wstring_summary_sp); 620b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >"), 621b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata std_wstring_summary_sp); 622b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata 62366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata SyntheticChildren::Flags stl_synth_flags; 62466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); 62566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata 626cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdVectorSyntheticFrontEndCreator, "libc++ std::vector synthetic children", ConstString("^std::__1::vector<.+>(( )?&)?$"), stl_synth_flags, true); 627cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator, "libc++ std::list synthetic children", ConstString("^std::__1::list<.+>(( )?&)?$"), stl_synth_flags, true); 628cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::map synthetic children", ConstString("^std::__1::map<.+> >(( )?&)?$"), stl_synth_flags, true); 629cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata 6305b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata libcxx_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^(std::__1::)deque<.+>(( )?&)?$")), 631f509c5ec066599a3399fced39ea36996184939e8Enrico Granata SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags, 6325b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata "lldb.formatters.cpp.libcxx.stddeque_SynthProvider"))); 633cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata 634cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "shared_ptr synthetic children", ConstString("^(std::__1::)shared_ptr<.+>(( )?&)?$"), stl_synth_flags, true); 635cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "weak_ptr synthetic children", ConstString("^(std::__1::)weak_ptr<.+>(( )?&)?$"), stl_synth_flags, true); 6365b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata 6375b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(true); 6385b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::vector<.+>(( )?&)?$")), 639cf09f885c201becf51acc4a5cfac00b3df53f2a8Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 640dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::list<.+>(( )?&)?$")), 641cf09f885c201becf51acc4a5cfac00b3df53f2a8Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 642dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::map<.+> >(( )?&)?$")), 643cf09f885c201becf51acc4a5cfac00b3df53f2a8Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 6445b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::deque<.+>(( )?&)?$")), 6455b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 6465b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::shared_ptr<.+>(( )?&)?$")), 64732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}"))); 6485b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata libcxx_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::__1::weak_ptr<.+>(( )?&)?$")), 64932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}"))); 65032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 65132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^std::__1::__wrap_iter<.+>$"), stl_synth_flags, true); 65232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 65332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::__1::__map_iterator<.+>$"), stl_synth_flags, true); 65407bef69b1725430a383ee9babbf525145bc90b25Enrico Granata 65507bef69b1725430a383ee9babbf525145bc90b25Enrico Granata // this summary prevails on the regex std::vector<> because we do exact matches before regex ones 65607bef69b1725430a383ee9babbf525145bc90b25Enrico Granata libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::vector<std::__1::allocator<bool> >"), 657689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}"))); 658689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata 659689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata libcxx_category_sp->GetSyntheticNavigator()->Add(ConstString("std::__1::vector<std::__1::allocator<bool> >"), 660689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata SyntheticChildrenSP(new CXXSyntheticChildren(stl_synth_flags,"libc++ std::vector<bool> synthetic children",lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEndCreator))); 66132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata 66266205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata#endif 66366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata} 66466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata 66566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granatavoid 666d760907c1d42726fa0c8c48efa28385ed339bb94Enrico GranataFormatManager::LoadSystemFormatters() 667d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata{ 668f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 669f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata TypeSummaryImpl::Flags string_flags; 670b7031126eee2dd7ecbce4567ece0601b680fb582Enrico Granata string_flags.SetCascades(true) 671f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetSkipPointers(true) 672f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetSkipReferences(false) 673f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetDontShowChildren(true) 674f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetDontShowValue(false) 675f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetShowMembersOneLiner(false) 676f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata .SetHideItemNames(false); 677f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata 678f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata lldb::TypeSummaryImplSP string_format(new StringSummaryFormat(string_flags, "${var%s}")); 679d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 680d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 681d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata lldb::TypeSummaryImplSP string_array_format(new StringSummaryFormat(TypeSummaryImpl::Flags().SetCascades(false) 682d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetSkipPointers(true) 683d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetSkipReferences(false) 6841ce700057562ef0a71724050f1d1675f29f646b6Enrico Granata .SetDontShowChildren(true) 685d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetDontShowValue(true) 686d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetShowMembersOneLiner(false) 687d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetHideItemNames(false), 688d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata "${var%s}")); 689d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 690d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata lldb::RegularExpressionSP any_size_char_arr(new RegularExpression("char \\[[0-9]+\\]")); 691d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 692d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeCategoryImpl::SharedPointer sys_category_sp = GetCategory(m_system_category_name); 693d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 694d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata sys_category_sp->GetSummaryNavigator()->Add(ConstString("char *"), string_format); 695d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata sys_category_sp->GetSummaryNavigator()->Add(ConstString("const char *"), string_format); 696d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata sys_category_sp->GetRegexSummaryNavigator()->Add(any_size_char_arr, string_array_format); 6975cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata 6985cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata lldb::TypeSummaryImplSP ostype_summary(new StringSummaryFormat(TypeSummaryImpl::Flags().SetCascades(false) 6995cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetSkipPointers(true) 7005cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetSkipReferences(true) 7015cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetDontShowChildren(true) 7025cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetDontShowValue(false) 7035cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetShowMembersOneLiner(false) 7045cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata .SetHideItemNames(false), 7055cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata "${var%O}")); 7065cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata 7075cee84b4b542c3a48abd8c2ea1aeab92b773ec86Enrico Granata sys_category_sp->GetSummaryNavigator()->Add(ConstString("OSType"), ostype_summary); 7088f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata 7091b84e1ba902972616a4cbd714ef4ba6c9984f6a2Jason Molenda#ifndef LLDB_DISABLE_PYTHON 710f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata // FIXME because of a bug in the FormatNavigator we need to add a summary for both X* and const X* (<rdar://problem/12717717>) 711f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "char16_t * summary provider", ConstString("char16_t *"), string_flags); 712f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "char16_t * summary provider", ConstString("const char16_t *"), string_flags); 7138f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata 714f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32StringSummaryProvider, "char32_t * summary provider", ConstString("char32_t *"), string_flags); 715f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32StringSummaryProvider, "char32_t * summary provider", ConstString("const char32_t *"), string_flags); 71606d58b0c68d98bfef948861e722789d7c7b1172cEnrico Granata 71706d58b0c68d98bfef948861e722789d7c7b1172cEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharStringSummaryProvider, "wchar_t * summary provider", ConstString("wchar_t *"), string_flags); 71806d58b0c68d98bfef948861e722789d7c7b1172cEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharStringSummaryProvider, "wchar_t * summary provider", ConstString("const wchar_t *"), string_flags); 719cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata 720cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "unichar * summary provider", ConstString("unichar *"), string_flags); 721cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "unichar * summary provider", ConstString("const unichar *"), string_flags); 722cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata 723cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata TypeSummaryImpl::Flags widechar_flags; 724cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata widechar_flags.SetDontShowValue(true) 725cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetSkipPointers(true) 726cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetSkipReferences(false) 727cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetCascades(true) 728cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetDontShowChildren(true) 729cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetHideItemNames(true) 730cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata .SetShowMembersOneLiner(false); 731cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata 732cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "char16_t summary provider", ConstString("char16_t"), widechar_flags); 733cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32SummaryProvider, "char32_t summary provider", ConstString("char32_t"), widechar_flags); 734cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharSummaryProvider, "wchar_t summary provider", ConstString("wchar_t"), widechar_flags); 735cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata 736cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "unichar summary provider", ConstString("unichar"), widechar_flags); 737cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata 7381b84e1ba902972616a4cbd714ef4ba6c9984f6a2Jason Molenda#endif 7398f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata} 740f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata 741d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid 742d760907c1d42726fa0c8c48efa28385ed339bb94Enrico GranataFormatManager::LoadObjCFormatters() 743d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata{ 744d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeSummaryImpl::Flags objc_flags; 745d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata objc_flags.SetCascades(false) 7464ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata .SetSkipPointers(true) 7474ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata .SetSkipReferences(true) 748d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetDontShowChildren(true) 749d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetDontShowValue(true) 750d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetShowMembersOneLiner(false) 751d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetHideItemNames(false); 75212ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata 75312ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata TypeCategoryImpl::SharedPointer objc_category_sp = GetCategory(m_objc_category_name); 754d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 755db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata lldb::TypeSummaryImplSP ObjC_BOOL_summary(new CXXFunctionSummaryFormat(objc_flags, lldb_private::formatters::ObjCBOOLSummaryProvider,"")); 756b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL"), 757b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata ObjC_BOOL_summary); 7584ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL &"), 759db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata ObjC_BOOL_summary); 7604ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL *"), 761db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata ObjC_BOOL_summary); 762db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata 763da5308992b04e473eb218b9bd234d0b81f5242c4Jason Molenda#ifndef LLDB_DISABLE_PYTHON 76486fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata // we need to skip pointers here since we are special casing a SEL* when retrieving its value 76586fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata objc_flags.SetSkipPointers(true); 766f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("SEL"), objc_flags); 767f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("struct objc_selector"), objc_flags); 768f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("objc_selector"), objc_flags); 769f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("objc_selector *"), objc_flags); 7701f9df7804f59193fdfbba3d73bb81f99c689f486Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("SEL *"), objc_flags); 771db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata 772280b30f0315211c54ce1c34366b586e9700629f4Enrico Granata AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCClassSummaryProvider, "Class summary provider", ConstString("Class"), objc_flags); 77312ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata#endif // LLDB_DISABLE_PYTHON 77486fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata 775db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata objc_flags.SetSkipPointers(false); 776db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata 777d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeCategoryImpl::SharedPointer corefoundation_category_sp = GetCategory(m_corefoundation_category_name); 778d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 779e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 780e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "${var.years} years, ${var.months} months, ${var.days} days, ${var.hours} hours, ${var.minutes} minutes ${var.seconds} seconds", 781e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CFGregorianUnits"), 782e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 783e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 784e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "location=${var.location} length=${var.length}", 785e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CFRange"), 786e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 787e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 788e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(x=${var.x}, y=${var.y})", 789e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("NSPoint"), 790e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 791e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 792e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "location=${var.location}, length=${var.length}", 793e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("NSRange"), 794e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 795e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 796e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "${var.origin}, ${var.size}", 797e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("NSRect"), 798e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 799e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(corefoundation_category_sp, 800e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(${var.origin}, ${var.size}), ...", 801e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("NSRectArray"), 802e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 803e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(objc_category_sp, 804e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(width=${var.width}, height=${var.height})", 805e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("NSSize"), 806e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 807d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 808d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeCategoryImpl::SharedPointer coregraphics_category_sp = GetCategory(m_coregraphics_category_name); 809d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 810e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coregraphics_category_sp, 811e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(width=${var.width}, height=${var.height})", 812e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CGSize"), 813e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 814e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coregraphics_category_sp, 815e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(x=${var.x}, y=${var.y})", 816e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CGPoint"), 817e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 818e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coregraphics_category_sp, 819e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "origin=${var.origin} size=${var.size}", 820e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CGRect"), 821e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 822d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 823d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeCategoryImpl::SharedPointer coreservices_category_sp = GetCategory(m_coreservices_category_name); 824d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 825e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 826e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "red=${var.red} green=${var.green} blue=${var.blue}", 827e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("RGBColor"), 828e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 829e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 830e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(t=${var.top}, l=${var.left}, b=${var.bottom}, r=${var.right})", 831e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("Rect"), 832e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 833e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 834e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(v=${var.v}, h=${var.h})", 835e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("Point"), 836e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 837e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 838e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "${var.month}/${var.day}/${var.year} ${var.hour} :${var.minute} :${var.second} dayOfWeek:${var.dayOfWeek}", 839e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("DateTimeRect *"), 840e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 841e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 842e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "${var.ld.month}/${var.ld.day}/${var.ld.year} ${var.ld.hour} :${var.ld.minute} :${var.ld.second} dayOfWeek:${var.ld.dayOfWeek}", 843e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("LongDateRect"), 844e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 845e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 846e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "(x=${var.x}, y=${var.y})", 847e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("HIPoint"), 848e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 849e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(coreservices_category_sp, 850e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "origin=${var.origin} size=${var.size}", 851e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("HIRect"), 852e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 853d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 8548f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata TypeCategoryImpl::SharedPointer appkit_category_sp = GetCategory(m_appkit_category_name); 8558f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata 8568f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata TypeSummaryImpl::Flags appkit_flags; 8578f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata appkit_flags.SetCascades(true) 8588f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetSkipPointers(false) 8598f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetSkipReferences(false) 8608f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetDontShowChildren(true) 8618f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetDontShowValue(false) 8628f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetShowMembersOneLiner(false) 8638f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata .SetHideItemNames(false); 8648f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata 865f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata appkit_flags.SetDontShowChildren(false); 866f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata 8673314d6c8b6c818ebd731ab7130c335cac0eb678dJason Molenda 868f54d1459fa73ee64753a707211cb96cfc3d9dff1Jason Molenda#ifndef LLDB_DISABLE_PYTHON 869f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSArray"), appkit_flags); 870f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSMutableArray"), appkit_flags); 871f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayI"), appkit_flags); 872f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayM"), appkit_flags); 873f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSCFArray"), appkit_flags); 874f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFArrayRef"), appkit_flags); 875f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFMutableArrayRef"), appkit_flags); 876f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata 8773a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSDictionary"), appkit_flags); 8783a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSMutableDictionary"), appkit_flags); 8793a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSCFDictionary"), appkit_flags); 8803a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryI"), appkit_flags); 8813a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryM"), appkit_flags); 8823a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFDictionaryRef"), appkit_flags); 8833a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFMutableDictionaryRef"), appkit_flags); 8843a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata 885fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSSet summary", ConstString("NSSet"), appkit_flags); 886fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFSetRef summary", ConstString("CFSetRef"), appkit_flags); 887fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFMutableSetRef summary", ConstString("CFMutableSetRef"), appkit_flags); 888fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSCFSet summary", ConstString("__NSCFSet"), appkit_flags); 889fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetI summary", ConstString("__NSSetI"), appkit_flags); 890fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetM summary", ConstString("__NSSetM"), appkit_flags); 891fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSCountedSet summary", ConstString("NSCountedSet"), appkit_flags); 892fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSSet summary", ConstString("NSMutableSet"), appkit_flags); 893fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata 8943a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata // AddSummary(appkit_category_sp, "${var.key%@} -> ${var.value%@}", ConstString("$_lldb_typegen_nspair"), appkit_flags); 8953a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata 896f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata appkit_flags.SetDontShowChildren(true); 897f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata 898f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayM"), ScriptedSyntheticChildren::Flags()); 899f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayI"), ScriptedSyntheticChildren::Flags()); 900f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSArray"), ScriptedSyntheticChildren::Flags()); 901f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSMutableArray"), ScriptedSyntheticChildren::Flags()); 902f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSCFArray"), ScriptedSyntheticChildren::Flags()); 903fe26a2333298602bac55decfee87bc6d33b79d54Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFMutableArrayRef"), ScriptedSyntheticChildren::Flags()); 904fe26a2333298602bac55decfee87bc6d33b79d54Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFArrayRef"), ScriptedSyntheticChildren::Flags()); 905a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 906f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryM"), ScriptedSyntheticChildren::Flags()); 907f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryI"), ScriptedSyntheticChildren::Flags()); 908f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSDictionary"), ScriptedSyntheticChildren::Flags()); 909f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSMutableDictionary"), ScriptedSyntheticChildren::Flags()); 910f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFDictionaryRef"), ScriptedSyntheticChildren::Flags()); 911f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFMutableDictionaryRef"), ScriptedSyntheticChildren::Flags()); 9123a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata 913fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("NSSet"), ScriptedSyntheticChildren::Flags()); 914fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("__NSSetI"), ScriptedSyntheticChildren::Flags()); 915fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("__NSSetM"), ScriptedSyntheticChildren::Flags()); 916fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("NSMutableSet"), ScriptedSyntheticChildren::Flags()); 917fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata 918b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFBagRef"), appkit_flags); 919b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("__CFBag"), appkit_flags); 920b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("const struct __CFBag"), appkit_flags); 921b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFMutableBagRef"), appkit_flags); 922a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 923dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("CFBinaryHeapRef"), appkit_flags); 924dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("__CFBinaryHeap"), appkit_flags); 925a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 926f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSString"), appkit_flags); 927f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFStringRef"), appkit_flags); 928f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFMutableStringRef"), appkit_flags); 929dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSMutableString"), appkit_flags); 930f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFConstantString"), appkit_flags); 931f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFString"), appkit_flags); 932f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFConstantString"), appkit_flags); 933f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFString"), appkit_flags); 934f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSPathStore2"), appkit_flags); 935ae2ae94bd72daf435204e99a0e03ccc64470a843Enrico Granata 936dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSAttributedStringSummaryProvider, "NSAttributedString summary provider", ConstString("NSAttributedString"), appkit_flags); 937dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSMutableAttributedString"), appkit_flags); 938dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSConcreteMutableAttributedString"), appkit_flags); 939dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata 940b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSBundleSummaryProvider, "NSBundle summary provider", ConstString("NSBundle"), appkit_flags); 94112ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata 942f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSData"), appkit_flags); 943f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteData"), appkit_flags); 944f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteMutableData"), appkit_flags); 945f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("__NSCFData"), appkit_flags); 946f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFDataRef"), appkit_flags); 947f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFMutableDataRef"), appkit_flags); 948a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 949dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMachPortSummaryProvider, "NSMachPort summary provider", ConstString("NSMachPort"), appkit_flags); 950dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata 951dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSNotification"), appkit_flags); 952dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSConcreteNotification"), appkit_flags); 953a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 954e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(appkit_category_sp, "domain: ${var._domain} - code: ${var._code}", ConstString("NSError"), appkit_flags); 955f509c5ec066599a3399fced39ea36996184939e8Enrico Granata AddStringSummary(appkit_category_sp,"name:${var.name%S} reason:${var.reason%S}",ConstString("NSException"),appkit_flags); 956f509c5ec066599a3399fced39ea36996184939e8Enrico Granata 957f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSNumber"), appkit_flags); 958f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFBoolean"), appkit_flags); 959f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFNumber"), appkit_flags); 960f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFBoolean"), appkit_flags); 961f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFNumber"), appkit_flags); 9629abbfba957db139beed19866f61599424ddcd37aEnrico Granata 9639abbfba957db139beed19866f61599424ddcd37aEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSDecimalNumber summary provider", ConstString("NSDecimalNumber"), appkit_flags); 9649abbfba957db139beed19866f61599424ddcd37aEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSHost summary provider", ConstString("NSHost"), appkit_flags); 9659abbfba957db139beed19866f61599424ddcd37aEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSTask summary provider", ConstString("NSTask"), appkit_flags); 9669abbfba957db139beed19866f61599424ddcd37aEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSValue summary provider", ConstString("NSValue"), appkit_flags); 967ea68753ef4b8cca81cf3f5aef7bbf1ebb152a832Enrico Granata 968979c4b526eb31cbed5475ec62ef10fe53cbf8c45Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("NSURL"), appkit_flags); 969979c4b526eb31cbed5475ec62ef10fe53cbf8c45Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("CFURLRef"), appkit_flags); 970a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 971cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSDate"), appkit_flags); 972cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSDate"), appkit_flags); 973cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSTaggedDate"), appkit_flags); 974cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSCalendarDate"), appkit_flags); 975a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata 9765782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("NSTimeZone"), appkit_flags); 9775782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("CFTimeZoneRef"), appkit_flags); 9785782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("__NSTimeZone"), appkit_flags); 97986fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata 98083410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata // CFAbsoluteTime is actually a double rather than a pointer to an object 98183410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata // we do not care about the numeric value, since it is probably meaningless to users 98283410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata appkit_flags.SetDontShowValue(true); 983cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFAbsoluteTimeSummaryProvider, "CFAbsoluteTime summary provider", ConstString("CFAbsoluteTime"), appkit_flags); 98483410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata appkit_flags.SetDontShowValue(false); 98583410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata 9863818e6ac2211921db522abedd43746c1de3e82b5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSIndexSet"), appkit_flags); 9873818e6ac2211921db522abedd43746c1de3e82b5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSMutableIndexSet"), appkit_flags); 98883410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata 989e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(appkit_category_sp, 990e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "@\"${var.month%d}/${var.day%d}/${var.year%d} ${var.hour%d}:${var.minute%d}:${var.second}\"", 991e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("CFGregorianDate"), 992e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata appkit_flags); 99386fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata 9945782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFBitVectorRef"), appkit_flags); 9955782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFMutableBitVectorRef"), appkit_flags); 9965782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFBitVector"), appkit_flags); 9975782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFMutableBitVector"), appkit_flags); 99812ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata#endif // LLDB_DISABLE_PYTHON 99912ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata 1000d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeCategoryImpl::SharedPointer vectors_category_sp = GetCategory(m_vectortypes_category_name); 1001d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 1002d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata TypeSummaryImpl::Flags vector_flags; 1003d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata vector_flags.SetCascades(true) 1004d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetSkipPointers(true) 1005d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetSkipReferences(false) 1006d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetDontShowChildren(true) 1007d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetDontShowValue(false) 1008d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetShowMembersOneLiner(true) 1009d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata .SetHideItemNames(true); 1010d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata 1011e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1012e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "${var.uint128}", 1013e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("builtin_type_vec128"), 1014e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata objc_flags); 1015e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata 1016e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1017e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1018e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("float [4]"), 1019e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1020e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1021e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1022e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("int32_t [4]"), 1023e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1024e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1025e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1026e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("int16_t [8]"), 1027e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1028e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1029e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1030e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vDouble"), 1031e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1032e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1033e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1034e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vFloat"), 1035e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1036e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1037e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1038e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vSInt8"), 1039e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1040e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1041e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1042e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vSInt16"), 1043e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1044e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1045e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1046e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vSInt32"), 1047e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1048e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1049e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1050e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vUInt16"), 1051e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1052e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1053e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1054e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vUInt8"), 1055e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1056e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1057e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1058e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vUInt16"), 1059e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1060e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1061e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1062e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vUInt32"), 1063e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1064e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata AddStringSummary(vectors_category_sp, 1065e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata "", 1066e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata ConstString("vBool32"), 1067e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata vector_flags); 1068141f8d98cb74262914d66a7af4732e8cb2d8699fGreg Clayton} 1069