mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-21 10:42:35 +00:00

Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926
56 lines
2.7 KiB
OpenEdge ABL
56 lines
2.7 KiB
OpenEdge ABL
STRING_EXTENSION_OUTSIDE(SBBreakpoint)
|
|
|
|
%extend lldb::SBBreakpoint {
|
|
#ifdef SWIGPYTHON
|
|
%pythoncode %{
|
|
|
|
class locations_access(object):
|
|
'''A helper object that will lazily hand out locations for a breakpoint when supplied an index.'''
|
|
def __init__(self, sbbreakpoint):
|
|
self.sbbreakpoint = sbbreakpoint
|
|
|
|
def __len__(self):
|
|
if self.sbbreakpoint:
|
|
return int(self.sbbreakpoint.GetNumLocations())
|
|
return 0
|
|
|
|
def __getitem__(self, key):
|
|
if isinstance(key, int):
|
|
count = len(self)
|
|
if -count <= key < count:
|
|
key %= count
|
|
return self.sbbreakpoint.GetLocationAtIndex(key)
|
|
return None
|
|
|
|
def get_locations_access_object(self):
|
|
'''An accessor function that returns a locations_access() object which allows lazy location access from a lldb.SBBreakpoint object.'''
|
|
return self.locations_access (self)
|
|
|
|
def get_breakpoint_location_list(self):
|
|
'''An accessor function that returns a list() that contains all locations in a lldb.SBBreakpoint object.'''
|
|
locations = []
|
|
accessor = self.get_locations_access_object()
|
|
for idx in range(len(accessor)):
|
|
locations.append(accessor[idx])
|
|
return locations
|
|
|
|
def __iter__(self):
|
|
'''Iterate over all breakpoint locations in a lldb.SBBreakpoint
|
|
object.'''
|
|
return lldb_iter(self, 'GetNumLocations', 'GetLocationAtIndex')
|
|
|
|
def __len__(self):
|
|
'''Return the number of breakpoint locations in a lldb.SBBreakpoint
|
|
object.'''
|
|
return self.GetNumLocations()
|
|
|
|
locations = property(get_breakpoint_location_list, None, doc='''A read only property that returns a list() of lldb.SBBreakpointLocation objects for this breakpoint.''')
|
|
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]).''')
|
|
id = property(GetID, None, doc='''A read only property that returns the ID of this breakpoint.''')
|
|
enabled = property(IsEnabled, SetEnabled, doc='''A read/write property that configures whether this breakpoint is enabled or not.''')
|
|
one_shot = property(IsOneShot, SetOneShot, doc='''A read/write property that configures whether this breakpoint is one-shot (deleted when hit) or not.''')
|
|
num_locations = property(GetNumLocations, None, doc='''A read only property that returns the count of locations of this breakpoint.''')
|
|
%}
|
|
#endif
|
|
}
|