blob: f9e5a130dbda8ff940e42ccc9db69e1a5ef53fca [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))
Jason Molendaf3f10a32012-10-06 01:46:12 +0000542 raise TypeError
Greg Clayton9b8ff512012-02-01 01:46:19 +0000543
544 def __getattr__(self, name):
545 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
546 if child_sbvalue:
547 return value(child_sbvalue)
Jason Molendaf3f10a32012-10-06 01:46:12 +0000548 raise AttributeError
Greg Clayton9b8ff512012-02-01 01:46:19 +0000549
550 def __add__(self, other):
551 return int(self) + int(other)
552
553 def __sub__(self, other):
554 return int(self) - int(other)
555
556 def __mul__(self, other):
557 return int(self) * int(other)
558
559 def __floordiv__(self, other):
560 return int(self) // int(other)
561
562 def __mod__(self, other):
563 return int(self) % int(other)
564
565 def __divmod__(self, other):
566 return int(self) % int(other)
567
568 def __pow__(self, other):
569 return int(self) ** int(other)
570
571 def __lshift__(self, other):
572 return int(self) << int(other)
573
574 def __rshift__(self, other):
575 return int(self) >> int(other)
576
577 def __and__(self, other):
578 return int(self) & int(other)
579
580 def __xor__(self, other):
581 return int(self) ^ int(other)
582
583 def __or__(self, other):
584 return int(self) | int(other)
585
586 def __div__(self, other):
587 return int(self) / int(other)
588
589 def __truediv__(self, other):
590 return int(self) / int(other)
591
592 def __iadd__(self, other):
593 result = self.__add__(other)
594 self.sbvalue.SetValueFromCString (str(result))
595 return result
596
597 def __isub__(self, other):
598 result = self.__sub__(other)
599 self.sbvalue.SetValueFromCString (str(result))
600 return result
601
602 def __imul__(self, other):
603 result = self.__mul__(other)
604 self.sbvalue.SetValueFromCString (str(result))
605 return result
606
607 def __idiv__(self, other):
608 result = self.__div__(other)
609 self.sbvalue.SetValueFromCString (str(result))
610 return result
611
612 def __itruediv__(self, other):
613 result = self.__truediv__(other)
614 self.sbvalue.SetValueFromCString (str(result))
615 return result
616
617 def __ifloordiv__(self, other):
618 result = self.__floordiv__(self, other)
619 self.sbvalue.SetValueFromCString (str(result))
620 return result
621
622 def __imod__(self, other):
623 result = self.__and__(self, other)
624 self.sbvalue.SetValueFromCString (str(result))
625 return result
626
627 def __ipow__(self, other):
628 result = self.__pow__(self, other)
629 self.sbvalue.SetValueFromCString (str(result))
630 return result
631
632 def __ipow__(self, other, modulo):
633 result = self.__pow__(self, other, modulo)
634 self.sbvalue.SetValueFromCString (str(result))
635 return result
636
637 def __ilshift__(self, other):
638 result = self.__lshift__(other)
639 self.sbvalue.SetValueFromCString (str(result))
640 return result
641
642 def __irshift__(self, other):
643 result = self.__rshift__(other)
644 self.sbvalue.SetValueFromCString (str(result))
645 return result
646
647 def __iand__(self, other):
648 result = self.__and__(self, other)
649 self.sbvalue.SetValueFromCString (str(result))
650 return result
651
652 def __ixor__(self, other):
653 result = self.__xor__(self, other)
654 self.sbvalue.SetValueFromCString (str(result))
655 return result
656
657 def __ior__(self, other):
658 result = self.__ior__(self, other)
659 self.sbvalue.SetValueFromCString (str(result))
660 return result
661
662 def __neg__(self):
663 return -int(self)
664
665 def __pos__(self):
666 return +int(self)
667
668 def __abs__(self):
669 return abs(int(self))
670
671 def __invert__(self):
672 return ~int(self)
673
674 def __complex__(self):
675 return complex (int(self))
676
677 def __int__(self):
678 return self.sbvalue.GetValueAsSigned()
679
680 def __long__(self):
681 return self.sbvalue.GetValueAsSigned()
682
683 def __float__(self):
684 return float (self.sbvalue.GetValueAsSigned())
685
686 def __oct__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000687 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000688
689 def __hex__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000690 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000691
Greg Clayton1ea58022012-02-02 00:12:47 +0000692 def __eq__(self, other):
Jason Molendaf3f10a32012-10-06 01:46:12 +0000693 self_err = SBError()
694 other_err = SBError()
695 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
696 if self_err.fail:
697 raise ValueError("unable to extract value of self")
698 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
699 if other_err.fail:
700 raise ValueError("unable to extract value of other")
701 return self_val == other_val
Greg Clayton1ea58022012-02-02 00:12:47 +0000702
703 def __neq__(self, other):
704 return not self.__eq__(other)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000705%}