blob: 89ad1b29e1c5215ca54c20ee7ddb188fd4f0e334 [file] [log] [blame]
Caroline Ticee49ec182010-09-22 23:01:29 +00001
2%extend lldb::SBAddress {
Greg Clayton0a19a1b2012-02-04 02:27:34 +00003 PyObject *lldb::SBAddress::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +00004 lldb::SBStream description;
5 $self->GetDescription (description);
Greg Clayton394da8e2012-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 Clayton0a19a1b2012-02-04 02:27:34 +000012 else
13 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000014 }
15}
16%extend lldb::SBBlock {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000017 PyObject *lldb::SBBlock::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000018 lldb::SBStream description;
19 $self->GetDescription (description);
Greg Clayton394da8e2012-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 Clayton0a19a1b2012-02-04 02:27:34 +000026 else
27 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000028 }
29}
30%extend lldb::SBBreakpoint {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000031 PyObject *lldb::SBBreakpoint::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000032 lldb::SBStream description;
Greg Claytond8c62532010-10-07 04:19:01 +000033 $self->GetDescription (description);
Greg Clayton394da8e2012-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 Clayton0a19a1b2012-02-04 02:27:34 +000040 else
41 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000042 }
43}
44%extend lldb::SBBreakpointLocation {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000045 PyObject *lldb::SBBreakpointLocation::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000046 lldb::SBStream description;
Johnny Chenbdc36bd2011-04-25 20:23:05 +000047 $self->GetDescription (description, lldb::eDescriptionLevelFull);
Greg Clayton394da8e2012-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 Clayton0a19a1b2012-02-04 02:27:34 +000054 else
55 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000056 }
57}
58%extend lldb::SBCommandReturnObject {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000059 PyObject *lldb::SBCommandReturnObject::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000060 lldb::SBStream description;
61 $self->GetDescription (description);
Greg Clayton394da8e2012-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 Clayton0a19a1b2012-02-04 02:27:34 +000068 else
69 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000070 }
71}
72%extend lldb::SBCompileUnit {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000073 PyObject *lldb::SBCompileUnit::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000074 lldb::SBStream description;
75 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000076 const char *desc = description.GetData();
77 size_t desc_len = description.GetSize();
78 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
79 --desc_len;
80 if (desc_len > 0)
81 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000082 else
83 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000084 }
85}
Enrico Granata91544802011-09-06 19:20:51 +000086%extend lldb::SBData {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000087 PyObject *lldb::SBData::__str__ (){
Enrico Granata91544802011-09-06 19:20:51 +000088 lldb::SBStream description;
89 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000090 const char *desc = description.GetData();
91 size_t desc_len = description.GetSize();
92 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
93 --desc_len;
94 if (desc_len > 0)
95 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000096 else
97 return PyString_FromString("");
Enrico Granata91544802011-09-06 19:20:51 +000098 }
99}
Caroline Ticee49ec182010-09-22 23:01:29 +0000100%extend lldb::SBDebugger {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000101 PyObject *lldb::SBDebugger::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000102 lldb::SBStream description;
103 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000104 const char *desc = description.GetData();
105 size_t desc_len = description.GetSize();
106 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
107 --desc_len;
108 if (desc_len > 0)
109 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000110 else
111 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000112 }
113}
Enrico Granata49306142012-10-10 22:54:17 +0000114%extend lldb::SBDeclaration {
115 PyObject *lldb::SBDeclaration::__str__ (){
116 lldb::SBStream description;
117 $self->GetDescription (description);
118 const char *desc = description.GetData();
119 size_t desc_len = description.GetSize();
120 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
121 --desc_len;
122 if (desc_len > 0)
123 return PyString_FromStringAndSize (desc, desc_len);
124 else
125 return PyString_FromString("");
126 }
127}
Caroline Ticee49ec182010-09-22 23:01:29 +0000128%extend lldb::SBError {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000129 PyObject *lldb::SBError::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000130 lldb::SBStream description;
131 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000132 const char *desc = description.GetData();
133 size_t desc_len = description.GetSize();
134 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
135 --desc_len;
136 if (desc_len > 0)
137 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000138 else
139 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000140 }
141}
142%extend lldb::SBFileSpec {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000143 PyObject *lldb::SBFileSpec::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000144 lldb::SBStream description;
145 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000146 const char *desc = description.GetData();
147 size_t desc_len = description.GetSize();
148 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
149 --desc_len;
150 if (desc_len > 0)
151 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000152 else
153 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000154 }
155}
156%extend lldb::SBFrame {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000157 PyObject *lldb::SBFrame::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000158 lldb::SBStream description;
159 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000160 const char *desc = description.GetData();
161 size_t desc_len = description.GetSize();
162 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
163 --desc_len;
164 if (desc_len > 0)
165 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000166 else
167 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000168 }
169}
170%extend lldb::SBFunction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000171 PyObject *lldb::SBFunction::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000172 lldb::SBStream description;
173 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000174 const char *desc = description.GetData();
175 size_t desc_len = description.GetSize();
176 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
177 --desc_len;
178 if (desc_len > 0)
179 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000180 else
181 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000182 }
183}
Greg Clayton5c4c7462010-10-06 03:09:58 +0000184%extend lldb::SBInstruction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000185 PyObject *lldb::SBInstruction::__str__ (){
Greg Clayton5c4c7462010-10-06 03:09:58 +0000186 lldb::SBStream description;
187 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000188 const char *desc = description.GetData();
189 size_t desc_len = description.GetSize();
190 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
191 --desc_len;
192 if (desc_len > 0)
193 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000194 else
195 return PyString_FromString("");
Greg Clayton5c4c7462010-10-06 03:09:58 +0000196 }
197}
198%extend lldb::SBInstructionList {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000199 PyObject *lldb::SBInstructionList::__str__ (){
Greg Clayton5c4c7462010-10-06 03:09:58 +0000200 lldb::SBStream description;
201 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000202 const char *desc = description.GetData();
203 size_t desc_len = description.GetSize();
204 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
205 --desc_len;
206 if (desc_len > 0)
207 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000208 else
209 return PyString_FromString("");
Greg Clayton5c4c7462010-10-06 03:09:58 +0000210 }
211}
Caroline Ticee49ec182010-09-22 23:01:29 +0000212%extend lldb::SBLineEntry {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000213 PyObject *lldb::SBLineEntry::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000214 lldb::SBStream description;
215 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000216 const char *desc = description.GetData();
217 size_t desc_len = description.GetSize();
218 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
219 --desc_len;
220 if (desc_len > 0)
221 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000222 else
223 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000224 }
225}
226%extend lldb::SBModule {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000227 PyObject *lldb::SBModule::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000228 lldb::SBStream description;
229 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000230 const char *desc = description.GetData();
231 size_t desc_len = description.GetSize();
232 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
233 --desc_len;
234 if (desc_len > 0)
235 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000236 else
237 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000238 }
239}
240%extend lldb::SBProcess {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000241 PyObject *lldb::SBProcess::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000242 lldb::SBStream description;
243 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000244 const char *desc = description.GetData();
245 size_t desc_len = description.GetSize();
246 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
247 --desc_len;
248 if (desc_len > 0)
249 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000250 else
251 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000252 }
253}
Greg Clayton15ef51e2011-09-24 05:04:40 +0000254%extend lldb::SBSection {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000255 PyObject *lldb::SBSection::__str__ (){
Greg Clayton15ef51e2011-09-24 05:04:40 +0000256 lldb::SBStream description;
257 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000258 const char *desc = description.GetData();
259 size_t desc_len = description.GetSize();
260 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
261 --desc_len;
262 if (desc_len > 0)
263 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000264 else
265 return PyString_FromString("");
Greg Clayton15ef51e2011-09-24 05:04:40 +0000266 }
267}
Caroline Ticee49ec182010-09-22 23:01:29 +0000268%extend lldb::SBSymbol {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000269 PyObject *lldb::SBSymbol::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000270 lldb::SBStream description;
271 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000272 const char *desc = description.GetData();
273 size_t desc_len = description.GetSize();
274 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
275 --desc_len;
276 if (desc_len > 0)
277 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000278 else
279 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000280 }
281}
282%extend lldb::SBSymbolContext {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000283 PyObject *lldb::SBSymbolContext::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000284 lldb::SBStream description;
285 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000286 const char *desc = description.GetData();
287 size_t desc_len = description.GetSize();
288 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
289 --desc_len;
290 if (desc_len > 0)
291 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000292 else
293 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000294 }
295}
Greg Clayton7dd5c512012-02-06 01:44:54 +0000296%extend lldb::SBSymbolContextList {
297 PyObject *lldb::SBSymbolContextList::__str__ (){
298 lldb::SBStream description;
299 $self->GetDescription (description);
300 const char *desc = description.GetData();
301 size_t desc_len = description.GetSize();
302 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
303 --desc_len;
304 if (desc_len > 0)
305 return PyString_FromStringAndSize (desc, desc_len);
306 else
307 return PyString_FromString("");
308 }
309}
Caroline Ticee49ec182010-09-22 23:01:29 +0000310%extend lldb::SBTarget {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000311 PyObject *lldb::SBTarget::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000312 lldb::SBStream description;
Caroline Tice7826c882010-10-26 03:11:13 +0000313 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000314 const char *desc = description.GetData();
315 size_t desc_len = description.GetSize();
316 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
317 --desc_len;
318 if (desc_len > 0)
319 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000320 else
321 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000322 }
323}
Greg Clayton96154be2011-11-13 06:57:31 +0000324%extend lldb::SBType {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000325 PyObject *lldb::SBType::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000326 lldb::SBStream description;
327 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000328 const char *desc = description.GetData();
329 size_t desc_len = description.GetSize();
330 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
331 --desc_len;
332 if (desc_len > 0)
333 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000334 else
335 return PyString_FromString("");
Greg Clayton96154be2011-11-13 06:57:31 +0000336 }
337}
Enrico Granata16376ed2012-02-15 02:34:21 +0000338%extend lldb::SBTypeCategory {
339 PyObject *lldb::SBTypeCategory::__str__ (){
340 lldb::SBStream description;
341 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
342 const char *desc = description.GetData();
343 size_t desc_len = description.GetSize();
344 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
345 --desc_len;
346 if (desc_len > 0)
347 return PyString_FromStringAndSize (desc, desc_len);
348 else
349 return PyString_FromString("");
350 }
351}
352%extend lldb::SBTypeFilter {
353 PyObject *lldb::SBTypeFilter::__str__ (){
354 lldb::SBStream description;
355 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
356 const char *desc = description.GetData();
357 size_t desc_len = description.GetSize();
358 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
359 --desc_len;
360 if (desc_len > 0)
361 return PyString_FromStringAndSize (desc, desc_len);
362 else
363 return PyString_FromString("");
364 }
365}
366%extend lldb::SBTypeFormat {
367 PyObject *lldb::SBTypeFormat::__str__ (){
368 lldb::SBStream description;
369 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
370 const char *desc = description.GetData();
371 size_t desc_len = description.GetSize();
372 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
373 --desc_len;
374 if (desc_len > 0)
375 return PyString_FromStringAndSize (desc, desc_len);
376 else
377 return PyString_FromString("");
378 }
379}
Greg Clayton96154be2011-11-13 06:57:31 +0000380%extend lldb::SBTypeMember {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000381 PyObject *lldb::SBTypeMember::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000382 lldb::SBStream description;
383 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000384 const char *desc = description.GetData();
385 size_t desc_len = description.GetSize();
386 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
387 --desc_len;
388 if (desc_len > 0)
389 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000390 else
391 return PyString_FromString("");
Greg Clayton96154be2011-11-13 06:57:31 +0000392 }
393}
Enrico Granata16376ed2012-02-15 02:34:21 +0000394%extend lldb::SBTypeNameSpecifier {
395 PyObject *lldb::SBTypeNameSpecifier::__str__ (){
396 lldb::SBStream description;
397 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
398 const char *desc = description.GetData();
399 size_t desc_len = description.GetSize();
400 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
401 --desc_len;
402 if (desc_len > 0)
403 return PyString_FromStringAndSize (desc, desc_len);
404 else
405 return PyString_FromString("");
406 }
407}
408%extend lldb::SBTypeSummary {
409 PyObject *lldb::SBTypeSummary::__str__ (){
410 lldb::SBStream description;
411 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
412 const char *desc = description.GetData();
413 size_t desc_len = description.GetSize();
414 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
415 --desc_len;
416 if (desc_len > 0)
417 return PyString_FromStringAndSize (desc, desc_len);
418 else
419 return PyString_FromString("");
420 }
421}
422%extend lldb::SBTypeSynthetic {
423 PyObject *lldb::SBTypeSynthetic::__str__ (){
424 lldb::SBStream description;
425 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
426 const char *desc = description.GetData();
427 size_t desc_len = description.GetSize();
428 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
429 --desc_len;
430 if (desc_len > 0)
431 return PyString_FromStringAndSize (desc, desc_len);
432 else
433 return PyString_FromString("");
434 }
435}
Caroline Ticee49ec182010-09-22 23:01:29 +0000436%extend lldb::SBThread {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000437 PyObject *lldb::SBThread::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000438 lldb::SBStream description;
439 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000440 const char *desc = description.GetData();
441 size_t desc_len = description.GetSize();
442 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
443 --desc_len;
444 if (desc_len > 0)
445 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000446 else
447 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000448 }
449}
450%extend lldb::SBValue {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000451 PyObject *lldb::SBValue::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000452 lldb::SBStream description;
453 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000454 const char *desc = description.GetData();
455 size_t desc_len = description.GetSize();
456 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
457 --desc_len;
458 if (desc_len > 0)
459 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000460 else
461 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000462 }
463}
Greg Claytond62b9c12012-02-03 07:02:37 +0000464%extend lldb::SBValueList {
465 PyObject *lldb::SBValueList::__repr__ (){
466 lldb::SBStream description;
467 const size_t n = $self->GetSize();
468 if (n)
469 {
470 for (size_t i=0; i<n; ++i)
471 $self->GetValueAtIndex(i).GetDescription(description);
472 }
473 else
474 {
475 description.Printf("<empty> lldb.SBValueList()");
476 }
477 const char *desc = description.GetData();
478 size_t desc_len = description.GetSize();
479 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
480 --desc_len;
481 if (desc_len > 0)
482 return PyString_FromStringAndSize (desc, desc_len);
483 return Py_None;
484 }
485}
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000486%extend lldb::SBWatchpoint {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000487 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chen092bd152011-09-27 01:19:20 +0000488 lldb::SBStream description;
489 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton394da8e2012-02-01 02:30:27 +0000490 const char *desc = description.GetData();
491 size_t desc_len = description.GetSize();
492 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
493 --desc_len;
494 if (desc_len > 0)
495 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000496 else
497 return PyString_FromString("");
Johnny Chen092bd152011-09-27 01:19:20 +0000498 }
499}
Caroline Ticee49ec182010-09-22 23:01:29 +0000500
Filipe Cabecinhas43898d72012-08-25 00:29:07 +0000501
502// %extend lldb::SBDebugger {
503// // FIXME: We can't get the callback and baton
504// PyObject *lldb::SBDebugger (){
505// // Only call Py_XDECREF if we have a Python object (or NULL)
506// if (LLDBSwigPythonCallPythonLogOutputCallback == $self->GetLogOutPutCallback())
507// Py_XDECREF($self->GetCallbackBaton());
508// }
509// }
Filipe Cabecinhas55ea73d2012-08-22 13:25:10 +0000510// %extend lldb::SBInputReader {
511// // FIXME: m_callback_function is private and we have no other
512// // way to access it.
513// PyObject *lldb::SBInputReader::__del__ (){
514// // Only call Py_XDECREF if we have a Python object (or NULL)
515// if (LLDBSwigPythonCallSBInputReaderCallback == $self->m_callback_function)
516// Py_XDECREF($self->m_callback_baton);
517// }
518// }
519
Greg Clayton9b8ff512012-02-01 01:46:19 +0000520%pythoncode %{
521
Greg Clayton7dd5c512012-02-06 01:44:54 +0000522class declaration(object):
523 '''A class that represents a source declaration location with file, line and column.'''
524 def __init__(self, file, line, col):
525 self.file = file
526 self.line = line
527 self.col = col
528
Greg Clayton9b8ff512012-02-01 01:46:19 +0000529class value(object):
530 '''A class designed to wrap lldb.SBValue() objects so the resulting object
531 can be used as a variable would be in code. So if you have a Point structure
532 variable in your code in the current frame named "pt", you can initialize an instance
533 of this class with it:
534
535 pt = lldb.value(lldb.frame.FindVariable("pt"))
536 print pt
537 print pt.x
538 print pt.y
539
540 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
541 print rectangle_array[12]
542 print rectangle_array[5].origin.x'''
543 def __init__(self, sbvalue):
544 self.sbvalue = sbvalue
545
546 def __nonzero__(self):
547 return self.sbvalue.__nonzero__()
548
Greg Clayton9b8ff512012-02-01 01:46:19 +0000549 def __str__(self):
550 return self.sbvalue.__str__()
551
552 def __getitem__(self, key):
553 # Allow array access if this value has children...
554 if type(key) is int:
555 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
Enrico Granatac0608282012-10-08 17:32:55 +0000556 if type(key) is value:
Enrico Granata8b902e22012-10-08 19:01:10 +0000557 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % int(key)))
Enrico Granatac0608282012-10-08 17:32:55 +0000558 raise TypeError("No array item of type %s" % str(type(key)))
Greg Clayton9b8ff512012-02-01 01:46:19 +0000559
560 def __getattr__(self, name):
561 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
562 if child_sbvalue:
563 return value(child_sbvalue)
Enrico Granatac0608282012-10-08 17:32:55 +0000564 raise AttributeError("Attribute '%s' is not defined" % name)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000565
566 def __add__(self, other):
567 return int(self) + int(other)
568
569 def __sub__(self, other):
570 return int(self) - int(other)
571
572 def __mul__(self, other):
573 return int(self) * int(other)
574
575 def __floordiv__(self, other):
576 return int(self) // int(other)
577
578 def __mod__(self, other):
579 return int(self) % int(other)
580
581 def __divmod__(self, other):
582 return int(self) % int(other)
583
584 def __pow__(self, other):
585 return int(self) ** int(other)
586
587 def __lshift__(self, other):
588 return int(self) << int(other)
589
590 def __rshift__(self, other):
591 return int(self) >> int(other)
592
593 def __and__(self, other):
594 return int(self) & int(other)
595
596 def __xor__(self, other):
597 return int(self) ^ int(other)
598
599 def __or__(self, other):
600 return int(self) | int(other)
601
602 def __div__(self, other):
603 return int(self) / int(other)
604
605 def __truediv__(self, other):
606 return int(self) / int(other)
607
608 def __iadd__(self, other):
609 result = self.__add__(other)
610 self.sbvalue.SetValueFromCString (str(result))
611 return result
612
613 def __isub__(self, other):
614 result = self.__sub__(other)
615 self.sbvalue.SetValueFromCString (str(result))
616 return result
617
618 def __imul__(self, other):
619 result = self.__mul__(other)
620 self.sbvalue.SetValueFromCString (str(result))
621 return result
622
623 def __idiv__(self, other):
624 result = self.__div__(other)
625 self.sbvalue.SetValueFromCString (str(result))
626 return result
627
628 def __itruediv__(self, other):
629 result = self.__truediv__(other)
630 self.sbvalue.SetValueFromCString (str(result))
631 return result
632
633 def __ifloordiv__(self, other):
634 result = self.__floordiv__(self, other)
635 self.sbvalue.SetValueFromCString (str(result))
636 return result
637
638 def __imod__(self, other):
639 result = self.__and__(self, other)
640 self.sbvalue.SetValueFromCString (str(result))
641 return result
642
643 def __ipow__(self, other):
644 result = self.__pow__(self, other)
645 self.sbvalue.SetValueFromCString (str(result))
646 return result
647
648 def __ipow__(self, other, modulo):
649 result = self.__pow__(self, other, modulo)
650 self.sbvalue.SetValueFromCString (str(result))
651 return result
652
653 def __ilshift__(self, other):
654 result = self.__lshift__(other)
655 self.sbvalue.SetValueFromCString (str(result))
656 return result
657
658 def __irshift__(self, other):
659 result = self.__rshift__(other)
660 self.sbvalue.SetValueFromCString (str(result))
661 return result
662
663 def __iand__(self, other):
664 result = self.__and__(self, other)
665 self.sbvalue.SetValueFromCString (str(result))
666 return result
667
668 def __ixor__(self, other):
669 result = self.__xor__(self, other)
670 self.sbvalue.SetValueFromCString (str(result))
671 return result
672
673 def __ior__(self, other):
674 result = self.__ior__(self, other)
675 self.sbvalue.SetValueFromCString (str(result))
676 return result
677
678 def __neg__(self):
679 return -int(self)
680
681 def __pos__(self):
682 return +int(self)
683
684 def __abs__(self):
685 return abs(int(self))
686
687 def __invert__(self):
688 return ~int(self)
689
690 def __complex__(self):
691 return complex (int(self))
692
693 def __int__(self):
694 return self.sbvalue.GetValueAsSigned()
695
696 def __long__(self):
697 return self.sbvalue.GetValueAsSigned()
698
699 def __float__(self):
700 return float (self.sbvalue.GetValueAsSigned())
701
702 def __oct__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000703 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000704
705 def __hex__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000706 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000707
Greg Clayton1ea58022012-02-02 00:12:47 +0000708 def __eq__(self, other):
Enrico Granatac0608282012-10-08 17:32:55 +0000709 if type(other) is int:
710 return int(self) == other
711 elif type(other) is str:
712 return str(self) == other
713 elif type(other) is value:
714 self_err = SBError()
715 other_err = SBError()
716 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
717 if self_err.fail:
718 raise ValueError("unable to extract value of self")
719 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
720 if other_err.fail:
721 raise ValueError("unable to extract value of other")
722 return self_val == other_val
723 raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
724
Greg Clayton1ea58022012-02-02 00:12:47 +0000725 def __neq__(self, other):
726 return not self.__eq__(other)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000727%}