1359575Sdim//===-- SWIG Interface for SBTypeCategory---------------------------*- C++ -*-===// 2359575Sdim// 3359575Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4359575Sdim// See https://llvm.org/LICENSE.txt for license information. 5359575Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6359575Sdim// 7359575Sdim//===----------------------------------------------------------------------===// 8359575Sdim 9359575Sdimnamespace lldb { 10359575Sdim 11359575Sdim %feature("docstring", 12359575Sdim "Represents a category that can contain formatters for types.") SBTypeCategory; 13359575Sdim 14359575Sdim class SBTypeCategory 15359575Sdim { 16359575Sdim public: 17359575Sdim 18359575Sdim SBTypeCategory(); 19359575Sdim 20359575Sdim SBTypeCategory (const lldb::SBTypeCategory &rhs); 21359575Sdim 22359575Sdim ~SBTypeCategory (); 23359575Sdim 24359575Sdim bool 25359575Sdim IsValid() const; 26359575Sdim 27359575Sdim explicit operator bool() const; 28359575Sdim 29359575Sdim bool 30359575Sdim GetEnabled (); 31359575Sdim 32359575Sdim void 33359575Sdim SetEnabled (bool); 34359575Sdim 35359575Sdim const char* 36359575Sdim GetName(); 37359575Sdim 38359575Sdim lldb::LanguageType 39359575Sdim GetLanguageAtIndex (uint32_t idx); 40359575Sdim 41359575Sdim uint32_t 42359575Sdim GetNumLanguages (); 43359575Sdim 44359575Sdim void 45359575Sdim AddLanguage (lldb::LanguageType language); 46359575Sdim 47359575Sdim bool 48359575Sdim GetDescription (lldb::SBStream &description, 49359575Sdim lldb::DescriptionLevel description_level); 50359575Sdim 51359575Sdim uint32_t 52359575Sdim GetNumFormats (); 53359575Sdim 54359575Sdim uint32_t 55359575Sdim GetNumSummaries (); 56359575Sdim 57359575Sdim uint32_t 58359575Sdim GetNumFilters (); 59359575Sdim 60359575Sdim uint32_t 61359575Sdim GetNumSynthetics (); 62359575Sdim 63359575Sdim lldb::SBTypeNameSpecifier 64359575Sdim GetTypeNameSpecifierForFilterAtIndex (uint32_t); 65359575Sdim 66359575Sdim lldb::SBTypeNameSpecifier 67359575Sdim GetTypeNameSpecifierForFormatAtIndex (uint32_t); 68359575Sdim 69359575Sdim lldb::SBTypeNameSpecifier 70359575Sdim GetTypeNameSpecifierForSummaryAtIndex (uint32_t); 71359575Sdim 72359575Sdim lldb::SBTypeNameSpecifier 73359575Sdim GetTypeNameSpecifierForSyntheticAtIndex (uint32_t); 74359575Sdim 75359575Sdim lldb::SBTypeFilter 76359575Sdim GetFilterForType (lldb::SBTypeNameSpecifier); 77359575Sdim 78359575Sdim lldb::SBTypeFormat 79359575Sdim GetFormatForType (lldb::SBTypeNameSpecifier); 80359575Sdim 81359575Sdim lldb::SBTypeSummary 82359575Sdim GetSummaryForType (lldb::SBTypeNameSpecifier); 83359575Sdim 84359575Sdim lldb::SBTypeSynthetic 85359575Sdim GetSyntheticForType (lldb::SBTypeNameSpecifier); 86359575Sdim 87359575Sdim lldb::SBTypeFilter 88359575Sdim GetFilterAtIndex (uint32_t); 89359575Sdim 90359575Sdim lldb::SBTypeFormat 91359575Sdim GetFormatAtIndex (uint32_t); 92359575Sdim 93359575Sdim lldb::SBTypeSummary 94359575Sdim GetSummaryAtIndex (uint32_t); 95359575Sdim 96359575Sdim lldb::SBTypeSynthetic 97359575Sdim GetSyntheticAtIndex (uint32_t); 98359575Sdim 99359575Sdim bool 100359575Sdim AddTypeFormat (lldb::SBTypeNameSpecifier, 101359575Sdim lldb::SBTypeFormat); 102359575Sdim 103359575Sdim bool 104359575Sdim DeleteTypeFormat (lldb::SBTypeNameSpecifier); 105359575Sdim 106359575Sdim bool 107359575Sdim AddTypeSummary (lldb::SBTypeNameSpecifier, 108359575Sdim lldb::SBTypeSummary); 109359575Sdim 110359575Sdim bool 111359575Sdim DeleteTypeSummary (lldb::SBTypeNameSpecifier); 112359575Sdim 113359575Sdim bool 114359575Sdim AddTypeFilter (lldb::SBTypeNameSpecifier, 115359575Sdim lldb::SBTypeFilter); 116359575Sdim 117359575Sdim bool 118359575Sdim DeleteTypeFilter (lldb::SBTypeNameSpecifier); 119359575Sdim 120359575Sdim bool 121359575Sdim AddTypeSynthetic (lldb::SBTypeNameSpecifier, 122359575Sdim lldb::SBTypeSynthetic); 123359575Sdim 124359575Sdim bool 125359575Sdim DeleteTypeSynthetic (lldb::SBTypeNameSpecifier); 126359575Sdim 127359575Sdim STRING_EXTENSION_LEVEL(SBTypeCategory, lldb::eDescriptionLevelBrief) 128359575Sdim 129359575Sdim#ifdef SWIGPYTHON 130359575Sdim %pythoncode %{ 131359575Sdim 132359575Sdim class formatters_access_class(object): 133359575Sdim '''A helper object that will lazily hand out formatters for a specific category.''' 134359575Sdim def __init__(self, sbcategory, get_count_function, get_at_index_function, get_by_name_function): 135359575Sdim self.sbcategory = sbcategory 136359575Sdim self.get_count_function = get_count_function 137359575Sdim self.get_at_index_function = get_at_index_function 138359575Sdim self.get_by_name_function = get_by_name_function 139359575Sdim self.regex_type = type(re.compile('.')) 140359575Sdim 141359575Sdim 142359575Sdim def __len__(self): 143359575Sdim if self.sbcategory and self.get_count_function: 144359575Sdim return int(self.get_count_function(self.sbcategory)) 145359575Sdim return 0 146359575Sdim 147359575Sdim def __getitem__(self, key): 148359575Sdim num_items = len(self) 149359575Sdim if type(key) is int: 150359575Sdim if key < num_items: 151359575Sdim return self.get_at_index_function(self.sbcategory,key) 152359575Sdim elif type(key) is str: 153359575Sdim return self.get_by_name_function(self.sbcategory,SBTypeNameSpecifier(key)) 154359575Sdim elif isinstance(key,self.regex_type): 155359575Sdim return self.get_by_name_function(self.sbcategory,SBTypeNameSpecifier(key.pattern,True)) 156359575Sdim else: 157359575Sdim print("error: unsupported item type: %s" % type(key)) 158359575Sdim return None 159359575Sdim 160359575Sdim def get_formats_access_object(self): 161359575Sdim '''An accessor function that returns an accessor object which allows lazy format access from a lldb.SBTypeCategory object.''' 162359575Sdim return self.formatters_access_class (self,self.__class__.GetNumFormats,self.__class__.GetFormatAtIndex,self.__class__.GetFormatForType) 163359575Sdim 164359575Sdim def get_formats_array(self): 165359575Sdim '''An accessor function that returns a list() that contains all formats in a lldb.SBCategory object.''' 166359575Sdim formats = [] 167359575Sdim for idx in range(self.GetNumFormats()): 168359575Sdim formats.append(self.GetFormatAtIndex(idx)) 169359575Sdim return formats 170359575Sdim 171359575Sdim def get_summaries_access_object(self): 172359575Sdim '''An accessor function that returns an accessor object which allows lazy summary access from a lldb.SBTypeCategory object.''' 173359575Sdim return self.formatters_access_class (self,self.__class__.GetNumSummaries,self.__class__.GetSummaryAtIndex,self.__class__.GetSummaryForType) 174359575Sdim 175359575Sdim def get_summaries_array(self): 176359575Sdim '''An accessor function that returns a list() that contains all summaries in a lldb.SBCategory object.''' 177359575Sdim summaries = [] 178359575Sdim for idx in range(self.GetNumSummaries()): 179359575Sdim summaries.append(self.GetSummaryAtIndex(idx)) 180359575Sdim return summaries 181359575Sdim 182359575Sdim def get_synthetics_access_object(self): 183359575Sdim '''An accessor function that returns an accessor object which allows lazy synthetic children provider access from a lldb.SBTypeCategory object.''' 184359575Sdim return self.formatters_access_class (self,self.__class__.GetNumSynthetics,self.__class__.GetSyntheticAtIndex,self.__class__.GetSyntheticForType) 185359575Sdim 186359575Sdim def get_synthetics_array(self): 187359575Sdim '''An accessor function that returns a list() that contains all synthetic children providers in a lldb.SBCategory object.''' 188359575Sdim synthetics = [] 189359575Sdim for idx in range(self.GetNumSynthetics()): 190359575Sdim synthetics.append(self.GetSyntheticAtIndex(idx)) 191359575Sdim return synthetics 192359575Sdim 193359575Sdim def get_filters_access_object(self): 194359575Sdim '''An accessor function that returns an accessor object which allows lazy filter access from a lldb.SBTypeCategory object.''' 195359575Sdim return self.formatters_access_class (self,self.__class__.GetNumFilters,self.__class__.GetFilterAtIndex,self.__class__.GetFilterForType) 196359575Sdim 197359575Sdim def get_filters_array(self): 198359575Sdim '''An accessor function that returns a list() that contains all filters in a lldb.SBCategory object.''' 199359575Sdim filters = [] 200359575Sdim for idx in range(self.GetNumFilters()): 201359575Sdim filters.append(self.GetFilterAtIndex(idx)) 202359575Sdim return filters 203359575Sdim 204359575Sdim formats = property(get_formats_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFormat objects contained in this category''') 205359575Sdim format = property(get_formats_access_object, None, doc=r'''A read only property that returns an object that you can use to look for formats by index or type name.''') 206359575Sdim summaries = property(get_summaries_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSummary objects contained in this category''') 207359575Sdim summary = property(get_summaries_access_object, None, doc=r'''A read only property that returns an object that you can use to look for summaries by index or type name or regular expression.''') 208359575Sdim filters = property(get_filters_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFilter objects contained in this category''') 209359575Sdim filter = property(get_filters_access_object, None, doc=r'''A read only property that returns an object that you can use to look for filters by index or type name or regular expression.''') 210359575Sdim synthetics = property(get_synthetics_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSynthetic objects contained in this category''') 211359575Sdim synthetic = property(get_synthetics_access_object, None, doc=r'''A read only property that returns an object that you can use to look for synthetic children provider by index or type name or regular expression.''') 212359575Sdim num_formats = property(GetNumFormats, None) 213359575Sdim num_summaries = property(GetNumSummaries, None) 214359575Sdim num_filters = property(GetNumFilters, None) 215359575Sdim num_synthetics = property(GetNumSynthetics, None) 216359575Sdim name = property(GetName, None) 217359575Sdim enabled = property(GetEnabled, SetEnabled) 218359575Sdim %} 219359575Sdim#endif 220359575Sdim 221359575Sdim }; 222359575Sdim 223359575Sdim 224359575Sdim} // namespace lldb 225359575Sdim 226