blob: 19868fba81143a7951f16cb72c3e21ce669897e9 [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}
114%extend lldb::SBError {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000115 PyObject *lldb::SBError::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000116 lldb::SBStream description;
117 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000118 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);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000124 else
125 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000126 }
127}
128%extend lldb::SBFileSpec {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000129 PyObject *lldb::SBFileSpec::__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::SBFrame {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000143 PyObject *lldb::SBFrame::__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::SBFunction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000157 PyObject *lldb::SBFunction::__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}
Greg Clayton5c4c7462010-10-06 03:09:58 +0000170%extend lldb::SBInstruction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000171 PyObject *lldb::SBInstruction::__str__ (){
Greg Clayton5c4c7462010-10-06 03:09:58 +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("");
Greg Clayton5c4c7462010-10-06 03:09:58 +0000182 }
183}
184%extend lldb::SBInstructionList {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000185 PyObject *lldb::SBInstructionList::__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}
Caroline Ticee49ec182010-09-22 23:01:29 +0000198%extend lldb::SBLineEntry {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000199 PyObject *lldb::SBLineEntry::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +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("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000210 }
211}
212%extend lldb::SBModule {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000213 PyObject *lldb::SBModule::__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::SBProcess {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000227 PyObject *lldb::SBProcess::__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}
Greg Clayton15ef51e2011-09-24 05:04:40 +0000240%extend lldb::SBSection {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000241 PyObject *lldb::SBSection::__str__ (){
Greg Clayton15ef51e2011-09-24 05:04:40 +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("");
Greg Clayton15ef51e2011-09-24 05:04:40 +0000252 }
253}
Caroline Ticee49ec182010-09-22 23:01:29 +0000254%extend lldb::SBSymbol {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000255 PyObject *lldb::SBSymbol::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +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("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000266 }
267}
268%extend lldb::SBSymbolContext {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000269 PyObject *lldb::SBSymbolContext::__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}
Greg Clayton7dd5c512012-02-06 01:44:54 +0000282%extend lldb::SBSymbolContextList {
283 PyObject *lldb::SBSymbolContextList::__str__ (){
284 lldb::SBStream description;
285 $self->GetDescription (description);
286 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);
292 else
293 return PyString_FromString("");
294 }
295}
Caroline Ticee49ec182010-09-22 23:01:29 +0000296%extend lldb::SBTarget {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000297 PyObject *lldb::SBTarget::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000298 lldb::SBStream description;
Caroline Tice7826c882010-10-26 03:11:13 +0000299 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000300 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);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000306 else
307 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000308 }
309}
Greg Clayton96154be2011-11-13 06:57:31 +0000310%extend lldb::SBType {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000311 PyObject *lldb::SBType::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000312 lldb::SBStream description;
313 $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("");
Greg Clayton96154be2011-11-13 06:57:31 +0000322 }
323}
Enrico Granata16376ed2012-02-15 02:34:21 +0000324%extend lldb::SBTypeCategory {
325 PyObject *lldb::SBTypeCategory::__str__ (){
326 lldb::SBStream description;
327 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
328 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);
334 else
335 return PyString_FromString("");
336 }
337}
338%extend lldb::SBTypeFilter {
339 PyObject *lldb::SBTypeFilter::__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::SBTypeFormat {
353 PyObject *lldb::SBTypeFormat::__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}
Greg Clayton96154be2011-11-13 06:57:31 +0000366%extend lldb::SBTypeMember {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000367 PyObject *lldb::SBTypeMember::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000368 lldb::SBStream description;
369 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000370 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);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000376 else
377 return PyString_FromString("");
Greg Clayton96154be2011-11-13 06:57:31 +0000378 }
379}
Enrico Granata16376ed2012-02-15 02:34:21 +0000380%extend lldb::SBTypeNameSpecifier {
381 PyObject *lldb::SBTypeNameSpecifier::__str__ (){
382 lldb::SBStream description;
383 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
384 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);
390 else
391 return PyString_FromString("");
392 }
393}
394%extend lldb::SBTypeSummary {
395 PyObject *lldb::SBTypeSummary::__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::SBTypeSynthetic {
409 PyObject *lldb::SBTypeSynthetic::__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}
Caroline Ticee49ec182010-09-22 23:01:29 +0000422%extend lldb::SBThread {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000423 PyObject *lldb::SBThread::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000424 lldb::SBStream description;
425 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000426 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);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000432 else
433 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000434 }
435}
436%extend lldb::SBValue {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000437 PyObject *lldb::SBValue::__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}
Greg Claytond62b9c12012-02-03 07:02:37 +0000450%extend lldb::SBValueList {
451 PyObject *lldb::SBValueList::__repr__ (){
452 lldb::SBStream description;
453 const size_t n = $self->GetSize();
454 if (n)
455 {
456 for (size_t i=0; i<n; ++i)
457 $self->GetValueAtIndex(i).GetDescription(description);
458 }
459 else
460 {
461 description.Printf("<empty> lldb.SBValueList()");
462 }
463 const char *desc = description.GetData();
464 size_t desc_len = description.GetSize();
465 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
466 --desc_len;
467 if (desc_len > 0)
468 return PyString_FromStringAndSize (desc, desc_len);
469 return Py_None;
470 }
471}
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000472%extend lldb::SBWatchpoint {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000473 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chen092bd152011-09-27 01:19:20 +0000474 lldb::SBStream description;
475 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton394da8e2012-02-01 02:30:27 +0000476 const char *desc = description.GetData();
477 size_t desc_len = description.GetSize();
478 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
479 --desc_len;
480 if (desc_len > 0)
481 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000482 else
483 return PyString_FromString("");
Johnny Chen092bd152011-09-27 01:19:20 +0000484 }
485}
Caroline Ticee49ec182010-09-22 23:01:29 +0000486
Filipe Cabecinhas43898d72012-08-25 00:29:07 +0000487
488// %extend lldb::SBDebugger {
489// // FIXME: We can't get the callback and baton
490// PyObject *lldb::SBDebugger (){
491// // Only call Py_XDECREF if we have a Python object (or NULL)
492// if (LLDBSwigPythonCallPythonLogOutputCallback == $self->GetLogOutPutCallback())
493// Py_XDECREF($self->GetCallbackBaton());
494// }
495// }
Filipe Cabecinhas55ea73d2012-08-22 13:25:10 +0000496// %extend lldb::SBInputReader {
497// // FIXME: m_callback_function is private and we have no other
498// // way to access it.
499// PyObject *lldb::SBInputReader::__del__ (){
500// // Only call Py_XDECREF if we have a Python object (or NULL)
501// if (LLDBSwigPythonCallSBInputReaderCallback == $self->m_callback_function)
502// Py_XDECREF($self->m_callback_baton);
503// }
504// }
505
Greg Clayton9b8ff512012-02-01 01:46:19 +0000506%pythoncode %{
507
Greg Clayton7dd5c512012-02-06 01:44:54 +0000508class declaration(object):
509 '''A class that represents a source declaration location with file, line and column.'''
510 def __init__(self, file, line, col):
511 self.file = file
512 self.line = line
513 self.col = col
514
Greg Clayton9b8ff512012-02-01 01:46:19 +0000515class value(object):
516 '''A class designed to wrap lldb.SBValue() objects so the resulting object
517 can be used as a variable would be in code. So if you have a Point structure
518 variable in your code in the current frame named "pt", you can initialize an instance
519 of this class with it:
520
521 pt = lldb.value(lldb.frame.FindVariable("pt"))
522 print pt
523 print pt.x
524 print pt.y
525
526 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
527 print rectangle_array[12]
528 print rectangle_array[5].origin.x'''
529 def __init__(self, sbvalue):
530 self.sbvalue = sbvalue
531
532 def __nonzero__(self):
533 return self.sbvalue.__nonzero__()
534
Greg Clayton9b8ff512012-02-01 01:46:19 +0000535 def __str__(self):
536 return self.sbvalue.__str__()
537
538 def __getitem__(self, key):
539 # Allow array access if this value has children...
540 if type(key) is int:
541 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
Enrico Granatac0608282012-10-08 17:32:55 +0000542 if type(key) is value:
Enrico Granata8b902e22012-10-08 19:01:10 +0000543 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % int(key)))
Enrico Granatac0608282012-10-08 17:32:55 +0000544 raise TypeError("No array item of type %s" % str(type(key)))
Greg Clayton9b8ff512012-02-01 01:46:19 +0000545
546 def __getattr__(self, name):
547 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
548 if child_sbvalue:
549 return value(child_sbvalue)
Enrico Granatac0608282012-10-08 17:32:55 +0000550 raise AttributeError("Attribute '%s' is not defined" % name)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000551
552 def __add__(self, other):
553 return int(self) + int(other)
554
555 def __sub__(self, other):
556 return int(self) - int(other)
557
558 def __mul__(self, other):
559 return int(self) * int(other)
560
561 def __floordiv__(self, other):
562 return int(self) // int(other)
563
564 def __mod__(self, other):
565 return int(self) % int(other)
566
567 def __divmod__(self, other):
568 return int(self) % int(other)
569
570 def __pow__(self, other):
571 return int(self) ** int(other)
572
573 def __lshift__(self, other):
574 return int(self) << int(other)
575
576 def __rshift__(self, other):
577 return int(self) >> int(other)
578
579 def __and__(self, other):
580 return int(self) & int(other)
581
582 def __xor__(self, other):
583 return int(self) ^ int(other)
584
585 def __or__(self, other):
586 return int(self) | int(other)
587
588 def __div__(self, other):
589 return int(self) / int(other)
590
591 def __truediv__(self, other):
592 return int(self) / int(other)
593
594 def __iadd__(self, other):
595 result = self.__add__(other)
596 self.sbvalue.SetValueFromCString (str(result))
597 return result
598
599 def __isub__(self, other):
600 result = self.__sub__(other)
601 self.sbvalue.SetValueFromCString (str(result))
602 return result
603
604 def __imul__(self, other):
605 result = self.__mul__(other)
606 self.sbvalue.SetValueFromCString (str(result))
607 return result
608
609 def __idiv__(self, other):
610 result = self.__div__(other)
611 self.sbvalue.SetValueFromCString (str(result))
612 return result
613
614 def __itruediv__(self, other):
615 result = self.__truediv__(other)
616 self.sbvalue.SetValueFromCString (str(result))
617 return result
618
619 def __ifloordiv__(self, other):
620 result = self.__floordiv__(self, other)
621 self.sbvalue.SetValueFromCString (str(result))
622 return result
623
624 def __imod__(self, other):
625 result = self.__and__(self, other)
626 self.sbvalue.SetValueFromCString (str(result))
627 return result
628
629 def __ipow__(self, other):
630 result = self.__pow__(self, other)
631 self.sbvalue.SetValueFromCString (str(result))
632 return result
633
634 def __ipow__(self, other, modulo):
635 result = self.__pow__(self, other, modulo)
636 self.sbvalue.SetValueFromCString (str(result))
637 return result
638
639 def __ilshift__(self, other):
640 result = self.__lshift__(other)
641 self.sbvalue.SetValueFromCString (str(result))
642 return result
643
644 def __irshift__(self, other):
645 result = self.__rshift__(other)
646 self.sbvalue.SetValueFromCString (str(result))
647 return result
648
649 def __iand__(self, other):
650 result = self.__and__(self, other)
651 self.sbvalue.SetValueFromCString (str(result))
652 return result
653
654 def __ixor__(self, other):
655 result = self.__xor__(self, other)
656 self.sbvalue.SetValueFromCString (str(result))
657 return result
658
659 def __ior__(self, other):
660 result = self.__ior__(self, other)
661 self.sbvalue.SetValueFromCString (str(result))
662 return result
663
664 def __neg__(self):
665 return -int(self)
666
667 def __pos__(self):
668 return +int(self)
669
670 def __abs__(self):
671 return abs(int(self))
672
673 def __invert__(self):
674 return ~int(self)
675
676 def __complex__(self):
677 return complex (int(self))
678
679 def __int__(self):
680 return self.sbvalue.GetValueAsSigned()
681
682 def __long__(self):
683 return self.sbvalue.GetValueAsSigned()
684
685 def __float__(self):
686 return float (self.sbvalue.GetValueAsSigned())
687
688 def __oct__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000689 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000690
691 def __hex__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000692 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000693
Greg Clayton1ea58022012-02-02 00:12:47 +0000694 def __eq__(self, other):
Enrico Granatac0608282012-10-08 17:32:55 +0000695 if type(other) is int:
696 return int(self) == other
697 elif type(other) is str:
698 return str(self) == other
699 elif type(other) is value:
700 self_err = SBError()
701 other_err = SBError()
702 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
703 if self_err.fail:
704 raise ValueError("unable to extract value of self")
705 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
706 if other_err.fail:
707 raise ValueError("unable to extract value of other")
708 return self_val == other_val
709 raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
710
Greg Clayton1ea58022012-02-02 00:12:47 +0000711 def __neq__(self, other):
712 return not self.__eq__(other)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000713%}