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