blob: 84c719c6364a6e8a0c45ef9dbf55fa1f9534ec45 [file] [log] [blame]
Caroline Ticedac97f32010-09-22 23:01:29 +00001
2%extend lldb::SBAddress {
Greg Clayton81e871e2012-02-04 02:27:34 +00003 PyObject *lldb::SBAddress::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +00004 lldb::SBStream description;
5 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +00006 const char *desc = description.GetData();
7 size_t desc_len = description.GetSize();
8 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
9 --desc_len;
10 if (desc_len > 0)
11 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000012 else
13 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000014 }
15}
16%extend lldb::SBBlock {
Greg Clayton81e871e2012-02-04 02:27:34 +000017 PyObject *lldb::SBBlock::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000018 lldb::SBStream description;
19 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000020 const char *desc = description.GetData();
21 size_t desc_len = description.GetSize();
22 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
23 --desc_len;
24 if (desc_len > 0)
25 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000026 else
27 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000028 }
29}
30%extend lldb::SBBreakpoint {
Greg Clayton81e871e2012-02-04 02:27:34 +000031 PyObject *lldb::SBBreakpoint::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000032 lldb::SBStream description;
Greg Clayton05faeb72010-10-07 04:19:01 +000033 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000034 const char *desc = description.GetData();
35 size_t desc_len = description.GetSize();
36 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
37 --desc_len;
38 if (desc_len > 0)
39 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000040 else
41 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000042 }
43}
44%extend lldb::SBBreakpointLocation {
Greg Clayton81e871e2012-02-04 02:27:34 +000045 PyObject *lldb::SBBreakpointLocation::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000046 lldb::SBStream description;
Johnny Chenfc87e2d2011-04-25 20:23:05 +000047 $self->GetDescription (description, lldb::eDescriptionLevelFull);
Greg Clayton24155862012-02-01 02:30:27 +000048 const char *desc = description.GetData();
49 size_t desc_len = description.GetSize();
50 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
51 --desc_len;
52 if (desc_len > 0)
53 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000054 else
55 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000056 }
57}
58%extend lldb::SBCommandReturnObject {
Greg Clayton81e871e2012-02-04 02:27:34 +000059 PyObject *lldb::SBCommandReturnObject::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000060 lldb::SBStream description;
61 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000062 const char *desc = description.GetData();
63 size_t desc_len = description.GetSize();
64 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
65 --desc_len;
66 if (desc_len > 0)
67 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000068 else
69 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000070 }
Enrico Granata7d1f9392013-03-23 01:35:44 +000071 void lldb::SBCommandReturnObject::write (const char* str)
72 {
73 if (str)
74 $self->Printf("%s",str);
75 }
76 void lldb::SBCommandReturnObject::flush ()
77 {}
Caroline Ticedac97f32010-09-22 23:01:29 +000078}
79%extend lldb::SBCompileUnit {
Greg Clayton81e871e2012-02-04 02:27:34 +000080 PyObject *lldb::SBCompileUnit::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000081 lldb::SBStream description;
82 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000083 const char *desc = description.GetData();
84 size_t desc_len = description.GetSize();
85 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
86 --desc_len;
87 if (desc_len > 0)
88 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000089 else
90 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000091 }
92}
Enrico Granata9128ee22011-09-06 19:20:51 +000093%extend lldb::SBData {
Greg Clayton81e871e2012-02-04 02:27:34 +000094 PyObject *lldb::SBData::__str__ (){
Enrico Granata9128ee22011-09-06 19:20:51 +000095 lldb::SBStream description;
96 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000097 const char *desc = description.GetData();
98 size_t desc_len = description.GetSize();
99 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
100 --desc_len;
101 if (desc_len > 0)
102 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000103 else
104 return PyString_FromString("");
Enrico Granata9128ee22011-09-06 19:20:51 +0000105 }
106}
Caroline Ticedac97f32010-09-22 23:01:29 +0000107%extend lldb::SBDebugger {
Greg Clayton81e871e2012-02-04 02:27:34 +0000108 PyObject *lldb::SBDebugger::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000109 lldb::SBStream description;
110 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000111 const char *desc = description.GetData();
112 size_t desc_len = description.GetSize();
113 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
114 --desc_len;
115 if (desc_len > 0)
116 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000117 else
118 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000119 }
120}
Enrico Granata10de0902012-10-10 22:54:17 +0000121%extend lldb::SBDeclaration {
122 PyObject *lldb::SBDeclaration::__str__ (){
123 lldb::SBStream description;
124 $self->GetDescription (description);
125 const char *desc = description.GetData();
126 size_t desc_len = description.GetSize();
127 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
128 --desc_len;
129 if (desc_len > 0)
130 return PyString_FromStringAndSize (desc, desc_len);
131 else
132 return PyString_FromString("");
133 }
134}
Caroline Ticedac97f32010-09-22 23:01:29 +0000135%extend lldb::SBError {
Greg Clayton81e871e2012-02-04 02:27:34 +0000136 PyObject *lldb::SBError::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000137 lldb::SBStream description;
138 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000139 const char *desc = description.GetData();
140 size_t desc_len = description.GetSize();
141 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
142 --desc_len;
143 if (desc_len > 0)
144 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000145 else
146 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000147 }
148}
149%extend lldb::SBFileSpec {
Greg Clayton81e871e2012-02-04 02:27:34 +0000150 PyObject *lldb::SBFileSpec::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000151 lldb::SBStream description;
152 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000153 const char *desc = description.GetData();
154 size_t desc_len = description.GetSize();
155 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
156 --desc_len;
157 if (desc_len > 0)
158 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000159 else
160 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000161 }
162}
163%extend lldb::SBFrame {
Greg Clayton81e871e2012-02-04 02:27:34 +0000164 PyObject *lldb::SBFrame::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000165 lldb::SBStream description;
166 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000167 const char *desc = description.GetData();
168 size_t desc_len = description.GetSize();
169 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
170 --desc_len;
171 if (desc_len > 0)
172 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000173 else
174 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000175 }
176}
177%extend lldb::SBFunction {
Greg Clayton81e871e2012-02-04 02:27:34 +0000178 PyObject *lldb::SBFunction::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000179 lldb::SBStream description;
180 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000181 const char *desc = description.GetData();
182 size_t desc_len = description.GetSize();
183 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
184 --desc_len;
185 if (desc_len > 0)
186 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000187 else
188 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000189 }
190}
Greg Clayton1d273162010-10-06 03:09:58 +0000191%extend lldb::SBInstruction {
Greg Clayton81e871e2012-02-04 02:27:34 +0000192 PyObject *lldb::SBInstruction::__str__ (){
Greg Clayton1d273162010-10-06 03:09:58 +0000193 lldb::SBStream description;
194 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000195 const char *desc = description.GetData();
196 size_t desc_len = description.GetSize();
197 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
198 --desc_len;
199 if (desc_len > 0)
200 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000201 else
202 return PyString_FromString("");
Greg Clayton1d273162010-10-06 03:09:58 +0000203 }
204}
205%extend lldb::SBInstructionList {
Greg Clayton81e871e2012-02-04 02:27:34 +0000206 PyObject *lldb::SBInstructionList::__str__ (){
Greg Clayton1d273162010-10-06 03:09:58 +0000207 lldb::SBStream description;
208 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000209 const char *desc = description.GetData();
210 size_t desc_len = description.GetSize();
211 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
212 --desc_len;
213 if (desc_len > 0)
214 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000215 else
216 return PyString_FromString("");
Greg Clayton1d273162010-10-06 03:09:58 +0000217 }
218}
Caroline Ticedac97f32010-09-22 23:01:29 +0000219%extend lldb::SBLineEntry {
Greg Clayton81e871e2012-02-04 02:27:34 +0000220 PyObject *lldb::SBLineEntry::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000221 lldb::SBStream description;
222 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000223 const char *desc = description.GetData();
224 size_t desc_len = description.GetSize();
225 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
226 --desc_len;
227 if (desc_len > 0)
228 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000229 else
230 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000231 }
232}
233%extend lldb::SBModule {
Greg Clayton81e871e2012-02-04 02:27:34 +0000234 PyObject *lldb::SBModule::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000235 lldb::SBStream description;
236 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000237 const char *desc = description.GetData();
238 size_t desc_len = description.GetSize();
239 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
240 --desc_len;
241 if (desc_len > 0)
242 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000243 else
244 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000245 }
246}
247%extend lldb::SBProcess {
Greg Clayton81e871e2012-02-04 02:27:34 +0000248 PyObject *lldb::SBProcess::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000249 lldb::SBStream description;
250 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000251 const char *desc = description.GetData();
252 size_t desc_len = description.GetSize();
253 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
254 --desc_len;
255 if (desc_len > 0)
256 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000257 else
258 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000259 }
260}
Greg Claytond9dc52d2011-09-24 05:04:40 +0000261%extend lldb::SBSection {
Greg Clayton81e871e2012-02-04 02:27:34 +0000262 PyObject *lldb::SBSection::__str__ (){
Greg Claytond9dc52d2011-09-24 05:04:40 +0000263 lldb::SBStream description;
264 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000265 const char *desc = description.GetData();
266 size_t desc_len = description.GetSize();
267 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
268 --desc_len;
269 if (desc_len > 0)
270 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000271 else
272 return PyString_FromString("");
Greg Claytond9dc52d2011-09-24 05:04:40 +0000273 }
274}
Caroline Ticedac97f32010-09-22 23:01:29 +0000275%extend lldb::SBSymbol {
Greg Clayton81e871e2012-02-04 02:27:34 +0000276 PyObject *lldb::SBSymbol::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000277 lldb::SBStream description;
278 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000279 const char *desc = description.GetData();
280 size_t desc_len = description.GetSize();
281 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
282 --desc_len;
283 if (desc_len > 0)
284 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000285 else
286 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000287 }
288}
289%extend lldb::SBSymbolContext {
Greg Clayton81e871e2012-02-04 02:27:34 +0000290 PyObject *lldb::SBSymbolContext::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000291 lldb::SBStream description;
292 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000293 const char *desc = description.GetData();
294 size_t desc_len = description.GetSize();
295 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
296 --desc_len;
297 if (desc_len > 0)
298 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000299 else
300 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000301 }
302}
Greg Clayton5569e642012-02-06 01:44:54 +0000303%extend lldb::SBSymbolContextList {
304 PyObject *lldb::SBSymbolContextList::__str__ (){
305 lldb::SBStream description;
306 $self->GetDescription (description);
307 const char *desc = description.GetData();
308 size_t desc_len = description.GetSize();
309 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
310 --desc_len;
311 if (desc_len > 0)
312 return PyString_FromStringAndSize (desc, desc_len);
313 else
314 return PyString_FromString("");
315 }
316}
Caroline Ticedac97f32010-09-22 23:01:29 +0000317%extend lldb::SBTarget {
Greg Clayton81e871e2012-02-04 02:27:34 +0000318 PyObject *lldb::SBTarget::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000319 lldb::SBStream description;
Caroline Ticeceb6b132010-10-26 03:11:13 +0000320 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000321 const char *desc = description.GetData();
322 size_t desc_len = description.GetSize();
323 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
324 --desc_len;
325 if (desc_len > 0)
326 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000327 else
328 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000329 }
330}
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000331%extend lldb::SBType {
Greg Clayton81e871e2012-02-04 02:27:34 +0000332 PyObject *lldb::SBType::__str__ (){
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000333 lldb::SBStream description;
334 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000335 const char *desc = description.GetData();
336 size_t desc_len = description.GetSize();
337 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
338 --desc_len;
339 if (desc_len > 0)
340 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000341 else
342 return PyString_FromString("");
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000343 }
344}
Enrico Granata061858c2012-02-15 02:34:21 +0000345%extend lldb::SBTypeCategory {
346 PyObject *lldb::SBTypeCategory::__str__ (){
347 lldb::SBStream description;
348 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
349 const char *desc = description.GetData();
350 size_t desc_len = description.GetSize();
351 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
352 --desc_len;
353 if (desc_len > 0)
354 return PyString_FromStringAndSize (desc, desc_len);
355 else
356 return PyString_FromString("");
357 }
358}
359%extend lldb::SBTypeFilter {
360 PyObject *lldb::SBTypeFilter::__str__ (){
361 lldb::SBStream description;
362 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
363 const char *desc = description.GetData();
364 size_t desc_len = description.GetSize();
365 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
366 --desc_len;
367 if (desc_len > 0)
368 return PyString_FromStringAndSize (desc, desc_len);
369 else
370 return PyString_FromString("");
371 }
372}
373%extend lldb::SBTypeFormat {
374 PyObject *lldb::SBTypeFormat::__str__ (){
375 lldb::SBStream description;
376 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
377 const char *desc = description.GetData();
378 size_t desc_len = description.GetSize();
379 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
380 --desc_len;
381 if (desc_len > 0)
382 return PyString_FromStringAndSize (desc, desc_len);
383 else
384 return PyString_FromString("");
385 }
386}
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000387%extend lldb::SBTypeMember {
Greg Clayton81e871e2012-02-04 02:27:34 +0000388 PyObject *lldb::SBTypeMember::__str__ (){
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000389 lldb::SBStream description;
390 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000391 const char *desc = description.GetData();
392 size_t desc_len = description.GetSize();
393 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
394 --desc_len;
395 if (desc_len > 0)
396 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000397 else
398 return PyString_FromString("");
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000399 }
400}
Enrico Granata061858c2012-02-15 02:34:21 +0000401%extend lldb::SBTypeNameSpecifier {
402 PyObject *lldb::SBTypeNameSpecifier::__str__ (){
403 lldb::SBStream description;
404 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
405 const char *desc = description.GetData();
406 size_t desc_len = description.GetSize();
407 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
408 --desc_len;
409 if (desc_len > 0)
410 return PyString_FromStringAndSize (desc, desc_len);
411 else
412 return PyString_FromString("");
413 }
414}
415%extend lldb::SBTypeSummary {
416 PyObject *lldb::SBTypeSummary::__str__ (){
417 lldb::SBStream description;
418 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
419 const char *desc = description.GetData();
420 size_t desc_len = description.GetSize();
421 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
422 --desc_len;
423 if (desc_len > 0)
424 return PyString_FromStringAndSize (desc, desc_len);
425 else
426 return PyString_FromString("");
427 }
428}
429%extend lldb::SBTypeSynthetic {
430 PyObject *lldb::SBTypeSynthetic::__str__ (){
431 lldb::SBStream description;
432 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
433 const char *desc = description.GetData();
434 size_t desc_len = description.GetSize();
435 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
436 --desc_len;
437 if (desc_len > 0)
438 return PyString_FromStringAndSize (desc, desc_len);
439 else
440 return PyString_FromString("");
441 }
442}
Caroline Ticedac97f32010-09-22 23:01:29 +0000443%extend lldb::SBThread {
Greg Clayton81e871e2012-02-04 02:27:34 +0000444 PyObject *lldb::SBThread::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000445 lldb::SBStream description;
446 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000447 const char *desc = description.GetData();
448 size_t desc_len = description.GetSize();
449 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
450 --desc_len;
451 if (desc_len > 0)
452 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000453 else
454 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000455 }
456}
457%extend lldb::SBValue {
Greg Clayton81e871e2012-02-04 02:27:34 +0000458 PyObject *lldb::SBValue::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000459 lldb::SBStream description;
460 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000461 const char *desc = description.GetData();
462 size_t desc_len = description.GetSize();
463 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
464 --desc_len;
465 if (desc_len > 0)
466 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000467 else
468 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000469 }
470}
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000471%extend lldb::SBValueList {
472 PyObject *lldb::SBValueList::__repr__ (){
473 lldb::SBStream description;
474 const size_t n = $self->GetSize();
475 if (n)
476 {
477 for (size_t i=0; i<n; ++i)
478 $self->GetValueAtIndex(i).GetDescription(description);
479 }
480 else
481 {
482 description.Printf("<empty> lldb.SBValueList()");
483 }
484 const char *desc = description.GetData();
485 size_t desc_len = description.GetSize();
486 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
487 --desc_len;
488 if (desc_len > 0)
489 return PyString_FromStringAndSize (desc, desc_len);
490 return Py_None;
491 }
492}
Greg Clayton1b282f92011-10-13 18:08:26 +0000493%extend lldb::SBWatchpoint {
Greg Clayton81e871e2012-02-04 02:27:34 +0000494 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chend4dd7992011-09-27 01:19:20 +0000495 lldb::SBStream description;
496 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton24155862012-02-01 02:30:27 +0000497 const char *desc = description.GetData();
498 size_t desc_len = description.GetSize();
499 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
500 --desc_len;
501 if (desc_len > 0)
502 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000503 else
504 return PyString_FromString("");
Johnny Chend4dd7992011-09-27 01:19:20 +0000505 }
506}
Caroline Ticedac97f32010-09-22 23:01:29 +0000507
Filipe Cabecinhasc5041912012-08-25 00:29:07 +0000508
509// %extend lldb::SBDebugger {
510// // FIXME: We can't get the callback and baton
511// PyObject *lldb::SBDebugger (){
512// // Only call Py_XDECREF if we have a Python object (or NULL)
513// if (LLDBSwigPythonCallPythonLogOutputCallback == $self->GetLogOutPutCallback())
514// Py_XDECREF($self->GetCallbackBaton());
515// }
516// }
Filipe Cabecinhas6eb31e72012-08-22 13:25:10 +0000517// %extend lldb::SBInputReader {
518// // FIXME: m_callback_function is private and we have no other
519// // way to access it.
520// PyObject *lldb::SBInputReader::__del__ (){
521// // Only call Py_XDECREF if we have a Python object (or NULL)
522// if (LLDBSwigPythonCallSBInputReaderCallback == $self->m_callback_function)
523// Py_XDECREF($self->m_callback_baton);
524// }
525// }
526
Greg Clayton05e8d192012-02-01 01:46:19 +0000527%pythoncode %{
528
Greg Clayton5569e642012-02-06 01:44:54 +0000529class declaration(object):
530 '''A class that represents a source declaration location with file, line and column.'''
531 def __init__(self, file, line, col):
532 self.file = file
533 self.line = line
534 self.col = col
535
Greg Clayton05e8d192012-02-01 01:46:19 +0000536class value(object):
537 '''A class designed to wrap lldb.SBValue() objects so the resulting object
538 can be used as a variable would be in code. So if you have a Point structure
539 variable in your code in the current frame named "pt", you can initialize an instance
540 of this class with it:
541
542 pt = lldb.value(lldb.frame.FindVariable("pt"))
543 print pt
544 print pt.x
545 print pt.y
546
547 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
548 print rectangle_array[12]
549 print rectangle_array[5].origin.x'''
550 def __init__(self, sbvalue):
551 self.sbvalue = sbvalue
552
553 def __nonzero__(self):
554 return self.sbvalue.__nonzero__()
555
Greg Clayton05e8d192012-02-01 01:46:19 +0000556 def __str__(self):
557 return self.sbvalue.__str__()
558
559 def __getitem__(self, key):
560 # Allow array access if this value has children...
561 if type(key) is int:
562 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
Enrico Granata944b4c42012-10-08 17:32:55 +0000563 if type(key) is value:
Enrico Granataf75c9762012-10-08 19:01:10 +0000564 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % int(key)))
Enrico Granata944b4c42012-10-08 17:32:55 +0000565 raise TypeError("No array item of type %s" % str(type(key)))
Greg Clayton05e8d192012-02-01 01:46:19 +0000566
567 def __getattr__(self, name):
568 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
569 if child_sbvalue:
570 return value(child_sbvalue)
Enrico Granata944b4c42012-10-08 17:32:55 +0000571 raise AttributeError("Attribute '%s' is not defined" % name)
Greg Clayton05e8d192012-02-01 01:46:19 +0000572
573 def __add__(self, other):
574 return int(self) + int(other)
575
576 def __sub__(self, other):
577 return int(self) - int(other)
578
579 def __mul__(self, other):
580 return int(self) * int(other)
581
582 def __floordiv__(self, other):
583 return int(self) // int(other)
584
585 def __mod__(self, other):
586 return int(self) % int(other)
587
588 def __divmod__(self, other):
589 return int(self) % int(other)
590
591 def __pow__(self, other):
592 return int(self) ** int(other)
593
594 def __lshift__(self, other):
595 return int(self) << int(other)
596
597 def __rshift__(self, other):
598 return int(self) >> int(other)
599
600 def __and__(self, other):
601 return int(self) & int(other)
602
603 def __xor__(self, other):
604 return int(self) ^ int(other)
605
606 def __or__(self, other):
607 return int(self) | int(other)
608
609 def __div__(self, other):
610 return int(self) / int(other)
611
612 def __truediv__(self, other):
613 return int(self) / int(other)
614
615 def __iadd__(self, other):
616 result = self.__add__(other)
617 self.sbvalue.SetValueFromCString (str(result))
618 return result
619
620 def __isub__(self, other):
621 result = self.__sub__(other)
622 self.sbvalue.SetValueFromCString (str(result))
623 return result
624
625 def __imul__(self, other):
626 result = self.__mul__(other)
627 self.sbvalue.SetValueFromCString (str(result))
628 return result
629
630 def __idiv__(self, other):
631 result = self.__div__(other)
632 self.sbvalue.SetValueFromCString (str(result))
633 return result
634
635 def __itruediv__(self, other):
636 result = self.__truediv__(other)
637 self.sbvalue.SetValueFromCString (str(result))
638 return result
639
640 def __ifloordiv__(self, other):
641 result = self.__floordiv__(self, other)
642 self.sbvalue.SetValueFromCString (str(result))
643 return result
644
645 def __imod__(self, other):
646 result = self.__and__(self, other)
647 self.sbvalue.SetValueFromCString (str(result))
648 return result
649
650 def __ipow__(self, other):
651 result = self.__pow__(self, other)
652 self.sbvalue.SetValueFromCString (str(result))
653 return result
654
655 def __ipow__(self, other, modulo):
656 result = self.__pow__(self, other, modulo)
657 self.sbvalue.SetValueFromCString (str(result))
658 return result
659
660 def __ilshift__(self, other):
661 result = self.__lshift__(other)
662 self.sbvalue.SetValueFromCString (str(result))
663 return result
664
665 def __irshift__(self, other):
666 result = self.__rshift__(other)
667 self.sbvalue.SetValueFromCString (str(result))
668 return result
669
670 def __iand__(self, other):
671 result = self.__and__(self, other)
672 self.sbvalue.SetValueFromCString (str(result))
673 return result
674
675 def __ixor__(self, other):
676 result = self.__xor__(self, other)
677 self.sbvalue.SetValueFromCString (str(result))
678 return result
679
680 def __ior__(self, other):
681 result = self.__ior__(self, other)
682 self.sbvalue.SetValueFromCString (str(result))
683 return result
684
685 def __neg__(self):
686 return -int(self)
687
688 def __pos__(self):
689 return +int(self)
690
691 def __abs__(self):
692 return abs(int(self))
693
694 def __invert__(self):
695 return ~int(self)
696
697 def __complex__(self):
698 return complex (int(self))
699
700 def __int__(self):
701 return self.sbvalue.GetValueAsSigned()
702
703 def __long__(self):
704 return self.sbvalue.GetValueAsSigned()
705
706 def __float__(self):
707 return float (self.sbvalue.GetValueAsSigned())
708
709 def __oct__(self):
Greg Clayton43484c52012-02-02 00:12:47 +0000710 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +0000711
712 def __hex__(self):
Greg Clayton43484c52012-02-02 00:12:47 +0000713 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +0000714
Greg Clayton43484c52012-02-02 00:12:47 +0000715 def __eq__(self, other):
Enrico Granata944b4c42012-10-08 17:32:55 +0000716 if type(other) is int:
717 return int(self) == other
718 elif type(other) is str:
719 return str(self) == other
720 elif type(other) is value:
721 self_err = SBError()
722 other_err = SBError()
723 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
724 if self_err.fail:
725 raise ValueError("unable to extract value of self")
726 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
727 if other_err.fail:
728 raise ValueError("unable to extract value of other")
729 return self_val == other_val
730 raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
731
Greg Clayton43484c52012-02-02 00:12:47 +0000732 def __neq__(self, other):
733 return not self.__eq__(other)
Greg Clayton05e8d192012-02-01 01:46:19 +0000734%}