13cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//===-- SWIG Interface for SBBreakpoint -------------------------*- C++ -*-===//
23cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//
33cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//                     The LLVM Compiler Infrastructure
43cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//
53cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen// This file is distributed under the University of Illinois Open Source
63cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen// License. See LICENSE.TXT for details.
73cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//
83cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen//===----------------------------------------------------------------------===//
93cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
103cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chennamespace lldb {
113cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
123cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen%feature("docstring",
133cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen"Represents a logical breakpoint and its associated settings.
143cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
153cfd5e89ce6b66f271727032b36afb635287a24bJohnny ChenFor example (from test/functionalities/breakpoint/breakpoint_ignore_count/
163cfd5e89ce6b66f271727032b36afb635287a24bJohnny ChenTestBreakpointIgnoreCount.py),
173cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
183cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    def breakpoint_ignore_count_python(self):
193cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        '''Use Python APIs to set breakpoint ignore count.'''
203cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        exe = os.path.join(os.getcwd(), 'a.out')
213cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
223cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Create a target by the debugger.
233cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        target = self.dbg.CreateTarget(exe)
243cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(target, VALID_TARGET)
253cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
263cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Now create a breakpoint on main.c by name 'c'.
273cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        breakpoint = target.BreakpointCreateByName('c', 'a.out')
283cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(breakpoint and
293cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        breakpoint.GetNumLocations() == 1,
303cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        VALID_BREAKPOINT)
313cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
323cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Get the breakpoint location from breakpoint after we verified that,
333cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # indeed, it has one location.
343cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        location = breakpoint.GetLocationAtIndex(0)
353cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(location and
363cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        location.IsEnabled(),
373cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        VALID_BREAKPOINT_LOCATION)
383cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
393cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Set the ignore count on the breakpoint location.
403cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        location.SetIgnoreCount(2)
413cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(location.GetIgnoreCount() == 2,
423cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        'SetIgnoreCount() works correctly')
433cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
443cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Now launch the process, and do not stop at entry point.
453cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        process = target.LaunchSimple(None, None, os.getcwd())
463cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(process, PROCESS_IS_VALID)
473cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
483cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # Frame#0 should be on main.c:37, frame#1 should be on main.c:25, and
493cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # frame#2 should be on main.c:48.
503cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        #lldbutil.print_stacktraces(process)
513cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        from lldbutil import get_stopped_thread
523cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
533cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(thread != None, 'There should be a thread stopped due to breakpoint')
543cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        frame0 = thread.GetFrameAtIndex(0)
553cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        frame1 = thread.GetFrameAtIndex(1)
563cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        frame2 = thread.GetFrameAtIndex(2)
573cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1 and
583cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        frame1.GetLineEntry().GetLine() == self.line3 and
593cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        frame2.GetLineEntry().GetLine() == self.line4,
603cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                        STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT)
613cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
623cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        # The hit count for the breakpoint should be 3.
633cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        self.assertTrue(breakpoint.GetHitCount() == 3)
643cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
653cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        process.Continue()
663cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
67fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny ChenSBBreakpoint supports breakpoint location iteration, for example,
683cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
693cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    for bl in breakpoint:
703cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        print 'breakpoint location load addr: %s' % hex(bl.GetLoadAddress())
713cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen        print 'breakpoint location condition: %s' % hex(bl.GetCondition())
72fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen
73fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chenand rich comparion methods which allow the API program to use,
74fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen
75fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen    if aBreakpoint == bBreakpoint:
76fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen        ...
77fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen
78fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chento compare two breakpoints for equality."
79fb35e2ad9893ca53f33eb3ce190147c02d97ec87Johnny Chen) SBBreakpoint;
803cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chenclass SBBreakpoint
813cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen{
823cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chenpublic:
833cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
843cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    typedef bool (*BreakpointHitCallback) (void *baton,
853cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                                           SBProcess &process,
863cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                                           SBThread &thread,
873cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen                                           lldb::SBBreakpointLocation &location);
883cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
893cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SBBreakpoint ();
903cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
913cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SBBreakpoint (const lldb::SBBreakpoint& rhs);
923cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
933cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    ~SBBreakpoint();
943cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
953cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    break_id_t
963cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetID () const;
973cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
983cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    bool
993cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    IsValid() const;
1003cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1013cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1023cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    ClearAllBreakpointSites ();
1033cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1043cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    lldb::SBBreakpointLocation
1053cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    FindLocationByAddress (lldb::addr_t vm_addr);
1063cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1073cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    lldb::break_id_t
1083cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    FindLocationIDByAddress (lldb::addr_t vm_addr);
1093cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1103cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    lldb::SBBreakpointLocation
1113cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    FindLocationByID (lldb::break_id_t bp_loc_id);
1123cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1133cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    lldb::SBBreakpointLocation
1143cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetLocationAtIndex (uint32_t index);
1153cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1163cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1173cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetEnabled (bool enable);
1183cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1193cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    bool
1203cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    IsEnabled ();
1213fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham
1222753a024a5a314232baa579c0ada87551aa86988Jim Ingham    void
1232753a024a5a314232baa579c0ada87551aa86988Jim Ingham    SetOneShot (bool one_shot);
1242753a024a5a314232baa579c0ada87551aa86988Jim Ingham
1252753a024a5a314232baa579c0ada87551aa86988Jim Ingham    bool
1262753a024a5a314232baa579c0ada87551aa86988Jim Ingham    IsOneShot ();
1272753a024a5a314232baa579c0ada87551aa86988Jim Ingham
1283fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham    bool
1293fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham    IsInternal ();
1303cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1313cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    uint32_t
1323cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetHitCount () const;
1333cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1343cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1353cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetIgnoreCount (uint32_t count);
1363cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1373cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    uint32_t
1383cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetIgnoreCount () const;
1393cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
140a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    %feature("docstring", "
141a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    //--------------------------------------------------------------------------
142a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    /// The breakpoint stops only if the condition expression evaluates to true.
143a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    //--------------------------------------------------------------------------
144a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    ") SetCondition;
1453cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1463cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetCondition (const char *condition);
1473cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
148a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    %feature("docstring", "
149a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    //------------------------------------------------------------------
150a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    /// Get the condition expression for the breakpoint.
151a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    //------------------------------------------------------------------
152a5dd2bbf6b8cb8634f29b50a181e64759aba7ebcJohnny Chen    ") GetCondition;
1533cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    const char *
1543cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetCondition ();
1553cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1563cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1573cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetThreadID (lldb::tid_t sb_thread_id);
1583cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1593cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    lldb::tid_t
1603cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetThreadID ();
1613cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1623cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1633cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetThreadIndex (uint32_t index);
1643cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1653cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    uint32_t
1663cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetThreadIndex() const;
1673cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1683cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1693cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetThreadName (const char *thread_name);
1703cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1713cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    const char *
1723cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetThreadName () const;
1733cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1743cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1753cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetQueueName (const char *queue_name);
1763cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1773cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    const char *
1783cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetQueueName () const;
1793cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1803cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    void
1813cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    SetCallback (BreakpointHitCallback callback, void *baton);
1823cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1833cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    size_t
1843cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetNumResolvedLocations() const;
1853cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1863cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    size_t
1873cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetNumLocations() const;
1883cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1893cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    bool
1903cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetDescription (lldb::SBStream &description);
1913cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
1920765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    bool
1930765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    operator == (const lldb::SBBreakpoint& rhs);
1940765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata
1950765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    bool
1960765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    operator != (const lldb::SBBreakpoint& rhs);
1970765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata
19828e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    static bool
19928e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    EventIsBreakpointEvent (const lldb::SBEvent &event);
20028e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham
2013cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    static lldb::BreakpointEventType
2023cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetBreakpointEventTypeFromEvent (const lldb::SBEvent& event);
2033cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
2043cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    static lldb::SBBreakpoint
2053cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetBreakpointFromEvent (const lldb::SBEvent& event);
2063cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
2073cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    static lldb::SBBreakpointLocation
2083cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen    GetBreakpointLocationAtIndexFromEvent (const lldb::SBEvent& event, uint32_t loc_idx);
20928e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham
21028e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    static uint32_t
21128e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    GetNumBreakpointLocationsFromEvent (const lldb::SBEvent &event_sp);
212169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
213169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata    %pythoncode %{
214169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
215169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_getmethods__["id"] = GetID
216169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        if _newclass: id = property(GetID, None, doc='''A read only property that returns the ID of this breakpoint.''')
217169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
218169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_getmethods__["enabled"] = IsEnabled
219169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_setmethods__["enabled"] = SetEnabled
220169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        if _newclass: enabled = property(IsEnabled, SetEnabled, doc='''A read/write property that configures whether this breakpoint is enabled or not.''')
221169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
222169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_getmethods__["one_shot"] = IsOneShot
223169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_setmethods__["one_shot"] = SetOneShot
224169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        if _newclass: one_shot = property(IsOneShot, SetOneShot, doc='''A read/write property that configures whether this breakpoint is one-shot (deleted when hit) or not.''')
225169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
226169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        __swig_getmethods__["num_locations"] = GetNumLocations
227169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata        if _newclass: num_locations = property(GetNumLocations, None, doc='''A read only property that returns the count of locations of this breakpoint.''')
228169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
229169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata    %}
230169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
231169c064fd54b83b5959ee5c9f2712cd2586261abEnrico Granata
2323cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen};
2333cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen
2343cfd5e89ce6b66f271727032b36afb635287a24bJohnny Chen} // namespace lldb
235