blob: 29e39e54e57d13b6f49a471988271d512d1bbcb9 [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("");
28
Caroline Ticee49ec182010-09-22 23:01:29 +000029 }
30}
31%extend lldb::SBBreakpoint {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000032 PyObject *lldb::SBBreakpoint::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000033 lldb::SBStream description;
Greg Claytond8c62532010-10-07 04:19:01 +000034 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000035 const char *desc = description.GetData();
36 size_t desc_len = description.GetSize();
37 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
38 --desc_len;
39 if (desc_len > 0)
40 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000041 else
42 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000043 }
44}
45%extend lldb::SBBreakpointLocation {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000046 PyObject *lldb::SBBreakpointLocation::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000047 lldb::SBStream description;
Johnny Chenbdc36bd2011-04-25 20:23:05 +000048 $self->GetDescription (description, lldb::eDescriptionLevelFull);
Greg Clayton394da8e2012-02-01 02:30:27 +000049 const char *desc = description.GetData();
50 size_t desc_len = description.GetSize();
51 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
52 --desc_len;
53 if (desc_len > 0)
54 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000055 else
56 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000057 }
58}
59%extend lldb::SBCommandReturnObject {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000060 PyObject *lldb::SBCommandReturnObject::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000061 lldb::SBStream description;
62 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000063 const char *desc = description.GetData();
64 size_t desc_len = description.GetSize();
65 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
66 --desc_len;
67 if (desc_len > 0)
68 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000069 else
70 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000071 }
72}
73%extend lldb::SBCompileUnit {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000074 PyObject *lldb::SBCompileUnit::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +000075 lldb::SBStream description;
76 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000077 const char *desc = description.GetData();
78 size_t desc_len = description.GetSize();
79 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
80 --desc_len;
81 if (desc_len > 0)
82 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000083 else
84 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +000085 }
86}
Enrico Granata91544802011-09-06 19:20:51 +000087%extend lldb::SBData {
Greg Clayton0a19a1b2012-02-04 02:27:34 +000088 PyObject *lldb::SBData::__str__ (){
Enrico Granata91544802011-09-06 19:20:51 +000089 lldb::SBStream description;
90 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +000091 const char *desc = description.GetData();
92 size_t desc_len = description.GetSize();
93 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
94 --desc_len;
95 if (desc_len > 0)
96 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +000097 else
98 return PyString_FromString("");
Enrico Granata91544802011-09-06 19:20:51 +000099 }
100}
Caroline Ticee49ec182010-09-22 23:01:29 +0000101%extend lldb::SBDebugger {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000102 PyObject *lldb::SBDebugger::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000103 lldb::SBStream description;
104 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000105 const char *desc = description.GetData();
106 size_t desc_len = description.GetSize();
107 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
108 --desc_len;
109 if (desc_len > 0)
110 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000111 else
112 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000113 }
114}
115%extend lldb::SBError {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000116 PyObject *lldb::SBError::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000117 lldb::SBStream description;
118 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000119 const char *desc = description.GetData();
120 size_t desc_len = description.GetSize();
121 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
122 --desc_len;
123 if (desc_len > 0)
124 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000125 else
126 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000127 }
128}
129%extend lldb::SBFileSpec {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000130 PyObject *lldb::SBFileSpec::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000131 lldb::SBStream description;
132 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000133 const char *desc = description.GetData();
134 size_t desc_len = description.GetSize();
135 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
136 --desc_len;
137 if (desc_len > 0)
138 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000139 else
140 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000141 }
142}
143%extend lldb::SBFrame {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000144 PyObject *lldb::SBFrame::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000145 lldb::SBStream description;
146 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000147 const char *desc = description.GetData();
148 size_t desc_len = description.GetSize();
149 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
150 --desc_len;
151 if (desc_len > 0)
152 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000153 else
154 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000155 }
156}
157%extend lldb::SBFunction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000158 PyObject *lldb::SBFunction::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000159 lldb::SBStream description;
160 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000161 const char *desc = description.GetData();
162 size_t desc_len = description.GetSize();
163 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
164 --desc_len;
165 if (desc_len > 0)
166 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000167 else
168 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000169 }
170}
Greg Clayton5c4c7462010-10-06 03:09:58 +0000171%extend lldb::SBInstruction {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000172 PyObject *lldb::SBInstruction::__str__ (){
Greg Clayton5c4c7462010-10-06 03:09:58 +0000173 lldb::SBStream description;
174 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000175 const char *desc = description.GetData();
176 size_t desc_len = description.GetSize();
177 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
178 --desc_len;
179 if (desc_len > 0)
180 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000181 else
182 return PyString_FromString("");
Greg Clayton5c4c7462010-10-06 03:09:58 +0000183 }
184}
185%extend lldb::SBInstructionList {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000186 PyObject *lldb::SBInstructionList::__str__ (){
Greg Clayton5c4c7462010-10-06 03:09:58 +0000187 lldb::SBStream description;
188 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000189 const char *desc = description.GetData();
190 size_t desc_len = description.GetSize();
191 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
192 --desc_len;
193 if (desc_len > 0)
194 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000195 else
196 return PyString_FromString("");
Greg Clayton5c4c7462010-10-06 03:09:58 +0000197 }
198}
Caroline Ticee49ec182010-09-22 23:01:29 +0000199%extend lldb::SBLineEntry {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000200 PyObject *lldb::SBLineEntry::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000201 lldb::SBStream description;
202 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000203 const char *desc = description.GetData();
204 size_t desc_len = description.GetSize();
205 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
206 --desc_len;
207 if (desc_len > 0)
208 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000209 else
210 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000211 }
212}
213%extend lldb::SBModule {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000214 PyObject *lldb::SBModule::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000215 lldb::SBStream description;
216 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000217 const char *desc = description.GetData();
218 size_t desc_len = description.GetSize();
219 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
220 --desc_len;
221 if (desc_len > 0)
222 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000223 else
224 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000225 }
226}
227%extend lldb::SBProcess {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000228 PyObject *lldb::SBProcess::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000229 lldb::SBStream description;
230 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000231 const char *desc = description.GetData();
232 size_t desc_len = description.GetSize();
233 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
234 --desc_len;
235 if (desc_len > 0)
236 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000237 else
238 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000239 }
240}
Greg Clayton15ef51e2011-09-24 05:04:40 +0000241%extend lldb::SBSection {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000242 PyObject *lldb::SBSection::__str__ (){
Greg Clayton15ef51e2011-09-24 05:04:40 +0000243 lldb::SBStream description;
244 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000245 const char *desc = description.GetData();
246 size_t desc_len = description.GetSize();
247 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
248 --desc_len;
249 if (desc_len > 0)
250 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000251 else
252 return PyString_FromString("");
Greg Clayton15ef51e2011-09-24 05:04:40 +0000253 }
254}
Caroline Ticee49ec182010-09-22 23:01:29 +0000255%extend lldb::SBSymbol {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000256 PyObject *lldb::SBSymbol::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000257 lldb::SBStream description;
258 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000259 const char *desc = description.GetData();
260 size_t desc_len = description.GetSize();
261 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
262 --desc_len;
263 if (desc_len > 0)
264 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000265 else
266 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000267 }
268}
269%extend lldb::SBSymbolContext {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000270 PyObject *lldb::SBSymbolContext::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000271 lldb::SBStream description;
272 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000273 const char *desc = description.GetData();
274 size_t desc_len = description.GetSize();
275 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
276 --desc_len;
277 if (desc_len > 0)
278 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000279 else
280 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000281 }
282}
Greg Clayton7dd5c512012-02-06 01:44:54 +0000283%extend lldb::SBSymbolContextList {
284 PyObject *lldb::SBSymbolContextList::__str__ (){
285 lldb::SBStream description;
286 $self->GetDescription (description);
287 const char *desc = description.GetData();
288 size_t desc_len = description.GetSize();
289 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
290 --desc_len;
291 if (desc_len > 0)
292 return PyString_FromStringAndSize (desc, desc_len);
293 else
294 return PyString_FromString("");
295 }
296}
Caroline Ticee49ec182010-09-22 23:01:29 +0000297%extend lldb::SBTarget {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000298 PyObject *lldb::SBTarget::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000299 lldb::SBStream description;
Caroline Tice7826c882010-10-26 03:11:13 +0000300 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000301 const char *desc = description.GetData();
302 size_t desc_len = description.GetSize();
303 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
304 --desc_len;
305 if (desc_len > 0)
306 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000307 else
308 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000309 }
310}
Greg Clayton96154be2011-11-13 06:57:31 +0000311%extend lldb::SBType {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000312 PyObject *lldb::SBType::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000313 lldb::SBStream description;
314 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000315 const char *desc = description.GetData();
316 size_t desc_len = description.GetSize();
317 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
318 --desc_len;
319 if (desc_len > 0)
320 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000321 else
322 return PyString_FromString("");
Greg Clayton96154be2011-11-13 06:57:31 +0000323 }
324}
325%extend lldb::SBTypeMember {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000326 PyObject *lldb::SBTypeMember::__str__ (){
Greg Clayton96154be2011-11-13 06:57:31 +0000327 lldb::SBStream description;
328 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton394da8e2012-02-01 02:30:27 +0000329 const char *desc = description.GetData();
330 size_t desc_len = description.GetSize();
331 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
332 --desc_len;
333 if (desc_len > 0)
334 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000335 else
336 return PyString_FromString("");
Greg Clayton96154be2011-11-13 06:57:31 +0000337 }
338}
Caroline Ticee49ec182010-09-22 23:01:29 +0000339%extend lldb::SBThread {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000340 PyObject *lldb::SBThread::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000341 lldb::SBStream description;
342 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000343 const char *desc = description.GetData();
344 size_t desc_len = description.GetSize();
345 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
346 --desc_len;
347 if (desc_len > 0)
348 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000349 else
350 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000351 }
352}
353%extend lldb::SBValue {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000354 PyObject *lldb::SBValue::__str__ (){
Caroline Ticee49ec182010-09-22 23:01:29 +0000355 lldb::SBStream description;
356 $self->GetDescription (description);
Greg Clayton394da8e2012-02-01 02:30:27 +0000357 const char *desc = description.GetData();
358 size_t desc_len = description.GetSize();
359 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
360 --desc_len;
361 if (desc_len > 0)
362 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000363 else
364 return PyString_FromString("");
Caroline Ticee49ec182010-09-22 23:01:29 +0000365 }
366}
Greg Claytond62b9c12012-02-03 07:02:37 +0000367%extend lldb::SBValueList {
368 PyObject *lldb::SBValueList::__repr__ (){
369 lldb::SBStream description;
370 const size_t n = $self->GetSize();
371 if (n)
372 {
373 for (size_t i=0; i<n; ++i)
374 $self->GetValueAtIndex(i).GetDescription(description);
375 }
376 else
377 {
378 description.Printf("<empty> lldb.SBValueList()");
379 }
380 const char *desc = description.GetData();
381 size_t desc_len = description.GetSize();
382 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
383 --desc_len;
384 if (desc_len > 0)
385 return PyString_FromStringAndSize (desc, desc_len);
386 return Py_None;
387 }
388}
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000389%extend lldb::SBWatchpoint {
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000390 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chen092bd152011-09-27 01:19:20 +0000391 lldb::SBStream description;
392 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton394da8e2012-02-01 02:30:27 +0000393 const char *desc = description.GetData();
394 size_t desc_len = description.GetSize();
395 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
396 --desc_len;
397 if (desc_len > 0)
398 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton0a19a1b2012-02-04 02:27:34 +0000399 else
400 return PyString_FromString("");
Johnny Chen092bd152011-09-27 01:19:20 +0000401 }
402}
Caroline Ticee49ec182010-09-22 23:01:29 +0000403
Greg Clayton9b8ff512012-02-01 01:46:19 +0000404%pythoncode %{
405
Greg Clayton7dd5c512012-02-06 01:44:54 +0000406class declaration(object):
407 '''A class that represents a source declaration location with file, line and column.'''
408 def __init__(self, file, line, col):
409 self.file = file
410 self.line = line
411 self.col = col
412
Greg Clayton9b8ff512012-02-01 01:46:19 +0000413class value(object):
414 '''A class designed to wrap lldb.SBValue() objects so the resulting object
415 can be used as a variable would be in code. So if you have a Point structure
416 variable in your code in the current frame named "pt", you can initialize an instance
417 of this class with it:
418
419 pt = lldb.value(lldb.frame.FindVariable("pt"))
420 print pt
421 print pt.x
422 print pt.y
423
424 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
425 print rectangle_array[12]
426 print rectangle_array[5].origin.x'''
427 def __init__(self, sbvalue):
428 self.sbvalue = sbvalue
429
430 def __nonzero__(self):
431 return self.sbvalue.__nonzero__()
432
Greg Clayton9b8ff512012-02-01 01:46:19 +0000433 def __str__(self):
434 return self.sbvalue.__str__()
435
436 def __getitem__(self, key):
437 # Allow array access if this value has children...
438 if type(key) is int:
439 return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
440 raise TypeError
441
442 def __getattr__(self, name):
443 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
444 if child_sbvalue:
445 return value(child_sbvalue)
446 raise AttributeError
447
448 def __add__(self, other):
449 return int(self) + int(other)
450
451 def __sub__(self, other):
452 return int(self) - int(other)
453
454 def __mul__(self, other):
455 return int(self) * int(other)
456
457 def __floordiv__(self, other):
458 return int(self) // int(other)
459
460 def __mod__(self, other):
461 return int(self) % int(other)
462
463 def __divmod__(self, other):
464 return int(self) % int(other)
465
466 def __pow__(self, other):
467 return int(self) ** int(other)
468
469 def __lshift__(self, other):
470 return int(self) << int(other)
471
472 def __rshift__(self, other):
473 return int(self) >> int(other)
474
475 def __and__(self, other):
476 return int(self) & int(other)
477
478 def __xor__(self, other):
479 return int(self) ^ int(other)
480
481 def __or__(self, other):
482 return int(self) | int(other)
483
484 def __div__(self, other):
485 return int(self) / int(other)
486
487 def __truediv__(self, other):
488 return int(self) / int(other)
489
490 def __iadd__(self, other):
491 result = self.__add__(other)
492 self.sbvalue.SetValueFromCString (str(result))
493 return result
494
495 def __isub__(self, other):
496 result = self.__sub__(other)
497 self.sbvalue.SetValueFromCString (str(result))
498 return result
499
500 def __imul__(self, other):
501 result = self.__mul__(other)
502 self.sbvalue.SetValueFromCString (str(result))
503 return result
504
505 def __idiv__(self, other):
506 result = self.__div__(other)
507 self.sbvalue.SetValueFromCString (str(result))
508 return result
509
510 def __itruediv__(self, other):
511 result = self.__truediv__(other)
512 self.sbvalue.SetValueFromCString (str(result))
513 return result
514
515 def __ifloordiv__(self, other):
516 result = self.__floordiv__(self, other)
517 self.sbvalue.SetValueFromCString (str(result))
518 return result
519
520 def __imod__(self, other):
521 result = self.__and__(self, other)
522 self.sbvalue.SetValueFromCString (str(result))
523 return result
524
525 def __ipow__(self, other):
526 result = self.__pow__(self, other)
527 self.sbvalue.SetValueFromCString (str(result))
528 return result
529
530 def __ipow__(self, other, modulo):
531 result = self.__pow__(self, other, modulo)
532 self.sbvalue.SetValueFromCString (str(result))
533 return result
534
535 def __ilshift__(self, other):
536 result = self.__lshift__(other)
537 self.sbvalue.SetValueFromCString (str(result))
538 return result
539
540 def __irshift__(self, other):
541 result = self.__rshift__(other)
542 self.sbvalue.SetValueFromCString (str(result))
543 return result
544
545 def __iand__(self, other):
546 result = self.__and__(self, other)
547 self.sbvalue.SetValueFromCString (str(result))
548 return result
549
550 def __ixor__(self, other):
551 result = self.__xor__(self, other)
552 self.sbvalue.SetValueFromCString (str(result))
553 return result
554
555 def __ior__(self, other):
556 result = self.__ior__(self, other)
557 self.sbvalue.SetValueFromCString (str(result))
558 return result
559
560 def __neg__(self):
561 return -int(self)
562
563 def __pos__(self):
564 return +int(self)
565
566 def __abs__(self):
567 return abs(int(self))
568
569 def __invert__(self):
570 return ~int(self)
571
572 def __complex__(self):
573 return complex (int(self))
574
575 def __int__(self):
576 return self.sbvalue.GetValueAsSigned()
577
578 def __long__(self):
579 return self.sbvalue.GetValueAsSigned()
580
581 def __float__(self):
582 return float (self.sbvalue.GetValueAsSigned())
583
584 def __oct__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000585 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000586
587 def __hex__(self):
Greg Clayton1ea58022012-02-02 00:12:47 +0000588 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton9b8ff512012-02-01 01:46:19 +0000589
Greg Clayton1ea58022012-02-02 00:12:47 +0000590 def __eq__(self, other):
591 return self.sbvalue.GetValueAsUnsigned() == self.sbvalue.GetValueAsUnsigned()
592
593 def __neq__(self, other):
594 return not self.__eq__(other)
Greg Clayton9b8ff512012-02-01 01:46:19 +0000595%}
596