SBProcess.h revision 60a544f23362d4f2fbe1e68b9c5340aa5e11302c
1//===-- SBProcess.h ---------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBProcess_h_
11#define LLDB_SBProcess_h_
12
13#include "lldb/API/SBDefines.h"
14#include "lldb/API/SBError.h"
15#include "lldb/API/SBTarget.h"
16#include <stdio.h>
17
18namespace lldb {
19
20class SBEvent;
21
22class SBProcess
23{
24public:
25    //------------------------------------------------------------------
26    /// Broadcaster event bits definitions.
27    //------------------------------------------------------------------
28    enum
29    {
30        eBroadcastBitStateChanged   = (1 << 0),
31        eBroadcastBitInterrupt      = (1 << 1),
32        eBroadcastBitSTDOUT         = (1 << 2),
33        eBroadcastBitSTDERR         = (1 << 3)
34    };
35
36    SBProcess ();
37
38    SBProcess (const lldb::SBProcess& rhs);
39
40#ifndef SWIG
41    const lldb::SBProcess&
42    operator = (const lldb::SBProcess& rhs);
43#endif
44
45    ~SBProcess();
46
47    void
48    Clear ();
49
50    bool
51    IsValid() const;
52
53    lldb::SBTarget
54    GetTarget() const;
55
56    lldb::ByteOrder
57    GetByteOrder() const;
58
59    size_t
60    PutSTDIN (const char *src, size_t src_len);
61
62    size_t
63    GetSTDOUT (char *dst, size_t dst_len) const;
64
65    size_t
66    GetSTDERR (char *dst, size_t dst_len) const;
67
68    void
69    ReportEventState (const lldb::SBEvent &event, FILE *out) const;
70
71    void
72    AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
73
74    //------------------------------------------------------------------
75    // Thread related functions
76    //------------------------------------------------------------------
77    uint32_t
78    GetNumThreads ();
79
80    lldb::SBThread
81    GetThreadAtIndex (size_t index);
82
83    lldb::SBThread
84    GetThreadByID (lldb::tid_t sb_thread_id);
85
86    lldb::SBThread
87    GetSelectedThread () const;
88
89    bool
90    SetSelectedThread (const lldb::SBThread &thread);
91
92    bool
93    SetSelectedThreadByID (uint32_t tid);
94
95    //------------------------------------------------------------------
96    // Stepping related functions
97    //------------------------------------------------------------------
98
99    lldb::StateType
100    GetState ();
101
102    int
103    GetExitStatus ();
104
105    const char *
106    GetExitDescription ();
107
108    lldb::pid_t
109    GetProcessID ();
110
111    uint32_t
112    GetAddressByteSize() const;
113
114    lldb::SBError
115    Destroy ();
116
117    lldb::SBError
118    Continue ();
119
120    lldb::SBError
121    Stop ();
122
123    lldb::SBError
124    Kill ();
125
126    lldb::SBError
127    Detach ();
128
129    lldb::SBError
130    Signal (int signal);
131
132    size_t
133    ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
134
135    size_t
136    WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error);
137
138    // Events
139    static lldb::StateType
140    GetStateFromEvent (const lldb::SBEvent &event);
141
142    static bool
143    GetRestartedFromEvent (const lldb::SBEvent &event);
144
145    static lldb::SBProcess
146    GetProcessFromEvent (const lldb::SBEvent &event);
147
148    lldb::SBBroadcaster
149    GetBroadcaster () const;
150
151    bool
152    GetDescription (lldb::SBStream &description);
153
154    uint32_t
155    LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error);
156
157    lldb::SBError
158    UnloadImage (uint32_t image_token);
159
160protected:
161    friend class SBAddress;
162    friend class SBBreakpoint;
163    friend class SBBreakpointLocation;
164    friend class SBCommandInterpreter;
165    friend class SBDebugger;
166    friend class SBFunction;
167    friend class SBTarget;
168    friend class SBThread;
169    friend class SBValue;
170
171#ifndef SWIG
172
173    lldb_private::Process *
174    operator->() const;
175
176    // Mimic shared pointer...
177    lldb_private::Process *
178    get() const;
179
180#endif
181
182
183    SBProcess (const lldb::ProcessSP &process_sp);
184
185    void
186    SetProcess (const lldb::ProcessSP &process_sp);
187
188    lldb::ProcessSP m_opaque_sp;
189};
190
191}  // namespace lldb
192
193#endif  // LLDB_SBProcess_h_
194