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 Granatalldb::TypeSummaryImplSP
338f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::GetSummaryFormat (ValueObject& valobj,
339f509c5ec066599a3399fced39ea36996184939e8Enrico Granata                                 lldb::DynamicValueType use_dynamic)
340f509c5ec066599a3399fced39ea36996184939e8Enrico Granata{
341f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    TypeSummaryImplSP retval;
342952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
343f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    ConstString valobj_type(GetTypeForCache(valobj, use_dynamic));
344f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    if (valobj_type)
345f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    {
346f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (log)
347b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            log->Printf("\n\n[FormatManager::GetSummaryFormat] Looking into cache for type %s", valobj_type.AsCString("<invalid>"));
348f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (m_format_cache.GetSummary(valobj_type,retval))
349b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata        {
350b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            if (log)
351b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            {
352b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata                log->Printf("[FormatManager::GetSummaryFormat] Cache search success. Returning.");
353a227fcd20fb7479e43b3890ed35a4c5cc0671dd0Enrico Granata                if (log->GetDebug())
3543160832f026e60e832da55f90993a40ad132e360Michael Sartain                    log->Printf("[FormatManager::GetSummaryFormat] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses());
355b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            }
356f509c5ec066599a3399fced39ea36996184939e8Enrico Granata            return retval;
357b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata        }
358f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (log)
359f509c5ec066599a3399fced39ea36996184939e8Enrico Granata            log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. Going normal route");
360f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    }
361f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic);
362f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    if (valobj_type)
363f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    {
364f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (log)
365f509c5ec066599a3399fced39ea36996184939e8Enrico Granata            log->Printf("[FormatManager::GetSummaryFormat] Caching %p for type %s",retval.get(),valobj_type.AsCString("<invalid>"));
366f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        m_format_cache.SetSummary(valobj_type,retval);
367f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    }
368a227fcd20fb7479e43b3890ed35a4c5cc0671dd0Enrico Granata    if (log && log->GetDebug())
3693160832f026e60e832da55f90993a40ad132e360Michael Sartain        log->Printf("[FormatManager::GetSummaryFormat] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses());
370f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    return retval;
371f509c5ec066599a3399fced39ea36996184939e8Enrico Granata}
372f509c5ec066599a3399fced39ea36996184939e8Enrico Granata
373f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#ifndef LLDB_DISABLE_PYTHON
374f509c5ec066599a3399fced39ea36996184939e8Enrico Granatalldb::SyntheticChildrenSP
375f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::GetSyntheticChildren (ValueObject& valobj,
376a227fcd20fb7479e43b3890ed35a4c5cc0671dd0Enrico Granata                                     lldb::DynamicValueType use_dynamic)
377f509c5ec066599a3399fced39ea36996184939e8Enrico Granata{
378f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    SyntheticChildrenSP retval;
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)
384b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            log->Printf("\n\n[FormatManager::GetSyntheticChildren] Looking into cache for type %s", valobj_type.AsCString("<invalid>"));
385f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (m_format_cache.GetSynthetic(valobj_type,retval))
386b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata        {
387b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            if (log)
388b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            {
389b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata                log->Printf("[FormatManager::GetSyntheticChildren] Cache search success. Returning.");
390a227fcd20fb7479e43b3890ed35a4c5cc0671dd0Enrico Granata                if (log->GetDebug())
3913160832f026e60e832da55f90993a40ad132e360Michael Sartain                    log->Printf("[FormatManager::GetSyntheticChildren] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses());
392b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            }
393f509c5ec066599a3399fced39ea36996184939e8Enrico Granata            return retval;
394b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata        }
395f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (log)
396b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. Going normal route");
397f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    }
398f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic);
399f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    if (valobj_type)
400f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    {
401f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        if (log)
402b6a4c565732b3a7b546ba2aa0e7aec3a4bb359a4Enrico Granata            log->Printf("[FormatManager::GetSyntheticChildren] Caching %p for type %s",retval.get(),valobj_type.AsCString("<invalid>"));
403f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        m_format_cache.SetSynthetic(valobj_type,retval);
404f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    }
405a227fcd20fb7479e43b3890ed35a4c5cc0671dd0Enrico Granata    if (log && log->GetDebug())
4063160832f026e60e832da55f90993a40ad132e360Michael Sartain        log->Printf("[FormatManager::GetSyntheticChildren] Cache hits: %" PRIu64 " - Cache Misses: %" PRIu64, m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses());
407f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    return retval;
408f509c5ec066599a3399fced39ea36996184939e8Enrico Granata}
409f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#endif
410f509c5ec066599a3399fced39ea36996184939e8Enrico Granata
411f509c5ec066599a3399fced39ea36996184939e8Enrico GranataFormatManager::FormatManager() :
412f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    m_format_cache(),
413f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata    m_value_nav("format",this),
414f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata    m_named_summaries_map(this),
415f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata    m_last_revision(0),
416f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata    m_categories_map(this),
417b0968f5c6b8c15d5cb223676686e014eb12c44c1Enrico Granata    m_default_category_name(ConstString("default")),
418b0968f5c6b8c15d5cb223676686e014eb12c44c1Enrico Granata    m_system_category_name(ConstString("system")),
419b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata    m_gnu_cpp_category_name(ConstString("gnu-libstdc++")),
42066205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    m_libcxx_category_name(ConstString("libcxx")),
421d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    m_objc_category_name(ConstString("objc")),
422d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    m_corefoundation_category_name(ConstString("CoreFoundation")),
423d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    m_coregraphics_category_name(ConstString("CoreGraphics")),
424d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    m_coreservices_category_name(ConstString("CoreServices")),
4258f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    m_vectortypes_category_name(ConstString("VectorTypes")),
4268f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    m_appkit_category_name(ConstString("AppKit"))
427f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata{
428d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    LoadSystemFormatters();
42915c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata    LoadLibStdcppFormatters();
43066205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    LoadLibcxxFormatters();
431d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    LoadObjCFormatters();
432f501c5913d5daaf45a906477bdf466bb74ed10fbEnrico Granata
433f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_objc_category_name,TypeCategoryMap::Last);
434f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_corefoundation_category_name,TypeCategoryMap::Last);
435f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_appkit_category_name,TypeCategoryMap::Last);
436f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_coreservices_category_name,TypeCategoryMap::Last);
437f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_coregraphics_category_name,TypeCategoryMap::Last);
438f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_gnu_cpp_category_name,TypeCategoryMap::Last);
439f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_libcxx_category_name,TypeCategoryMap::Last);
440f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_vectortypes_category_name,TypeCategoryMap::Last);
441f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    EnableCategory(m_system_category_name,TypeCategoryMap::Last);
442d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata}
443d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
444f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void
445f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddStringSummary(TypeCategoryImpl::SharedPointer category_sp,
446f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                 const char* string,
447f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                 ConstString type_name,
44832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                 TypeSummaryImpl::Flags flags,
44932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                 bool regex = false)
450f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{
451f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    lldb::TypeSummaryImplSP summary_sp(new StringSummaryFormat(flags,
452f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                                                               string));
45332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata
45432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    if (regex)
4558f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata        category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp);
45632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    else
45732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata        category_sp->GetSummaryNavigator()->Add(type_name, summary_sp);
458f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata}
459f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
460f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON
461f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void
462f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddScriptSummary(TypeCategoryImpl::SharedPointer category_sp,
463f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                 const char* funct_name,
464f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                 ConstString type_name,
46532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                 TypeSummaryImpl::Flags flags,
46632d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                 bool regex = false)
467f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{
468f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
469f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    std::string code("     ");
470f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    code.append(funct_name).append("(valobj,internal_dict)");
471f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
472f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    lldb::TypeSummaryImplSP summary_sp(new ScriptSummaryFormat(flags,
473f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                                                               funct_name,
474f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                                                               code.c_str()));
47532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    if (regex)
4768f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata        category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp);
47732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    else
47832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata        category_sp->GetSummaryNavigator()->Add(type_name, summary_sp);
479f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata}
480f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif
481f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
482f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON
483f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void
484f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico GranataAddCXXSummary (TypeCategoryImpl::SharedPointer category_sp,
485f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata               CXXFunctionSummaryFormat::Callback funct,
486f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata               const char* description,
487f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata               ConstString type_name,
48832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata               TypeSummaryImpl::Flags flags,
48932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata               bool regex = false)
490f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{
491f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    lldb::TypeSummaryImplSP summary_sp(new CXXFunctionSummaryFormat(flags,funct,description));
49232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    if (regex)
4938f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata        category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp);
49432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    else
49532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata        category_sp->GetSummaryNavigator()->Add(type_name, summary_sp);
496f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata}
497f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif
498f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
499f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#ifndef LLDB_DISABLE_PYTHON
500f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granatastatic void AddCXXSynthetic  (TypeCategoryImpl::SharedPointer category_sp,
501f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                              CXXSyntheticChildren::CreateFrontEndCallback generator,
502f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                              const char* description,
503f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata                              ConstString type_name,
50432d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                              ScriptedSyntheticChildren::Flags flags,
50532d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata                              bool regex = false)
506f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata{
507f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    lldb::SyntheticChildrenSP synth_sp(new CXXSyntheticChildren(flags,description,generator));
50832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    if (regex)
50932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata        category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())), synth_sp);
51032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    else
51132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata        category_sp->GetSyntheticNavigator()->Add(type_name,synth_sp);
512f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata}
513f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata#endif
514f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata
515d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid
51615c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico GranataFormatManager::LoadLibStdcppFormatters()
517d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata{
51886fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    TypeSummaryImpl::Flags stl_summary_flags;
51986fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    stl_summary_flags.SetCascades(true)
52086fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetSkipPointers(false)
52186fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetSkipReferences(false)
52286fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetDontShowChildren(true)
52386fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetDontShowValue(true)
52486fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetShowMembersOneLiner(false)
52586fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    .SetHideItemNames(false);
52686fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata
52786fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    lldb::TypeSummaryImplSP std_string_summary_sp(new StringSummaryFormat(stl_summary_flags,
52816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                                                                          "${var._M_dataplus._M_p}"));
529915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
53016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    TypeCategoryImpl::SharedPointer gnu_category_sp = GetCategory(m_gnu_cpp_category_name);
531915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
532915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::string"),
533915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata                                                std_string_summary_sp);
534915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char>"),
535915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata                                                std_string_summary_sp);
536915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char,std::char_traits<char>,std::allocator<char> >"),
537915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata                                                std_string_summary_sp);
538dc0a38c5a727cae5362b218a3180d0f4265a619dGreg Clayton    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<char, std::char_traits<char>, std::allocator<char> >"),
5392f2c277dd88f3e252394f70516b63f757d1a09a3Enrico Granata                                                std_string_summary_sp);
540d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
54115c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata    // making sure we force-pick the summary for printing wstring (_M_p is a wchar_t*)
54215c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata    lldb::TypeSummaryImplSP std_wstring_summary_sp(new StringSummaryFormat(stl_summary_flags,
54315c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata                                                                           "${var._M_dataplus._M_p%S}"));
54415c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata
54515c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::wstring"),
54615c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata                                                std_wstring_summary_sp);
54715c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<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    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >"),
55215c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata                                                std_wstring_summary_sp);
55315c1d3d6773de8fc5600a80b0b666eadfa5672d8Enrico Granata
554915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
5553e4238d47a6d1a3106f357d2e7b495870721c7aeGreg Clayton#ifndef LLDB_DISABLE_PYTHON
55616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
55716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    SyntheticChildren::Flags stl_synth_flags;
55816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false);
55916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
560dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")),
561f509c5ec066599a3399fced39ea36996184939e8Enrico Granata                                                       SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags,
562a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata                                                                                                 "lldb.formatters.cpp.gnu_libstdcpp.StdVectorSynthProvider")));
563dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")),
564f509c5ec066599a3399fced39ea36996184939e8Enrico Granata                                                       SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags,
565a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata                                                                                                 "lldb.formatters.cpp.gnu_libstdcpp.StdMapSynthProvider")));
566dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")),
567f509c5ec066599a3399fced39ea36996184939e8Enrico Granata                                                       SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags,
568a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata                                                                                                 "lldb.formatters.cpp.gnu_libstdcpp.StdListSynthProvider")));
56986fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata
57098b449f489fb521f2e03287bd5515b3502481089Enrico Granata    stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(true);
571dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::vector<.+>(( )?&)?$")),
572dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata                                                     TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags,
573dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata                                                                                               "size=${svar%#}")));
574dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::map<.+> >(( )?&)?$")),
575dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata                                                     TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags,
576dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata                                                                                               "size=${svar%#}")));
577dba1de8d585f27601162f674d30ab71d9c83ccdeEnrico Granata    gnu_category_sp->GetRegexSummaryNavigator()->Add(RegularExpressionSP(new RegularExpression("^std::list<.+>(( )?&)?$")),
57886fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata                                                     TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags,
57986fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata                                                                                               "size=${svar%#}")));
58032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata
58132d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibStdcppVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^__gnu_cxx::__normal_iterator<.+>$"), stl_synth_flags, true);
58232d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata
58332d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    AddCXXSynthetic(gnu_category_sp, lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::_Rb_tree_iterator<.+>$"), stl_synth_flags, true);
584689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata
585689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata    gnu_category_sp->GetSummaryNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"),
586689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata                                                   TypeSummaryImplSP(new StringSummaryFormat(stl_summary_flags, "size=${svar%#}")));
587689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata
588689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata    gnu_category_sp->GetSyntheticNavigator()->Add(ConstString("std::vector<std::allocator<bool> >"),
589689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata                                                     SyntheticChildrenSP(new CXXSyntheticChildren(stl_synth_flags,"libc++ std::vector<bool> synthetic children",lldb_private::formatters::LibstdcppVectorBoolSyntheticFrontEndCreator)));
590689696c19cbf0fa8a09e2461f0aaa37409782e3bEnrico Granata
591d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata#endif
592d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata}
593d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
594d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid
59566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico GranataFormatManager::LoadLibcxxFormatters()
59666205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata{
59766205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    TypeSummaryImpl::Flags stl_summary_flags;
59866205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    stl_summary_flags.SetCascades(true)
59966205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetSkipPointers(false)
60066205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetSkipReferences(false)
60166205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetDontShowChildren(true)
60266205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetDontShowValue(true)
60366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetShowMembersOneLiner(false)
60466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    .SetHideItemNames(false);
60566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata
6065ae31e2857ff6da596533baa11c3f82f340fefecJason Molenda#ifndef LLDB_DISABLE_PYTHON
607b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    //std::string code("     lldb.formatters.cpp.libcxx.stdstring_SummaryProvider(valobj,internal_dict)");
608b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    //lldb::TypeSummaryImplSP std_string_summary_sp(new ScriptSummaryFormat(stl_summary_flags, "lldb.formatters.cpp.libcxx.stdstring_SummaryProvider",code.c_str()));
60966205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata
610b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    lldb::TypeSummaryImplSP std_string_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxStringSummaryProvider, "std::string summary provider"));
611b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    lldb::TypeSummaryImplSP std_wstring_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxWStringSummaryProvider, "std::wstring summary provider"));
612b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata
61366205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    TypeCategoryImpl::SharedPointer libcxx_category_sp = GetCategory(m_libcxx_category_name);
61466205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata
61566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::string"),
61666205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata                                                   std_string_summary_sp);
617dc0a38c5a727cae5362b218a3180d0f4265a619dGreg Clayton    libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >"),
61866205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata                                                   std_string_summary_sp);
6195ae31e2857ff6da596533baa11c3f82f340fefecJason Molenda
620b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::wstring"),
621b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata                                                   std_wstring_summary_sp);
622b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata    libcxx_category_sp->GetSummaryNavigator()->Add(ConstString("std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >"),
623b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata                                                   std_wstring_summary_sp);
624b6985793ce97364e6fa86643b942326b218dcb3dEnrico Granata
62566205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    SyntheticChildren::Flags stl_synth_flags;
62666205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata    stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false);
62766205ce5381ab6db1f9bff83c483a4dc5854afc7Enrico Granata
628cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdVectorSyntheticFrontEndCreator, "libc++ std::vector synthetic children", ConstString("^std::__1::vector<.+>(( )?&)?$"), stl_synth_flags, true);
629cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator, "libc++ std::list synthetic children", ConstString("^std::__1::list<.+>(( )?&)?$"), stl_synth_flags, true);
630cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::map synthetic children", ConstString("^std::__1::map<.+> >(( )?&)?$"), stl_synth_flags, true);
6318f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEndCreator, "libc++ std::vector<bool> synthetic children", ConstString("std::__1::vector<std::__1::allocator<bool> >"), stl_synth_flags);
6323990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::set synthetic children", ConstString("^std::__1::set<.+> >(( )?&)?$"), stl_synth_flags, true);
6333990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::multiset synthetic children", ConstString("^std::__1::multiset<.+> >(( )?&)?$"), stl_synth_flags, true);
6343990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator, "libc++ std::multimap synthetic children", ConstString("^std::__1::multimap<.+> >(( )?&)?$"), stl_synth_flags, true);
635cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata
6365b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata    libcxx_category_sp->GetRegexSyntheticNavigator()->Add(RegularExpressionSP(new RegularExpression("^(std::__1::)deque<.+>(( )?&)?$")),
637f509c5ec066599a3399fced39ea36996184939e8Enrico Granata                                                          SyntheticChildrenSP(new ScriptedSyntheticChildren(stl_synth_flags,
6385b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata                                                                                                    "lldb.formatters.cpp.libcxx.stddeque_SynthProvider")));
639cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata
640cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "shared_ptr synthetic children", ConstString("^(std::__1::)shared_ptr<.+>(( )?&)?$"), stl_synth_flags, true);
641cc5d27417b9f958d596a438290a9adb17674b487Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator, "weak_ptr synthetic children", ConstString("^(std::__1::)weak_ptr<.+>(( )?&)?$"), stl_synth_flags, true);
6425b8bfab161eb889fde856b8ed9ee225fc94be2d2Enrico Granata
6438f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    stl_summary_flags.SetDontShowChildren(false);stl_summary_flags.SetSkipPointers(false);
6448f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata
6458f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::vector summary provider", ConstString("^std::__1::vector<.+>(( )?&)?$"), stl_summary_flags, true);
6468f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::list summary provider", ConstString("^std::__1::list<.+>(( )?&)?$"), stl_summary_flags, true);
6478f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::map summary provider", ConstString("^std::__1::map<.+>(( )?&)?$"), stl_summary_flags, true);
6488f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::deque summary provider", ConstString("^std::__1::deque<.+>(( )?&)?$"), stl_summary_flags, true);
6498f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::vector<bool> summary provider", ConstString("std::__1::vector<std::__1::allocator<bool> >"), stl_summary_flags);
6503990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::set summary provider", ConstString("^std::__1::set<.+>(( )?&)?$"), stl_summary_flags, true);
6513990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::multiset summary provider", ConstString("^std::__1::multiset<.+>(( )?&)?$"), stl_summary_flags, true);
6523990c278c5f4f6ce1373ee3e6d5b984883cf4318Enrico Granata    AddCXXSummary(libcxx_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider, "libc++ std::multimap summary provider", ConstString("^std::__1::multimap<.+>(( )?&)?$"), stl_summary_flags, true);
6538f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata
6548f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    stl_summary_flags.SetSkipPointers(true);
6558f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddStringSummary(libcxx_category_sp, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}", ConstString("^std::__1::shared_ptr<.+>(( )?&)?$"), stl_summary_flags, true);
6568f0f4751e12a4f8d2b6bf359ee4e0853b0d6cd23Enrico Granata    AddStringSummary(libcxx_category_sp, "{${var.__ptr_%S}} (strong=${var.count} weak=${var.weak_count})}", ConstString("^std::__1::weak_ptr<.+>(( )?&)?$"), stl_summary_flags, true);
65732d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata
65832d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxVectorIteratorSyntheticFrontEndCreator, "std::vector iterator synthetic children", ConstString("^std::__1::__wrap_iter<.+>$"), stl_synth_flags, true);
65932d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata
66032d7ee3d2969211e104a27fcfcd636f249b26559Enrico Granata    AddCXXSynthetic(libcxx_category_sp, lldb_private::formatters::LibCxxMapIteratorSyntheticFrontEndCreator, "std::map iterator synthetic children", ConstString("^std::__1::__map_iterator<.+>$"), stl_synth_flags, true);
66107bef69b1725430a383ee9babbf525145bc90b25Enrico 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);
6950c9166c1234dbe6906cd9e4df3132269e35d4b8fEnrico Granata    sys_category_sp->GetSummaryNavigator()->Add(ConstString("unsigned 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);
7128f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata
713f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32StringSummaryProvider, "char32_t * summary provider", ConstString("char32_t *"), string_flags);
71406d58b0c68d98bfef948861e722789d7c7b1172cEnrico Granata
71506d58b0c68d98bfef948861e722789d7c7b1172cEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharStringSummaryProvider, "wchar_t * summary provider", ConstString("wchar_t *"), string_flags);
716cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata
717cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16StringSummaryProvider, "unichar * summary provider", ConstString("unichar *"), string_flags);
718cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata
719cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    TypeSummaryImpl::Flags widechar_flags;
720cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    widechar_flags.SetDontShowValue(true)
721cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetSkipPointers(true)
722cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetSkipReferences(false)
723cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetCascades(true)
724cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetDontShowChildren(true)
725cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetHideItemNames(true)
726cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    .SetShowMembersOneLiner(false);
727cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata
728cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "char16_t summary provider", ConstString("char16_t"), widechar_flags);
729cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::Char32SummaryProvider, "char32_t summary provider", ConstString("char32_t"), widechar_flags);
730cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::WCharSummaryProvider, "wchar_t summary provider", ConstString("wchar_t"), widechar_flags);
731cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata
732cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata    AddCXXSummary(sys_category_sp, lldb_private::formatters::Char16SummaryProvider, "unichar summary provider", ConstString("unichar"), widechar_flags);
733cd8cd61e7280b9c050a85ba29fa4d3b20737df3aEnrico Granata
7341b84e1ba902972616a4cbd714ef4ba6c9984f6a2Jason Molenda#endif
7358f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata}
736f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata
737d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granatavoid
738d760907c1d42726fa0c8c48efa28385ed339bb94Enrico GranataFormatManager::LoadObjCFormatters()
739d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata{
740d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeSummaryImpl::Flags objc_flags;
741d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    objc_flags.SetCascades(false)
7424ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata    .SetSkipPointers(true)
7434ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata    .SetSkipReferences(true)
744d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetDontShowChildren(true)
745d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetDontShowValue(true)
746d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetShowMembersOneLiner(false)
747d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetHideItemNames(false);
74812ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata
74912ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata    TypeCategoryImpl::SharedPointer objc_category_sp = GetCategory(m_objc_category_name);
750d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
751db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata    lldb::TypeSummaryImplSP ObjC_BOOL_summary(new CXXFunctionSummaryFormat(objc_flags, lldb_private::formatters::ObjCBOOLSummaryProvider,""));
752b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata    objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL"),
753b8dc733bd264edb688129dcc3103fb5ba4c9f060Enrico Granata                                                 ObjC_BOOL_summary);
7544ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata    objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL &"),
755db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata                                                 ObjC_BOOL_summary);
7564ebd5cee6cad673b18e010f79aa8644dcf48e526Enrico Granata    objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL *"),
757db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata                                                 ObjC_BOOL_summary);
758db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata
759da5308992b04e473eb218b9bd234d0b81f5242c4Jason Molenda#ifndef LLDB_DISABLE_PYTHON
76086fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    // we need to skip pointers here since we are special casing a SEL* when retrieving its value
76186fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata    objc_flags.SetSkipPointers(true);
762f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("SEL"), objc_flags);
763f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("struct objc_selector"), objc_flags);
764f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary provider", ConstString("objc_selector"), objc_flags);
765f5545f966367811c36e2a3db2d82b1398b58c2c4Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("objc_selector *"), objc_flags);
7661f9df7804f59193fdfbba3d73bb81f99c689f486Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("SEL *"), objc_flags);
767db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata
768280b30f0315211c54ce1c34366b586e9700629f4Enrico Granata    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCClassSummaryProvider, "Class summary provider", ConstString("Class"), objc_flags);
76939ebb982b3f9de4a15744078e9c6ba231187b5dcEnrico Granata
77039ebb982b3f9de4a15744078e9c6ba231187b5dcEnrico Granata    SyntheticChildren::Flags class_synth_flags;
77139ebb982b3f9de4a15744078e9c6ba231187b5dcEnrico Granata    class_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false);
77239ebb982b3f9de4a15744078e9c6ba231187b5dcEnrico Granata
77339ebb982b3f9de4a15744078e9c6ba231187b5dcEnrico Granata    AddCXXSynthetic(objc_category_sp, lldb_private::formatters::ObjCClassSyntheticFrontEndCreator, "Class synthetic children", ConstString("Class"), class_synth_flags);
77412ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata#endif // LLDB_DISABLE_PYTHON
77586fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata
776db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata    objc_flags.SetSkipPointers(false);
7774bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata    objc_flags.SetCascades(true);
7784bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata    objc_flags.SetSkipReferences(false);
7794bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata
7804bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata    AddStringSummary (objc_category_sp,
7814bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata                      "${var.__FuncPtr%A}",
7824bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata                      ConstString("__block_literal_generic"),
7834bb4232b60650d39ef66cb600cef8399342b7d16Enrico Granata                      objc_flags);
784db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata
785d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeCategoryImpl::SharedPointer corefoundation_category_sp = GetCategory(m_corefoundation_category_name);
786d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
787e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
788e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "${var.years} years, ${var.months} months, ${var.days} days, ${var.hours} hours, ${var.minutes} minutes ${var.seconds} seconds",
789e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CFGregorianUnits"),
790e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
791e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
792e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "location=${var.location} length=${var.length}",
793e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CFRange"),
794e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
795e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
796e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(x=${var.x}, y=${var.y})",
797e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("NSPoint"),
798e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
799e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
800e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "location=${var.location}, length=${var.length}",
801e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("NSRange"),
802e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
803e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
804e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "${var.origin}, ${var.size}",
805e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("NSRect"),
806e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
807e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(corefoundation_category_sp,
808e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(${var.origin}, ${var.size}), ...",
809e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("NSRectArray"),
810e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
811e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(objc_category_sp,
812e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(width=${var.width}, height=${var.height})",
813e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("NSSize"),
814e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
815d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
816d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeCategoryImpl::SharedPointer coregraphics_category_sp = GetCategory(m_coregraphics_category_name);
817d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
818e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coregraphics_category_sp,
819e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(width=${var.width}, height=${var.height})",
820e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CGSize"),
821e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
822e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coregraphics_category_sp,
823e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(x=${var.x}, y=${var.y})",
824e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CGPoint"),
825e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
826e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coregraphics_category_sp,
827e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "origin=${var.origin} size=${var.size}",
828e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CGRect"),
829e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
830d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
831d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeCategoryImpl::SharedPointer coreservices_category_sp = GetCategory(m_coreservices_category_name);
832d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
833e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
834e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "red=${var.red} green=${var.green} blue=${var.blue}",
835e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("RGBColor"),
836e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
837e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
838e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(t=${var.top}, l=${var.left}, b=${var.bottom}, r=${var.right})",
839e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("Rect"),
840e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
841e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
842e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(v=${var.v}, h=${var.h})",
843e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("Point"),
844e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
845e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
846e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "${var.month}/${var.day}/${var.year}  ${var.hour} :${var.minute} :${var.second} dayOfWeek:${var.dayOfWeek}",
847e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("DateTimeRect *"),
848e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
849e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
850e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "${var.ld.month}/${var.ld.day}/${var.ld.year} ${var.ld.hour} :${var.ld.minute} :${var.ld.second} dayOfWeek:${var.ld.dayOfWeek}",
851e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("LongDateRect"),
852e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
853e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
854e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "(x=${var.x}, y=${var.y})",
855e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("HIPoint"),
856e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
857e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(coreservices_category_sp,
858e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "origin=${var.origin} size=${var.size}",
859e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("HIRect"),
860e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
861d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
8628f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    TypeCategoryImpl::SharedPointer appkit_category_sp = GetCategory(m_appkit_category_name);
8638f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata
8648f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    TypeSummaryImpl::Flags appkit_flags;
8658f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    appkit_flags.SetCascades(true)
8668f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetSkipPointers(false)
8678f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetSkipReferences(false)
8688f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetDontShowChildren(true)
8698f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetDontShowValue(false)
8708f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetShowMembersOneLiner(false)
8718f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata    .SetHideItemNames(false);
8728f84cfb6f46256ae98a40fd217b206f48b7345c8Enrico Granata
873f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    appkit_flags.SetDontShowChildren(false);
874f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata
8753314d6c8b6c818ebd731ab7130c335cac0eb678dJason Molenda
876f54d1459fa73ee64753a707211cb96cfc3d9dff1Jason Molenda#ifndef LLDB_DISABLE_PYTHON
877f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSArray"), appkit_flags);
878f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("NSMutableArray"), appkit_flags);
879f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayI"), appkit_flags);
880f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSArrayM"), appkit_flags);
881f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("__NSCFArray"), appkit_flags);
882f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFArrayRef"), appkit_flags);
883f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSArraySummaryProvider, "NSArray summary provider", ConstString("CFMutableArrayRef"), appkit_flags);
884f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata
8853a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSDictionary"), appkit_flags);
8863a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("NSMutableDictionary"), appkit_flags);
8873a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSCFDictionary"), appkit_flags);
8883a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryI"), appkit_flags);
8893a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<false>, "NSDictionary summary provider", ConstString("__NSDictionaryM"), appkit_flags);
8903a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFDictionaryRef"), appkit_flags);
8913a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDictionarySummaryProvider<true>, "NSDictionary summary provider", ConstString("CFMutableDictionaryRef"), appkit_flags);
8923a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata
893fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSSet summary", ConstString("NSSet"), appkit_flags);
8945c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSMutableSet summary", ConstString("NSMutableSet"), appkit_flags);
895fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFSetRef summary", ConstString("CFSetRef"), appkit_flags);
896fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<true>, "CFMutableSetRef summary", ConstString("CFMutableSetRef"), appkit_flags);
897fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSCFSet summary", ConstString("__NSCFSet"), appkit_flags);
898fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetI summary", ConstString("__NSSetI"), appkit_flags);
899fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSSetM summary", ConstString("__NSSetM"), appkit_flags);
900fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSCountedSet summary", ConstString("NSCountedSet"), appkit_flags);
9015c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSMutableSet summary", ConstString("NSMutableSet"), appkit_flags);
9025c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "NSOrderedSet summary", ConstString("NSOrderedSet"), appkit_flags);
9035c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSOrderedSetI summary", ConstString("__NSOrderedSetI"), appkit_flags);
9045c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSSetSummaryProvider<false>, "__NSOrderedSetM summary", ConstString("__NSOrderedSetM"), appkit_flags);
9055c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata
9063a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata    // AddSummary(appkit_category_sp, "${var.key%@} -> ${var.value%@}", ConstString("$_lldb_typegen_nspair"), appkit_flags);
9073a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata
908f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    appkit_flags.SetDontShowChildren(true);
909f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata
910f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayM"), ScriptedSyntheticChildren::Flags());
911f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSArrayI"), ScriptedSyntheticChildren::Flags());
912f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSArray"), ScriptedSyntheticChildren::Flags());
913f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("NSMutableArray"), ScriptedSyntheticChildren::Flags());
914f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("__NSCFArray"), ScriptedSyntheticChildren::Flags());
915fe26a2333298602bac55decfee87bc6d33b79d54Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFMutableArrayRef"), ScriptedSyntheticChildren::Flags());
916fe26a2333298602bac55decfee87bc6d33b79d54Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSArraySyntheticFrontEndCreator, "NSArray synthetic children", ConstString("CFArrayRef"), ScriptedSyntheticChildren::Flags());
917a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
918f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryM"), ScriptedSyntheticChildren::Flags());
919f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("__NSDictionaryI"), ScriptedSyntheticChildren::Flags());
920f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSDictionary"), ScriptedSyntheticChildren::Flags());
921f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("NSMutableDictionary"), ScriptedSyntheticChildren::Flags());
922f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFDictionaryRef"), ScriptedSyntheticChildren::Flags());
923f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSDictionarySyntheticFrontEndCreator, "NSDictionary synthetic children", ConstString("CFMutableDictionaryRef"), ScriptedSyntheticChildren::Flags());
9243a08fd1ab40ac76a732836ee5b1b5aa23605f669Enrico Granata
925fa3a6706b42bddfece6f5ba96d82042c6494a912Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSSet synthetic children", ConstString("NSSet"), ScriptedSyntheticChildren::Flags());
9265c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSSetI synthetic children", ConstString("__NSSetI"), ScriptedSyntheticChildren::Flags());
9275c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSSetM synthetic children", ConstString("__NSSetM"), ScriptedSyntheticChildren::Flags());
9285c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSMutableSet synthetic children", ConstString("NSMutableSet"), ScriptedSyntheticChildren::Flags());
9295c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "NSOrderedSet synthetic children", ConstString("NSOrderedSet"), ScriptedSyntheticChildren::Flags());
9305c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSOrderedSetI synthetic children", ConstString("__NSOrderedSetI"), ScriptedSyntheticChildren::Flags());
9315c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata    AddCXXSynthetic(appkit_category_sp, lldb_private::formatters::NSSetSyntheticFrontEndCreator, "__NSOrderedSetM synthetic children", ConstString("__NSOrderedSetM"), ScriptedSyntheticChildren::Flags());
9325c2cd1f89c48df277a07f73822187317ac4cbae0Enrico Granata
933b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFBagRef"), appkit_flags);
934b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("__CFBag"), appkit_flags);
935b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("const struct __CFBag"), appkit_flags);
936b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBagSummaryProvider, "CFBag summary provider", ConstString("CFMutableBagRef"), appkit_flags);
937a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
938dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("CFBinaryHeapRef"), appkit_flags);
939dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata    AddCXXSummary(appkit_category_sp,lldb_private::formatters::CFBinaryHeapSummaryProvider, "CFBinaryHeap summary provider", ConstString("__CFBinaryHeap"), appkit_flags);
940a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
941f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSString"), appkit_flags);
942f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFStringRef"), appkit_flags);
943f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("CFMutableStringRef"), appkit_flags);
944dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSMutableString"), appkit_flags);
945f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFConstantString"), appkit_flags);
946f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("__NSCFString"), appkit_flags);
947f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFConstantString"), appkit_flags);
948f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSCFString"), appkit_flags);
949f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSStringSummaryProvider, "NSString summary provider", ConstString("NSPathStore2"), appkit_flags);
950ae2ae94bd72daf435204e99a0e03ccc64470a843Enrico Granata
951dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSAttributedStringSummaryProvider, "NSAttributedString summary provider", ConstString("NSAttributedString"), appkit_flags);
952dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSMutableAttributedString"), appkit_flags);
953dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMutableAttributedStringSummaryProvider, "NSMutableAttributedString summary provider", ConstString("NSConcreteMutableAttributedString"), appkit_flags);
954dcffc1a667665936b3dd33a9861a3de9d1d35636Enrico Granata
955b70c6ef20cd49bd7b33736e7534db717ae75e96fEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSBundleSummaryProvider, "NSBundle summary provider", ConstString("NSBundle"), appkit_flags);
95612ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata
957f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSData"), appkit_flags);
958f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteData"), appkit_flags);
959f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("NSConcreteMutableData"), appkit_flags);
960f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<false>, "NSData summary provider", ConstString("__NSCFData"), appkit_flags);
961f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFDataRef"), appkit_flags);
962f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDataSummaryProvider<true>, "NSData summary provider", ConstString("CFMutableDataRef"), appkit_flags);
963a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
964dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSMachPortSummaryProvider, "NSMachPort summary provider", ConstString("NSMachPort"), appkit_flags);
965dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata
966dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSNotification"), appkit_flags);
967dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNotificationSummaryProvider, "NSNotification summary provider", ConstString("NSConcreteNotification"), appkit_flags);
968a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
969e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(appkit_category_sp, "domain: ${var._domain} - code: ${var._code}", ConstString("NSError"), appkit_flags);
970f509c5ec066599a3399fced39ea36996184939e8Enrico Granata    AddStringSummary(appkit_category_sp,"name:${var.name%S} reason:${var.reason%S}",ConstString("NSException"),appkit_flags);
971f509c5ec066599a3399fced39ea36996184939e8Enrico Granata
972f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSNumber"), appkit_flags);
973f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFBoolean"), appkit_flags);
974f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFNumber"), appkit_flags);
975f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFBoolean"), appkit_flags);
976f91e78f58692785db4daecf8461481b95827dcf2Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFNumber"), appkit_flags);
9779abbfba957db139beed19866f61599424ddcd37aEnrico Granata
9789abbfba957db139beed19866f61599424ddcd37aEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSDecimalNumber summary provider", ConstString("NSDecimalNumber"), appkit_flags);
9799abbfba957db139beed19866f61599424ddcd37aEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSHost summary provider", ConstString("NSHost"), appkit_flags);
9809abbfba957db139beed19866f61599424ddcd37aEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSTask summary provider", ConstString("NSTask"), appkit_flags);
9819abbfba957db139beed19866f61599424ddcd37aEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSValue summary provider", ConstString("NSValue"), appkit_flags);
982ea68753ef4b8cca81cf3f5aef7bbf1ebb152a832Enrico Granata
983979c4b526eb31cbed5475ec62ef10fe53cbf8c45Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("NSURL"), appkit_flags);
984979c4b526eb31cbed5475ec62ef10fe53cbf8c45Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSURLSummaryProvider, "NSURL summary provider", ConstString("CFURLRef"), appkit_flags);
985a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
986cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSDate"), appkit_flags);
987cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSDate"), appkit_flags);
988cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("__NSTaggedDate"), appkit_flags);
989cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSDateSummaryProvider, "NSDate summary provider", ConstString("NSCalendarDate"), appkit_flags);
990a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata
9915782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("NSTimeZone"), appkit_flags);
9925782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("CFTimeZoneRef"), appkit_flags);
9935782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSTimeZoneSummaryProvider, "NSTimeZone summary provider", ConstString("__NSTimeZone"), appkit_flags);
99486fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata
99583410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata    // CFAbsoluteTime is actually a double rather than a pointer to an object
99683410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata    // we do not care about the numeric value, since it is probably meaningless to users
99783410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata    appkit_flags.SetDontShowValue(true);
998cba09f60618744e2155bc97c9049fa9c797698adEnrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFAbsoluteTimeSummaryProvider, "CFAbsoluteTime summary provider", ConstString("CFAbsoluteTime"), appkit_flags);
99983410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata    appkit_flags.SetDontShowValue(false);
100083410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata
10013818e6ac2211921db522abedd43746c1de3e82b5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSIndexSet"), appkit_flags);
10023818e6ac2211921db522abedd43746c1de3e82b5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSIndexSetSummaryProvider, "NSIndexSet summary provider", ConstString("NSMutableIndexSet"), appkit_flags);
100383410e5e9e040ea5c6691f933aa9a6c4dcea4d8bEnrico Granata
1004e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(appkit_category_sp,
1005e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "@\"${var.month%d}/${var.day%d}/${var.year%d} ${var.hour%d}:${var.minute%d}:${var.second}\"",
1006e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("CFGregorianDate"),
1007e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     appkit_flags);
100886fcb16c848b7503b2d082158886359ef76f1a84Enrico Granata
10095782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFBitVectorRef"), appkit_flags);
10105782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("CFMutableBitVectorRef"), appkit_flags);
10115782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFBitVector"), appkit_flags);
10125782daebac56f3d5b8effdc4e6db7de93630b3c5Enrico Granata    AddCXXSummary(appkit_category_sp, lldb_private::formatters::CFBitVectorSummaryProvider, "CFBitVector summary provider", ConstString("__CFMutableBitVector"), appkit_flags);
101312ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata#endif // LLDB_DISABLE_PYTHON
101412ea8fbb214ffb3bb6b6c656fff69d24fa328c24Enrico Granata
1015d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeCategoryImpl::SharedPointer vectors_category_sp = GetCategory(m_vectortypes_category_name);
1016d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
1017d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    TypeSummaryImpl::Flags vector_flags;
1018d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    vector_flags.SetCascades(true)
1019d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetSkipPointers(true)
1020d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetSkipReferences(false)
1021d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetDontShowChildren(true)
1022d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetDontShowValue(false)
1023d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetShowMembersOneLiner(true)
1024d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata    .SetHideItemNames(true);
1025d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
1026e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1027e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "${var.uint128}",
1028e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("builtin_type_vec128"),
1029e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     objc_flags);
1030e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata
1031e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1032e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1033e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("float [4]"),
1034e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1035e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1036e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1037e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("int32_t [4]"),
1038e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1039e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1040e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1041e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("int16_t [8]"),
1042e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1043e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1044e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1045e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vDouble"),
1046e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1047e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1048e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1049e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vFloat"),
1050e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1051e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1052e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1053e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vSInt8"),
1054e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1055e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1056e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1057e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vSInt16"),
1058e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1059e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1060e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1061e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vSInt32"),
1062e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1063e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1064e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1065e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vUInt16"),
1066e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1067e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1068e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1069e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vUInt8"),
1070e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1071e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1072e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1073e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vUInt16"),
1074e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1075e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1076e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1077e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vUInt32"),
1078e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1079e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata    AddStringSummary(vectors_category_sp,
1080e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     "",
1081e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     ConstString("vBool32"),
1082e9101f2b27ab3f462e05dd59f4dc5b58fef81f0eEnrico Granata                     vector_flags);
1083141f8d98cb74262914d66a7af4732e8cb2d8699fGreg Clayton}
1084