1STRING_EXTENSION_OUTSIDE(SBBreakpoint)
2
3%extend lldb::SBBreakpoint {
4#ifdef SWIGPYTHON
5    %pythoncode %{
6
7        class locations_access(object):
8            '''A helper object that will lazily hand out locations for a breakpoint when supplied an index.'''
9            def __init__(self, sbbreakpoint):
10                self.sbbreakpoint = sbbreakpoint
11
12            def __len__(self):
13                if self.sbbreakpoint:
14                    return int(self.sbbreakpoint.GetNumLocations())
15                return 0
16
17            def __getitem__(self, key):
18                if isinstance(key, int):
19                    count = len(self)
20                    if -count <= key < count:
21                        key %= count
22                        return self.sbbreakpoint.GetLocationAtIndex(key)
23                return None
24
25        def get_locations_access_object(self):
26            '''An accessor function that returns a locations_access() object which allows lazy location access from a lldb.SBBreakpoint object.'''
27            return self.locations_access (self)
28
29        def get_breakpoint_location_list(self):
30            '''An accessor function that returns a list() that contains all locations in a lldb.SBBreakpoint object.'''
31            locations = []
32            accessor = self.get_locations_access_object()
33            for idx in range(len(accessor)):
34                locations.append(accessor[idx])
35            return locations
36
37        def __iter__(self):
38            '''Iterate over all breakpoint locations in a lldb.SBBreakpoint
39            object.'''
40            return lldb_iter(self, 'GetNumLocations', 'GetLocationAtIndex')
41
42        def __len__(self):
43            '''Return the number of breakpoint locations in a lldb.SBBreakpoint
44            object.'''
45            return self.GetNumLocations()
46
47        locations = property(get_breakpoint_location_list, None, doc='''A read only property that returns a list() of lldb.SBBreakpointLocation objects for this breakpoint.''')
48        location = property(get_locations_access_object, None, doc='''A read only property that returns an object that can access locations by index (not location ID) (location = bkpt.location[12]).''')
49        id = property(GetID, None, doc='''A read only property that returns the ID of this breakpoint.''')
50        enabled = property(IsEnabled, SetEnabled, doc='''A read/write property that configures whether this breakpoint is enabled or not.''')
51        one_shot = property(IsOneShot, SetOneShot, doc='''A read/write property that configures whether this breakpoint is one-shot (deleted when hit) or not.''')
52        num_locations = property(GetNumLocations, None, doc='''A read only property that returns the count of locations of this breakpoint.''')
53    %}
54#endif
55}
56