1c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//===-- SWIG Interface for SBThread -----------------------------*- C++ -*-===//
2c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//
3c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//                     The LLVM Compiler Infrastructure
4c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//
5c3fba812b636dcdede81be622d557efbdc834240Johnny Chen// This file is distributed under the University of Illinois Open Source
6c3fba812b636dcdede81be622d557efbdc834240Johnny Chen// License. See LICENSE.TXT for details.
7c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//
8c3fba812b636dcdede81be622d557efbdc834240Johnny Chen//===----------------------------------------------------------------------===//
9c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
10c3fba812b636dcdede81be622d557efbdc834240Johnny Chennamespace lldb {
11c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
12c3fba812b636dcdede81be622d557efbdc834240Johnny Chen%feature("docstring",
13c3fba812b636dcdede81be622d557efbdc834240Johnny Chen"Represents a thread of execution. SBProcess contains SBThread(s).
14c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
15efbdd2280873cc87634bf4f4a37ab8b99662522aJim InghamSBThreads can be referred to by their ID, which maps to the system specific thread
16efbdd2280873cc87634bf4f4a37ab8b99662522aJim Inghamidentifier, or by IndexID.  The ID may or may not be unique depending on whether the
17efbdd2280873cc87634bf4f4a37ab8b99662522aJim Inghamsystem reuses its thread identifiers.  The IndexID is a monotonically increasing identifier
18efbdd2280873cc87634bf4f4a37ab8b99662522aJim Inghamthat will always uniquely reference a particular thread, and when that thread goes
19efbdd2280873cc87634bf4f4a37ab8b99662522aJim Inghamaway it will not be reused.
20efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham
21c3fba812b636dcdede81be622d557efbdc834240Johnny ChenSBThread supports frame iteration. For example (from test/python_api/
22c3fba812b636dcdede81be622d557efbdc834240Johnny Chenlldbutil/iter/TestLLDBIterator.py),
23c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
24c3fba812b636dcdede81be622d557efbdc834240Johnny Chen        from lldbutil import print_stacktrace
25c3fba812b636dcdede81be622d557efbdc834240Johnny Chen        stopped_due_to_breakpoint = False
26c3fba812b636dcdede81be622d557efbdc834240Johnny Chen        for thread in process:
27c3fba812b636dcdede81be622d557efbdc834240Johnny Chen            if self.TraceOn():
28c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                print_stacktrace(thread)
29c3fba812b636dcdede81be622d557efbdc834240Johnny Chen            ID = thread.GetThreadID()
30c3fba812b636dcdede81be622d557efbdc834240Johnny Chen            if thread.GetStopReason() == lldb.eStopReasonBreakpoint:
31c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                stopped_due_to_breakpoint = True
32c3fba812b636dcdede81be622d557efbdc834240Johnny Chen            for frame in thread:
33c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                self.assertTrue(frame.GetThread().GetThreadID() == ID)
34c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                if self.TraceOn():
35c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                    print frame
36c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
37c3fba812b636dcdede81be622d557efbdc834240Johnny Chen        self.assertTrue(stopped_due_to_breakpoint)
38c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
39c3fba812b636dcdede81be622d557efbdc834240Johnny ChenSee also SBProcess and SBFrame."
40c3fba812b636dcdede81be622d557efbdc834240Johnny Chen) SBThread;
41c3fba812b636dcdede81be622d557efbdc834240Johnny Chenclass SBThread
42c3fba812b636dcdede81be622d557efbdc834240Johnny Chen{
43c3fba812b636dcdede81be622d557efbdc834240Johnny Chenpublic:
44c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    SBThread ();
45c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
46c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    SBThread (const lldb::SBThread &thread);
47c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
48c3fba812b636dcdede81be622d557efbdc834240Johnny Chen   ~SBThread();
4994a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham
5094a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    static bool
5194a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    EventIsThreadEvent (const SBEvent &event);
5294a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham
5394a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    static SBFrame
5494a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    GetStackFrameFromEvent (const SBEvent &event);
5594a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham
5694a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    static SBThread
5794a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    GetThreadFromEvent (const SBEvent &event);
58c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
59c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    bool
60c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    IsValid() const;
61c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
62c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
63c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    Clear ();
64c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
65c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::StopReason
66c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetStopReason();
67c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
68c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    %feature("docstring", "
69c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Get the number of words associated with the stop reason.
70c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// See also GetStopReasonDataAtIndex().
71c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ") GetStopReasonDataCount;
72c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    size_t
73c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetStopReasonDataCount();
74c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
75c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    %feature("docstring", "
76c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    //--------------------------------------------------------------------------
77c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Get information associated with a stop reason.
78c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ///
79c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Breakpoint stop reasons will have data that consists of pairs of
80c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// breakpoint IDs followed by the breakpoint location IDs (they always come
81c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// in pairs).
82c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ///
83c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Stop Reason              Count Data Type
84c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// ======================== ===== =========================================
85c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonNone          0
86c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonTrace         0
87c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonBreakpoint    N     duple: {breakpoint id, location id}
88bcbefa8de7877c5d0674d5816cf96db48b103e6fJohnny Chen    /// eStopReasonWatchpoint    1     watchpoint id
89c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonSignal        1     unix signal number
90c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonException     N     exception data
910bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton    /// eStopReasonExec          0
92c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// eStopReasonPlanComplete  0
93c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    //--------------------------------------------------------------------------
94c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ") GetStopReasonDataAtIndex;
95c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    uint64_t
96c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetStopReasonDataAtIndex(uint32_t idx);
97c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
9865f4fb01ed41075a3efe9d2b5a337e5a8fe7f006Johnny Chen    %feature("autodoc", "
9965f4fb01ed41075a3efe9d2b5a337e5a8fe7f006Johnny Chen    Pass only an (int)length and expect to get a Python string describing the
10065f4fb01ed41075a3efe9d2b5a337e5a8fe7f006Johnny Chen    stop reason.
10165f4fb01ed41075a3efe9d2b5a337e5a8fe7f006Johnny Chen    ") GetStopDescription;
102c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    size_t
103c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetStopDescription (char *dst, size_t dst_len);
104c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
1051586d9720002e407a3a097baf302de5fa4ca9c1bJim Ingham    SBValue
1061586d9720002e407a3a097baf302de5fa4ca9c1bJim Ingham    GetStopReturnValue ();
1071586d9720002e407a3a097baf302de5fa4ca9c1bJim Ingham
108c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::tid_t
109c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetThreadID () const;
110c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
111c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    uint32_t
112c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetIndexID () const;
113c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
114c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    const char *
115c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetName () const;
116c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
117c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    const char *
118c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetQueueName() const;
119c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
120c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
121c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
122c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
123c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
124c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
125c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
126c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
127f2ca573e8dc034ecc5050a874d8f01ace0703e18Jim Ingham    StepInto (const char *target_name, lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
128f2ca573e8dc034ecc5050a874d8f01ace0703e18Jim Ingham
129f2ca573e8dc034ecc5050a874d8f01ace0703e18Jim Ingham    void
130c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepOut ();
131c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
132c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
133c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepOutOfFrame (lldb::SBFrame &frame);
134c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
135c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
136c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepInstruction(bool step_over);
137c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
138c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    SBError
139c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    StepOverUntil (lldb::SBFrame &frame,
140c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                   lldb::SBFileSpec &file_spec,
141c3fba812b636dcdede81be622d557efbdc834240Johnny Chen                   uint32_t line);
142c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
143c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    void
144c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    RunToAddress (lldb::addr_t addr);
145c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
146a17a81a1a9ff6b8d87c4a1e47dd874f6ea8a4f1dJim Ingham    SBError
147f59388aa57559d7d074613d65b88abacfd699845Jim Ingham    ReturnFromFrame (SBFrame &frame, SBValue &return_value);
148a17a81a1a9ff6b8d87c4a1e47dd874f6ea8a4f1dJim Ingham
149c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    %feature("docstring", "
150c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    //--------------------------------------------------------------------------
151c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// LLDB currently supports process centric debugging which means when any
152c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// thread in a process stops, all other threads are stopped. The Suspend()
153c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// call here tells our process to suspend a thread and not let it run when
154c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// the other threads in a process are allowed to run. So when
155c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// SBProcess::Continue() is called, any threads that aren't suspended will
156c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// be allowed to run. If any of the SBThread functions for stepping are
157c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// called (StepOver, StepInto, StepOut, StepInstruction, RunToAddres), the
158c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// thread will now be allowed to run and these funtions will simply return.
159c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ///
160c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Eventually we plan to add support for thread centric debugging where
161c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// each thread is controlled individually and each thread would broadcast
162c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// its state, but we haven't implemented this yet.
163c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ///
164c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Likewise the SBThread::Resume() call will again allow the thread to run
165c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// when the process is continued.
166c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ///
167c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// Suspend() and Resume() functions are not currently reference counted, if
168c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// anyone has the need for them to be reference counted, please let us
169c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    /// know.
170c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    //--------------------------------------------------------------------------
171c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    ") Suspend;
172c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    bool
173c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    Suspend();
174c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
175c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    bool
176c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    Resume ();
177c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
178c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    bool
179c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    IsSuspended();
180c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
1812c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor    bool
1822c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor    IsStopped();
1832c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor
184c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    uint32_t
185c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetNumFrames ();
186c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
187c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::SBFrame
188c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetFrameAtIndex (uint32_t idx);
189c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
190c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::SBFrame
191c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetSelectedFrame ();
192c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
193c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::SBFrame
194c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    SetSelectedFrame (uint32_t frame_idx);
195c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
196c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    lldb::SBProcess
197c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetProcess ();
198c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
199c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    bool
200c3fba812b636dcdede81be622d557efbdc834240Johnny Chen    GetDescription (lldb::SBStream &description) const;
2011b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
20294a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    bool
20394a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham    GetStatus (lldb::SBStream &status) const;
20494a5d0de4433dce556db59758f3d6124eb0e1a2aJim Ingham
2050765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    bool
2060765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    operator == (const lldb::SBThread &rhs) const;
2070765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata
2080765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    bool
2090765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata    operator != (const lldb::SBThread &rhs) const;
2100765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata
2111b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    %pythoncode %{
212b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton        class frames_access(object):
213b302dffacdadeef509d28133a4c66299418122f8Greg Clayton            '''A helper object that will lazily hand out frames for a thread when supplied an index.'''
214b302dffacdadeef509d28133a4c66299418122f8Greg Clayton            def __init__(self, sbthread):
215b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                self.sbthread = sbthread
216b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
217b302dffacdadeef509d28133a4c66299418122f8Greg Clayton            def __len__(self):
218b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                if self.sbthread:
2193cae38bc36877dbe1504c6fa2dedbcab71fe5780Filipe Cabecinhas                    return int(self.sbthread.GetNumFrames())
220b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                return 0
221b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
222b302dffacdadeef509d28133a4c66299418122f8Greg Clayton            def __getitem__(self, key):
223b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                if type(key) is int and key < self.sbthread.GetNumFrames():
224b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                    return self.sbthread.GetFrameAtIndex(key)
225b302dffacdadeef509d28133a4c66299418122f8Greg Clayton                return None
226b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
227b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton        def get_frames_access_object(self):
228b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton            '''An accessor function that returns a frames_access() object which allows lazy frame access from a lldb.SBThread object.'''
229b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton            return self.frames_access (self)
230b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
231394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton        def get_thread_frames(self):
232b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton            '''An accessor function that returns a list() that contains all frames in a lldb.SBThread object.'''
233394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton            frames = []
234394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton            for frame in self:
235394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton                frames.append(frame)
236394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton            return frames
237b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
2381b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["id"] = GetThreadID
2392a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: id = property(GetThreadID, None, doc='''A read only property that returns the thread ID as an integer.''')
2401b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2411b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["idx"] = GetIndexID
2422a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: idx = property(GetIndexID, None, doc='''A read only property that returns the thread index ID as an integer. Thread index ID values start at 1 and increment as threads come and go and can be used to uniquely identify threads.''')
2431b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2441b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["return_value"] = GetStopReturnValue
2452a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: return_value = property(GetStopReturnValue, None, doc='''A read only property that returns an lldb object that represents the return value from the last stop (lldb.SBValue) if we just stopped due to stepping out of a function.''')
2461b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2471b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["process"] = GetProcess
2482a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that owns this thread.''')
2491b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2501b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["num_frames"] = GetNumFrames
2512a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: num_frames = property(GetNumFrames, None, doc='''A read only property that returns the number of stack frames in this thread as an integer.''')
2521b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
253394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton        __swig_getmethods__["frames"] = get_thread_frames
2542a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: frames = property(get_thread_frames, None, doc='''A read only property that returns a list() of lldb.SBFrame objects for all frames in this thread.''')
255394da8e3d59e49ce3a02e6b287ccfc6f568c19a9Greg Clayton
256b6a5ba60e326e695ce8996b513f46dee8c3368cdGreg Clayton        __swig_getmethods__["frame"] = get_frames_access_object
2572a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: frame = property(get_frames_access_object, None, doc='''A read only property that returns an object that can be used to access frames as an array ("frame_12 = lldb.thread.frame[12]").''')
258b302dffacdadeef509d28133a4c66299418122f8Greg Clayton
2591b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["name"] = GetName
2602a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: name = property(GetName, None, doc='''A read only property that returns the name of this thread as a string.''')
2611b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2621b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["queue"] = GetQueueName
2632a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: queue = property(GetQueueName, None, doc='''A read only property that returns the dispatch queue name of this thread as a string.''')
2641b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2651b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["stop_reason"] = GetStopReason
2662a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: stop_reason = property(GetStopReason, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eStopReason") that represents the reason this thread stopped.''')
2671b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
2681b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton        __swig_getmethods__["is_suspended"] = IsSuspended
2692a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton        if _newclass: is_suspended = property(IsSuspended, None, doc='''A read only property that returns a boolean value that indicates if this thread is suspended.''')
2702c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor
2712c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor        __swig_getmethods__["is_stopped"] = IsStopped
2722c354722318f0fcad087c76f2bc0dc8db9200b4bAndrew Kaylor        if _newclass: is_stopped = property(IsStopped, None, doc='''A read only property that returns a boolean value that indicates if this thread is stopped but not exited.''')
2731b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    %}
2741b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
275c3fba812b636dcdede81be622d557efbdc834240Johnny Chen};
276c3fba812b636dcdede81be622d557efbdc834240Johnny Chen
277c3fba812b636dcdede81be622d557efbdc834240Johnny Chen} // namespace lldb
278