SBThread.h revision a66ba46379fe41036d870975c56ccc2319cb6618
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBThread.h ----------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBThread_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBThread_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1374089e10cfbb4665da128f26d78c2b4006b5f1c6Christopher Friesen#include "lldb/API/SBDefines.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
157884ab842f7f0be6c583eac2904f5763706816bcEli Friedman#include <stdio.h>
167884ab842f7f0be6c583eac2904f5763706816bcEli Friedman
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBFrame;
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBThread
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread ();
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread (const lldb::SBThread &thread);
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner   ~SBThread();
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid() const;
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3343490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton    void
3443490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton    Clear ();
3543490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::StopReason
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStopReason();
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStopDescription (char *dst, size_t dst_len);
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::tid_t
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetThreadID () const;
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetIndexID () const;
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetName () const;
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetQueueName() const;
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepOut ();
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepInstruction(bool step_over);
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    RunToAddress (lldb::addr_t addr);
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNumFrames ();
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBFrame
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetFrameAtIndex (uint32_t idx);
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBProcess
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetProcess ();
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb::SBThread &
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator = (const lldb::SBThread &rhs);
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator == (const lldb::SBThread &rhs) const;
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator != (const lldb::SBThread &rhs) const;
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    bool
927826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice    GetDescription (lldb::SBStream &description) const;
937826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice
9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpoint;
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpointLocation;
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBFrame;
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBProcess;
9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBDebugger;
10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBValue;
10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
105a66ba46379fe41036d870975c56ccc2319cb6618Greg Clayton    lldb_private::Thread *
106a66ba46379fe41036d870975c56ccc2319cb6618Greg Clayton    get ();
107a66ba46379fe41036d870975c56ccc2319cb6618Greg Clayton
10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Thread *
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->() const;
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Thread &
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator*() const;
11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Thread *
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->();
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Thread &
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator*();
12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread (const lldb::ThreadSP& lldb_object_sp);
12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetThread (const lldb::ThreadSP& lldb_object_sp);
12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Classes that inherit from Thread can see and modify these
13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13363094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb::ThreadSP m_opaque_sp;
13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // LLDB_SBThread_h_
139