| //===-- SWIG Interface for SBTypeCategory---------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| namespace lldb { |
| |
| %feature("docstring", |
| "Represents a category that can contain formatters for types.") SBTypeCategory; |
| |
| class SBTypeCategory |
| { |
| public: |
| |
| SBTypeCategory(); |
| |
| SBTypeCategory (const lldb::SBTypeCategory &rhs); |
| |
| ~SBTypeCategory (); |
| |
| bool |
| IsValid() const; |
| |
| explicit operator bool() const; |
| |
| bool |
| GetEnabled (); |
| |
| void |
| SetEnabled (bool); |
| |
| const char* |
| GetName(); |
| |
| lldb::LanguageType |
| GetLanguageAtIndex (uint32_t idx); |
| |
| uint32_t |
| GetNumLanguages (); |
| |
| void |
| AddLanguage (lldb::LanguageType language); |
| |
| bool |
| GetDescription (lldb::SBStream &description, |
| lldb::DescriptionLevel description_level); |
| |
| uint32_t |
| GetNumFormats (); |
| |
| uint32_t |
| GetNumSummaries (); |
| |
| uint32_t |
| GetNumFilters (); |
| |
| uint32_t |
| GetNumSynthetics (); |
| |
| lldb::SBTypeNameSpecifier |
| GetTypeNameSpecifierForFilterAtIndex (uint32_t); |
| |
| lldb::SBTypeNameSpecifier |
| GetTypeNameSpecifierForFormatAtIndex (uint32_t); |
| |
| lldb::SBTypeNameSpecifier |
| GetTypeNameSpecifierForSummaryAtIndex (uint32_t); |
| |
| lldb::SBTypeNameSpecifier |
| GetTypeNameSpecifierForSyntheticAtIndex (uint32_t); |
| |
| lldb::SBTypeFilter |
| GetFilterForType (lldb::SBTypeNameSpecifier); |
| |
| lldb::SBTypeFormat |
| GetFormatForType (lldb::SBTypeNameSpecifier); |
| |
| lldb::SBTypeSummary |
| GetSummaryForType (lldb::SBTypeNameSpecifier); |
| |
| lldb::SBTypeSynthetic |
| GetSyntheticForType (lldb::SBTypeNameSpecifier); |
| |
| lldb::SBTypeFilter |
| GetFilterAtIndex (uint32_t); |
| |
| lldb::SBTypeFormat |
| GetFormatAtIndex (uint32_t); |
| |
| lldb::SBTypeSummary |
| GetSummaryAtIndex (uint32_t); |
| |
| lldb::SBTypeSynthetic |
| GetSyntheticAtIndex (uint32_t); |
| |
| bool |
| AddTypeFormat (lldb::SBTypeNameSpecifier, |
| lldb::SBTypeFormat); |
| |
| bool |
| DeleteTypeFormat (lldb::SBTypeNameSpecifier); |
| |
| bool |
| AddTypeSummary (lldb::SBTypeNameSpecifier, |
| lldb::SBTypeSummary); |
| |
| bool |
| DeleteTypeSummary (lldb::SBTypeNameSpecifier); |
| |
| bool |
| AddTypeFilter (lldb::SBTypeNameSpecifier, |
| lldb::SBTypeFilter); |
| |
| bool |
| DeleteTypeFilter (lldb::SBTypeNameSpecifier); |
| |
| bool |
| AddTypeSynthetic (lldb::SBTypeNameSpecifier, |
| lldb::SBTypeSynthetic); |
| |
| bool |
| DeleteTypeSynthetic (lldb::SBTypeNameSpecifier); |
| |
| STRING_EXTENSION_LEVEL(SBTypeCategory, lldb::eDescriptionLevelBrief) |
| |
| #ifdef SWIGPYTHON |
| %pythoncode %{ |
| |
| class formatters_access_class(object): |
| '''A helper object that will lazily hand out formatters for a specific category.''' |
| def __init__(self, sbcategory, get_count_function, get_at_index_function, get_by_name_function): |
| self.sbcategory = sbcategory |
| self.get_count_function = get_count_function |
| self.get_at_index_function = get_at_index_function |
| self.get_by_name_function = get_by_name_function |
| self.regex_type = type(re.compile('.')) |
| |
| |
| def __len__(self): |
| if self.sbcategory and self.get_count_function: |
| return int(self.get_count_function(self.sbcategory)) |
| return 0 |
| |
| def __getitem__(self, key): |
| num_items = len(self) |
| if type(key) is int: |
| if key < num_items: |
| return self.get_at_index_function(self.sbcategory,key) |
| elif type(key) is str: |
| return self.get_by_name_function(self.sbcategory,SBTypeNameSpecifier(key)) |
| elif isinstance(key,self.regex_type): |
| return self.get_by_name_function(self.sbcategory,SBTypeNameSpecifier(key.pattern,True)) |
| else: |
| print("error: unsupported item type: %s" % type(key)) |
| return None |
| |
| def get_formats_access_object(self): |
| '''An accessor function that returns an accessor object which allows lazy format access from a lldb.SBTypeCategory object.''' |
| return self.formatters_access_class (self,self.__class__.GetNumFormats,self.__class__.GetFormatAtIndex,self.__class__.GetFormatForType) |
| |
| def get_formats_array(self): |
| '''An accessor function that returns a list() that contains all formats in a lldb.SBCategory object.''' |
| formats = [] |
| for idx in range(self.GetNumFormats()): |
| formats.append(self.GetFormatAtIndex(idx)) |
| return formats |
| |
| def get_summaries_access_object(self): |
| '''An accessor function that returns an accessor object which allows lazy summary access from a lldb.SBTypeCategory object.''' |
| return self.formatters_access_class (self,self.__class__.GetNumSummaries,self.__class__.GetSummaryAtIndex,self.__class__.GetSummaryForType) |
| |
| def get_summaries_array(self): |
| '''An accessor function that returns a list() that contains all summaries in a lldb.SBCategory object.''' |
| summaries = [] |
| for idx in range(self.GetNumSummaries()): |
| summaries.append(self.GetSummaryAtIndex(idx)) |
| return summaries |
| |
| def get_synthetics_access_object(self): |
| '''An accessor function that returns an accessor object which allows lazy synthetic children provider access from a lldb.SBTypeCategory object.''' |
| return self.formatters_access_class (self,self.__class__.GetNumSynthetics,self.__class__.GetSyntheticAtIndex,self.__class__.GetSyntheticForType) |
| |
| def get_synthetics_array(self): |
| '''An accessor function that returns a list() that contains all synthetic children providers in a lldb.SBCategory object.''' |
| synthetics = [] |
| for idx in range(self.GetNumSynthetics()): |
| synthetics.append(self.GetSyntheticAtIndex(idx)) |
| return synthetics |
| |
| def get_filters_access_object(self): |
| '''An accessor function that returns an accessor object which allows lazy filter access from a lldb.SBTypeCategory object.''' |
| return self.formatters_access_class (self,self.__class__.GetNumFilters,self.__class__.GetFilterAtIndex,self.__class__.GetFilterForType) |
| |
| def get_filters_array(self): |
| '''An accessor function that returns a list() that contains all filters in a lldb.SBCategory object.''' |
| filters = [] |
| for idx in range(self.GetNumFilters()): |
| filters.append(self.GetFilterAtIndex(idx)) |
| return filters |
| |
| formats = property(get_formats_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFormat objects contained in this category''') |
| 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.''') |
| summaries = property(get_summaries_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSummary objects contained in this category''') |
| 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.''') |
| filters = property(get_filters_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFilter objects contained in this category''') |
| 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.''') |
| synthetics = property(get_synthetics_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSynthetic objects contained in this category''') |
| 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.''') |
| num_formats = property(GetNumFormats, None) |
| num_summaries = property(GetNumSummaries, None) |
| num_filters = property(GetNumFilters, None) |
| num_synthetics = property(GetNumSynthetics, None) |
| name = property(GetName, None) |
| enabled = property(GetEnabled, SetEnabled) |
| %} |
| #endif |
| |
| }; |
| |
| |
| } // namespace lldb |
| |