blob: 9e9feb8a3c7c7dadcf0063b487c8d292311015f9 [file] [log] [blame]
Caroline Ticedac97f32010-09-22 23:01:29 +00001
2%extend lldb::SBAddress {
Greg Clayton81e871e2012-02-04 02:27:34 +00003 PyObject *lldb::SBAddress::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +00004 lldb::SBStream description;
5 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +00006 const char *desc = description.GetData();
7 size_t desc_len = description.GetSize();
8 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
9 --desc_len;
10 if (desc_len > 0)
11 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000012 else
13 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000014 }
15}
16%extend lldb::SBBlock {
Greg Clayton81e871e2012-02-04 02:27:34 +000017 PyObject *lldb::SBBlock::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000018 lldb::SBStream description;
19 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000020 const char *desc = description.GetData();
21 size_t desc_len = description.GetSize();
22 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
23 --desc_len;
24 if (desc_len > 0)
25 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000026 else
27 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000028 }
29}
30%extend lldb::SBBreakpoint {
Greg Clayton81e871e2012-02-04 02:27:34 +000031 PyObject *lldb::SBBreakpoint::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000032 lldb::SBStream description;
Greg Clayton05faeb72010-10-07 04:19:01 +000033 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000034 const char *desc = description.GetData();
35 size_t desc_len = description.GetSize();
36 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
37 --desc_len;
38 if (desc_len > 0)
39 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +000040 else
41 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000042 }
Enrico Granatac3387332013-05-03 01:29:27 +000043
44 %pythoncode %{
45 def __eq__(self, rhs):
46 if not isinstance(rhs, type(self)):
47 return False
48
49 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
50
51 def __ne__(self, rhs):
52 if not isinstance(rhs, type(self)):
53 return True
54
55 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
56 %}
57
Caroline Ticedac97f32010-09-22 23:01:29 +000058}
59%extend lldb::SBBreakpointLocation {
Greg Clayton81e871e2012-02-04 02:27:34 +000060 PyObject *lldb::SBBreakpointLocation::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000061 lldb::SBStream description;
Johnny Chenfc87e2d2011-04-25 20:23:05 +000062 $self->GetDescription (description, lldb::eDescriptionLevelFull);
Greg Clayton24155862012-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 Clayton81e871e2012-02-04 02:27:34 +000069 else
70 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +000071 }
72}
Enrico Granatac3387332013-05-03 01:29:27 +000073
74%extend lldb::SBBroadcaster {
75 %pythoncode %{
76 def __eq__(self, rhs):
77 if not isinstance(rhs, type(self)):
78 return False
79
80 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
81
82 def __ne__(self, rhs):
83 if not isinstance(rhs, type(self)):
84 return True
85
86 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
87 %}
88}
89
Caroline Ticedac97f32010-09-22 23:01:29 +000090%extend lldb::SBCommandReturnObject {
Greg Clayton81e871e2012-02-04 02:27:34 +000091 PyObject *lldb::SBCommandReturnObject::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +000092 lldb::SBStream description;
93 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +000094 const char *desc = description.GetData();
95 size_t desc_len = description.GetSize();
96 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
97 --desc_len;
98 if (desc_len > 0)
99 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000100 else
101 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000102 }
Enrico Granataceba0712013-03-25 17:37:39 +0000103
104 /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage
105 they are meant to make an SBCommandReturnObject into a file-like object so that instructions of the sort
106 print >>sb_command_return_object, "something"
107 will work correctly */
108
Enrico Granata7d1f9392013-03-23 01:35:44 +0000109 void lldb::SBCommandReturnObject::write (const char* str)
110 {
111 if (str)
112 $self->Printf("%s",str);
113 }
114 void lldb::SBCommandReturnObject::flush ()
115 {}
Caroline Ticedac97f32010-09-22 23:01:29 +0000116}
117%extend lldb::SBCompileUnit {
Greg Clayton81e871e2012-02-04 02:27:34 +0000118 PyObject *lldb::SBCompileUnit::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000119 lldb::SBStream description;
120 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000121 const char *desc = description.GetData();
122 size_t desc_len = description.GetSize();
123 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
124 --desc_len;
125 if (desc_len > 0)
126 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000127 else
128 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000129 }
Enrico Granatac3387332013-05-03 01:29:27 +0000130 %pythoncode %{
131 def __eq__(self, rhs):
132 if not isinstance(rhs, type(self)):
133 return False
134
135 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
136
137 def __ne__(self, rhs):
138 if not isinstance(rhs, type(self)):
139 return True
140
141 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
142 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000143}
Enrico Granata9128ee22011-09-06 19:20:51 +0000144%extend lldb::SBData {
Greg Clayton81e871e2012-02-04 02:27:34 +0000145 PyObject *lldb::SBData::__str__ (){
Enrico Granata9128ee22011-09-06 19:20:51 +0000146 lldb::SBStream description;
147 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000148 const char *desc = description.GetData();
149 size_t desc_len = description.GetSize();
150 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
151 --desc_len;
152 if (desc_len > 0)
153 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000154 else
155 return PyString_FromString("");
Enrico Granata9128ee22011-09-06 19:20:51 +0000156 }
157}
Caroline Ticedac97f32010-09-22 23:01:29 +0000158%extend lldb::SBDebugger {
Greg Clayton81e871e2012-02-04 02:27:34 +0000159 PyObject *lldb::SBDebugger::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000160 lldb::SBStream description;
161 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000162 const char *desc = description.GetData();
163 size_t desc_len = description.GetSize();
164 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
165 --desc_len;
166 if (desc_len > 0)
167 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000168 else
169 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000170 }
171}
Enrico Granata10de0902012-10-10 22:54:17 +0000172%extend lldb::SBDeclaration {
173 PyObject *lldb::SBDeclaration::__str__ (){
174 lldb::SBStream description;
175 $self->GetDescription (description);
176 const char *desc = description.GetData();
177 size_t desc_len = description.GetSize();
178 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
179 --desc_len;
180 if (desc_len > 0)
181 return PyString_FromStringAndSize (desc, desc_len);
182 else
183 return PyString_FromString("");
184 }
Enrico Granatac3387332013-05-03 01:29:27 +0000185
186 %pythoncode %{
187 def __eq__(self, rhs):
188 if not isinstance(rhs, type(self)):
189 return False
190
191 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
192
193 def __ne__(self, rhs):
194 if not isinstance(rhs, type(self)):
195 return True
196
197 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
198 %}
199
Enrico Granata10de0902012-10-10 22:54:17 +0000200}
Caroline Ticedac97f32010-09-22 23:01:29 +0000201%extend lldb::SBError {
Greg Clayton81e871e2012-02-04 02:27:34 +0000202 PyObject *lldb::SBError::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000203 lldb::SBStream description;
204 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000205 const char *desc = description.GetData();
206 size_t desc_len = description.GetSize();
207 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
208 --desc_len;
209 if (desc_len > 0)
210 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000211 else
212 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000213 }
214}
215%extend lldb::SBFileSpec {
Greg Clayton81e871e2012-02-04 02:27:34 +0000216 PyObject *lldb::SBFileSpec::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000217 lldb::SBStream description;
218 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000219 const char *desc = description.GetData();
220 size_t desc_len = description.GetSize();
221 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
222 --desc_len;
223 if (desc_len > 0)
224 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000225 else
226 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000227 }
228}
229%extend lldb::SBFrame {
Greg Clayton81e871e2012-02-04 02:27:34 +0000230 PyObject *lldb::SBFrame::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000231 lldb::SBStream description;
232 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000233 const char *desc = description.GetData();
234 size_t desc_len = description.GetSize();
235 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
236 --desc_len;
237 if (desc_len > 0)
238 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000239 else
240 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000241 }
242}
243%extend lldb::SBFunction {
Greg Clayton81e871e2012-02-04 02:27:34 +0000244 PyObject *lldb::SBFunction::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000245 lldb::SBStream description;
246 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000247 const char *desc = description.GetData();
248 size_t desc_len = description.GetSize();
249 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
250 --desc_len;
251 if (desc_len > 0)
252 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000253 else
254 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000255 }
Enrico Granatac3387332013-05-03 01:29:27 +0000256
257 %pythoncode %{
258 def __eq__(self, rhs):
259 if not isinstance(rhs, type(self)):
260 return False
261
262 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
263
264 def __ne__(self, rhs):
265 if not isinstance(rhs, type(self)):
266 return True
267
268 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
269 %}
270
Caroline Ticedac97f32010-09-22 23:01:29 +0000271}
Greg Clayton1d273162010-10-06 03:09:58 +0000272%extend lldb::SBInstruction {
Greg Clayton81e871e2012-02-04 02:27:34 +0000273 PyObject *lldb::SBInstruction::__str__ (){
Greg Clayton1d273162010-10-06 03:09:58 +0000274 lldb::SBStream description;
275 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000276 const char *desc = description.GetData();
277 size_t desc_len = description.GetSize();
278 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
279 --desc_len;
280 if (desc_len > 0)
281 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000282 else
283 return PyString_FromString("");
Greg Clayton1d273162010-10-06 03:09:58 +0000284 }
285}
286%extend lldb::SBInstructionList {
Greg Clayton81e871e2012-02-04 02:27:34 +0000287 PyObject *lldb::SBInstructionList::__str__ (){
Greg Clayton1d273162010-10-06 03:09:58 +0000288 lldb::SBStream description;
289 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000290 const char *desc = description.GetData();
291 size_t desc_len = description.GetSize();
292 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
293 --desc_len;
294 if (desc_len > 0)
295 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000296 else
297 return PyString_FromString("");
Greg Clayton1d273162010-10-06 03:09:58 +0000298 }
299}
Caroline Ticedac97f32010-09-22 23:01:29 +0000300%extend lldb::SBLineEntry {
Greg Clayton81e871e2012-02-04 02:27:34 +0000301 PyObject *lldb::SBLineEntry::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000302 lldb::SBStream description;
303 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000304 const char *desc = description.GetData();
305 size_t desc_len = description.GetSize();
306 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
307 --desc_len;
308 if (desc_len > 0)
309 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000310 else
311 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000312 }
Enrico Granatac3387332013-05-03 01:29:27 +0000313
314 %pythoncode %{
315 def __eq__(self, rhs):
316 if not isinstance(rhs, type(self)):
317 return False
318
319 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
320
321 def __ne__(self, rhs):
322 if not isinstance(rhs, type(self)):
323 return True
324
325 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
326 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000327}
328%extend lldb::SBModule {
Greg Clayton81e871e2012-02-04 02:27:34 +0000329 PyObject *lldb::SBModule::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000330 lldb::SBStream description;
331 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000332 const char *desc = description.GetData();
333 size_t desc_len = description.GetSize();
334 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
335 --desc_len;
336 if (desc_len > 0)
337 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000338 else
339 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000340 }
Enrico Granatac3387332013-05-03 01:29:27 +0000341
342 %pythoncode %{
343 def __eq__(self, rhs):
344 if not isinstance(rhs, type(self)):
345 return False
346
347 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
348
349 def __ne__(self, rhs):
350 if not isinstance(rhs, type(self)):
351 return True
352
353 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
354 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000355}
Greg Clayton226cce22013-07-08 22:22:41 +0000356
357%extend lldb::SBModuleSpec {
358 PyObject *lldb::SBModuleSpec::__str__ (){
359 lldb::SBStream description;
360 $self->GetDescription (description);
361 const char *desc = description.GetData();
362 size_t desc_len = description.GetSize();
363 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
364 --desc_len;
365 if (desc_len > 0)
366 return PyString_FromStringAndSize (desc, desc_len);
367 else
368 return PyString_FromString("");
369 }
370}
371
372%extend lldb::SBModuleSpecList {
373 PyObject *lldb::SBModuleSpecList::__str__ (){
374 lldb::SBStream description;
375 $self->GetDescription (description);
376 const char *desc = description.GetData();
377 size_t desc_len = description.GetSize();
378 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
379 --desc_len;
380 if (desc_len > 0)
381 return PyString_FromStringAndSize (desc, desc_len);
382 else
383 return PyString_FromString("");
384 }
385}
386
Caroline Ticedac97f32010-09-22 23:01:29 +0000387%extend lldb::SBProcess {
Greg Clayton81e871e2012-02-04 02:27:34 +0000388 PyObject *lldb::SBProcess::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000389 lldb::SBStream description;
390 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000391 const char *desc = description.GetData();
392 size_t desc_len = description.GetSize();
393 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
394 --desc_len;
395 if (desc_len > 0)
396 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000397 else
398 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000399 }
400}
Greg Claytond9dc52d2011-09-24 05:04:40 +0000401%extend lldb::SBSection {
Greg Clayton81e871e2012-02-04 02:27:34 +0000402 PyObject *lldb::SBSection::__str__ (){
Greg Claytond9dc52d2011-09-24 05:04:40 +0000403 lldb::SBStream description;
404 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000405 const char *desc = description.GetData();
406 size_t desc_len = description.GetSize();
407 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
408 --desc_len;
409 if (desc_len > 0)
410 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000411 else
412 return PyString_FromString("");
Greg Claytond9dc52d2011-09-24 05:04:40 +0000413 }
Enrico Granatac3387332013-05-03 01:29:27 +0000414
415 %pythoncode %{
416 def __eq__(self, rhs):
417 if not isinstance(rhs, type(self)):
418 return False
419
420 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
421
422 def __ne__(self, rhs):
423 if not isinstance(rhs, type(self)):
424 return True
425
426 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
427 %}
Greg Claytond9dc52d2011-09-24 05:04:40 +0000428}
Enrico Granataceba0712013-03-25 17:37:39 +0000429%extend lldb::SBStream {
430 /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage
431 they are meant to make an SBStream into a file-like object so that instructions of the sort
432 print >>sb_stream, "something"
433 will work correctly */
434
435 void lldb::SBStream::write (const char* str)
436 {
437 if (str)
438 $self->Printf("%s",str);
439 }
440 void lldb::SBStream::flush ()
441 {}
442}
Caroline Ticedac97f32010-09-22 23:01:29 +0000443%extend lldb::SBSymbol {
Greg Clayton81e871e2012-02-04 02:27:34 +0000444 PyObject *lldb::SBSymbol::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000445 lldb::SBStream description;
446 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000447 const char *desc = description.GetData();
448 size_t desc_len = description.GetSize();
449 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
450 --desc_len;
451 if (desc_len > 0)
452 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000453 else
454 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000455 }
Enrico Granatac3387332013-05-03 01:29:27 +0000456 %pythoncode %{
457 def __eq__(self, rhs):
458 if not isinstance(rhs, type(self)):
459 return False
460
461 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
462
463 def __ne__(self, rhs):
464 if not isinstance(rhs, type(self)):
465 return True
466
467 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
468 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000469}
470%extend lldb::SBSymbolContext {
Greg Clayton81e871e2012-02-04 02:27:34 +0000471 PyObject *lldb::SBSymbolContext::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000472 lldb::SBStream description;
473 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000474 const char *desc = description.GetData();
475 size_t desc_len = description.GetSize();
476 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
477 --desc_len;
478 if (desc_len > 0)
479 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000480 else
481 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000482 }
483}
Greg Clayton5569e642012-02-06 01:44:54 +0000484%extend lldb::SBSymbolContextList {
485 PyObject *lldb::SBSymbolContextList::__str__ (){
486 lldb::SBStream description;
487 $self->GetDescription (description);
488 const char *desc = description.GetData();
489 size_t desc_len = description.GetSize();
490 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
491 --desc_len;
492 if (desc_len > 0)
493 return PyString_FromStringAndSize (desc, desc_len);
494 else
495 return PyString_FromString("");
496 }
497}
Enrico Granatac3387332013-05-03 01:29:27 +0000498
Caroline Ticedac97f32010-09-22 23:01:29 +0000499%extend lldb::SBTarget {
Greg Clayton81e871e2012-02-04 02:27:34 +0000500 PyObject *lldb::SBTarget::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000501 lldb::SBStream description;
Caroline Ticeceb6b132010-10-26 03:11:13 +0000502 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000503 const char *desc = description.GetData();
504 size_t desc_len = description.GetSize();
505 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
506 --desc_len;
507 if (desc_len > 0)
508 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000509 else
510 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000511 }
Enrico Granatac3387332013-05-03 01:29:27 +0000512
513 %pythoncode %{
514 def __eq__(self, rhs):
515 if not isinstance(rhs, type(self)):
516 return False
517
518 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
519
520 def __ne__(self, rhs):
521 if not isinstance(rhs, type(self)):
522 return True
523
524 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
525 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000526}
Enrico Granatac3387332013-05-03 01:29:27 +0000527
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000528%extend lldb::SBType {
Greg Clayton81e871e2012-02-04 02:27:34 +0000529 PyObject *lldb::SBType::__str__ (){
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000530 lldb::SBStream description;
531 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000532 const char *desc = description.GetData();
533 size_t desc_len = description.GetSize();
534 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
535 --desc_len;
536 if (desc_len > 0)
537 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000538 else
539 return PyString_FromString("");
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000540 }
541}
Enrico Granata061858c2012-02-15 02:34:21 +0000542%extend lldb::SBTypeCategory {
543 PyObject *lldb::SBTypeCategory::__str__ (){
544 lldb::SBStream description;
545 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
546 const char *desc = description.GetData();
547 size_t desc_len = description.GetSize();
548 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
549 --desc_len;
550 if (desc_len > 0)
551 return PyString_FromStringAndSize (desc, desc_len);
552 else
553 return PyString_FromString("");
554 }
555}
556%extend lldb::SBTypeFilter {
557 PyObject *lldb::SBTypeFilter::__str__ (){
558 lldb::SBStream description;
559 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
560 const char *desc = description.GetData();
561 size_t desc_len = description.GetSize();
562 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
563 --desc_len;
564 if (desc_len > 0)
565 return PyString_FromStringAndSize (desc, desc_len);
566 else
567 return PyString_FromString("");
568 }
Enrico Granatac3387332013-05-03 01:29:27 +0000569 %pythoncode %{
570 def __eq__(self, rhs):
571 if not isinstance(rhs, type(self)):
572 return False
573
574 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
575
576 def __ne__(self, rhs):
577 if not isinstance(rhs, type(self)):
578 return True
579
580 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
581 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000582}
583%extend lldb::SBTypeFormat {
584 PyObject *lldb::SBTypeFormat::__str__ (){
585 lldb::SBStream description;
586 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
587 const char *desc = description.GetData();
588 size_t desc_len = description.GetSize();
589 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
590 --desc_len;
591 if (desc_len > 0)
592 return PyString_FromStringAndSize (desc, desc_len);
593 else
594 return PyString_FromString("");
595 }
596}
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000597%extend lldb::SBTypeMember {
Greg Clayton81e871e2012-02-04 02:27:34 +0000598 PyObject *lldb::SBTypeMember::__str__ (){
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000599 lldb::SBStream description;
600 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
Greg Clayton24155862012-02-01 02:30:27 +0000601 const char *desc = description.GetData();
602 size_t desc_len = description.GetSize();
603 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
604 --desc_len;
605 if (desc_len > 0)
606 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000607 else
608 return PyString_FromString("");
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000609 }
610}
Todd Fiala732215f2014-06-02 20:55:29 +0000611%extend lldb::SBTypeEnumMember {
612 PyObject *lldb::SBTypeEnumMember::__str__ (){
613 lldb::SBStream description;
614 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
615 const char *desc = description.GetData();
616 size_t desc_len = description.GetSize();
617 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
618 --desc_len;
619 if (desc_len > 0)
620 return PyString_FromStringAndSize (desc, desc_len);
621 else
622 return PyString_FromString("");
623 }
624}
Enrico Granata061858c2012-02-15 02:34:21 +0000625%extend lldb::SBTypeNameSpecifier {
626 PyObject *lldb::SBTypeNameSpecifier::__str__ (){
627 lldb::SBStream description;
628 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
629 const char *desc = description.GetData();
630 size_t desc_len = description.GetSize();
631 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
632 --desc_len;
633 if (desc_len > 0)
634 return PyString_FromStringAndSize (desc, desc_len);
635 else
636 return PyString_FromString("");
637 }
Enrico Granatac3387332013-05-03 01:29:27 +0000638 %pythoncode %{
639 def __eq__(self, rhs):
640 if not isinstance(rhs, type(self)):
641 return False
642
643 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
644
645 def __ne__(self, rhs):
646 if not isinstance(rhs, type(self)):
647 return True
648
649 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
650 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000651}
652%extend lldb::SBTypeSummary {
653 PyObject *lldb::SBTypeSummary::__str__ (){
654 lldb::SBStream description;
655 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
656 const char *desc = description.GetData();
657 size_t desc_len = description.GetSize();
658 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
659 --desc_len;
660 if (desc_len > 0)
661 return PyString_FromStringAndSize (desc, desc_len);
662 else
663 return PyString_FromString("");
664 }
Enrico Granatac3387332013-05-03 01:29:27 +0000665 %pythoncode %{
666 def __eq__(self, rhs):
667 if not isinstance(rhs, type(self)):
668 return False
669
670 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
671
672 def __ne__(self, rhs):
673 if not isinstance(rhs, type(self)):
674 return True
675
676 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
677 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000678}
679%extend lldb::SBTypeSynthetic {
680 PyObject *lldb::SBTypeSynthetic::__str__ (){
681 lldb::SBStream description;
682 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
683 const char *desc = description.GetData();
684 size_t desc_len = description.GetSize();
685 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
686 --desc_len;
687 if (desc_len > 0)
688 return PyString_FromStringAndSize (desc, desc_len);
689 else
690 return PyString_FromString("");
691 }
Enrico Granatac3387332013-05-03 01:29:27 +0000692 %pythoncode %{
693 def __eq__(self, rhs):
694 if not isinstance(rhs, type(self)):
695 return False
696
697 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
698
699 def __ne__(self, rhs):
700 if not isinstance(rhs, type(self)):
701 return True
702
703 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
704 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000705}
Caroline Ticedac97f32010-09-22 23:01:29 +0000706%extend lldb::SBThread {
Greg Clayton81e871e2012-02-04 02:27:34 +0000707 PyObject *lldb::SBThread::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000708 lldb::SBStream description;
709 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000710 const char *desc = description.GetData();
711 size_t desc_len = description.GetSize();
712 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
713 --desc_len;
714 if (desc_len > 0)
715 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000716 else
717 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000718 }
Enrico Granatac3387332013-05-03 01:29:27 +0000719 %pythoncode %{
720 def __eq__(self, rhs):
721 if not isinstance(rhs, type(self)):
722 return False
723
724 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
725
726 def __ne__(self, rhs):
727 if not isinstance(rhs, type(self)):
728 return True
729
730 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
731 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000732}
733%extend lldb::SBValue {
Greg Clayton81e871e2012-02-04 02:27:34 +0000734 PyObject *lldb::SBValue::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000735 lldb::SBStream description;
736 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000737 const char *desc = description.GetData();
738 size_t desc_len = description.GetSize();
739 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
740 --desc_len;
741 if (desc_len > 0)
742 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000743 else
744 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000745 }
746}
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000747%extend lldb::SBValueList {
Greg Claytondda8c7d2013-04-11 22:24:25 +0000748 PyObject *lldb::SBValueList::__str__ (){
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000749 lldb::SBStream description;
750 const size_t n = $self->GetSize();
751 if (n)
752 {
753 for (size_t i=0; i<n; ++i)
754 $self->GetValueAtIndex(i).GetDescription(description);
755 }
756 else
757 {
758 description.Printf("<empty> lldb.SBValueList()");
759 }
760 const char *desc = description.GetData();
761 size_t desc_len = description.GetSize();
762 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
763 --desc_len;
764 if (desc_len > 0)
765 return PyString_FromStringAndSize (desc, desc_len);
Greg Claytondda8c7d2013-04-11 22:24:25 +0000766 else
767 return PyString_FromString("");
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000768 }
769}
Greg Clayton1b282f92011-10-13 18:08:26 +0000770%extend lldb::SBWatchpoint {
Greg Clayton81e871e2012-02-04 02:27:34 +0000771 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chend4dd7992011-09-27 01:19:20 +0000772 lldb::SBStream description;
773 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton24155862012-02-01 02:30:27 +0000774 const char *desc = description.GetData();
775 size_t desc_len = description.GetSize();
776 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
777 --desc_len;
778 if (desc_len > 0)
779 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000780 else
781 return PyString_FromString("");
Johnny Chend4dd7992011-09-27 01:19:20 +0000782 }
783}
Caroline Ticedac97f32010-09-22 23:01:29 +0000784
Filipe Cabecinhasc5041912012-08-25 00:29:07 +0000785
786// %extend lldb::SBDebugger {
787// // FIXME: We can't get the callback and baton
788// PyObject *lldb::SBDebugger (){
789// // Only call Py_XDECREF if we have a Python object (or NULL)
790// if (LLDBSwigPythonCallPythonLogOutputCallback == $self->GetLogOutPutCallback())
791// Py_XDECREF($self->GetCallbackBaton());
792// }
793// }
Filipe Cabecinhas6eb31e72012-08-22 13:25:10 +0000794
Greg Clayton05e8d192012-02-01 01:46:19 +0000795%pythoncode %{
796
Greg Clayton88e0f612013-06-19 01:38:02 +0000797def command(*args, **kwargs):
Greg Claytond8c3d4b2013-06-19 21:50:28 +0000798 import lldb
Greg Clayton88e0f612013-06-19 01:38:02 +0000799 """A decorator function that registers an LLDB command line
800 command that is bound to the function it is attached to."""
801 class obj(object):
802 """The object that tracks adding the command to LLDB one time and handles
803 calling the function on subsequent calls."""
804 def __init__(self, function, command_name, doc = None):
805 if doc:
806 function.__doc__ = doc
807 command = "command script add -f %s.%s %s" % (function.__module__, function.__name__, command_name)
Greg Claytond8c3d4b2013-06-19 21:50:28 +0000808 lldb.debugger.HandleCommand(command)
Greg Clayton88e0f612013-06-19 01:38:02 +0000809 self.function = function
810 def __call__(self, *args, **kwargs):
811 self.function(*args, **kwargs)
812 def callable(function):
813 """Creates a callable object that gets used."""
814 return obj(function, *args, **kwargs)
815 return callable
816
Greg Clayton5569e642012-02-06 01:44:54 +0000817class declaration(object):
818 '''A class that represents a source declaration location with file, line and column.'''
819 def __init__(self, file, line, col):
820 self.file = file
821 self.line = line
822 self.col = col
823
Enrico Granataac9df2d2013-03-25 18:53:07 +0000824class value_iter(object):
825 def __iter__(self):
826 return self
827
828 def next(self):
829 if self.index >= self.length:
830 raise StopIteration()
831 child_sbvalue = self.sbvalue.GetChildAtIndex(self.index)
832 self.index += 1
833 return value(child_sbvalue)
834
835 def __init__(self,value):
836 self.index = 0
837 self.sbvalue = value
838 if type(self.sbvalue) is value:
839 self.sbvalue = self.sbvalue.sbvalue
840 self.length = self.sbvalue.GetNumChildren()
841
Greg Clayton05e8d192012-02-01 01:46:19 +0000842class value(object):
843 '''A class designed to wrap lldb.SBValue() objects so the resulting object
844 can be used as a variable would be in code. So if you have a Point structure
845 variable in your code in the current frame named "pt", you can initialize an instance
846 of this class with it:
847
848 pt = lldb.value(lldb.frame.FindVariable("pt"))
849 print pt
850 print pt.x
851 print pt.y
852
853 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
854 print rectangle_array[12]
855 print rectangle_array[5].origin.x'''
856 def __init__(self, sbvalue):
857 self.sbvalue = sbvalue
858
859 def __nonzero__(self):
860 return self.sbvalue.__nonzero__()
861
Greg Clayton05e8d192012-02-01 01:46:19 +0000862 def __str__(self):
863 return self.sbvalue.__str__()
864
865 def __getitem__(self, key):
866 # Allow array access if this value has children...
Enrico Granata944b4c42012-10-08 17:32:55 +0000867 if type(key) is value:
Enrico Granataac9df2d2013-03-25 18:53:07 +0000868 key = int(key)
869 if type(key) is int:
870 child_sbvalue = (self.sbvalue.GetValueForExpressionPath("[%i]" % key))
871 if child_sbvalue and child_sbvalue.IsValid():
872 return value(child_sbvalue)
873 raise IndexError("Index '%d' is out of range" % key)
Enrico Granata944b4c42012-10-08 17:32:55 +0000874 raise TypeError("No array item of type %s" % str(type(key)))
Greg Clayton05e8d192012-02-01 01:46:19 +0000875
Enrico Granataac9df2d2013-03-25 18:53:07 +0000876 def __iter__(self):
877 return value_iter(self.sbvalue)
878
Greg Clayton05e8d192012-02-01 01:46:19 +0000879 def __getattr__(self, name):
880 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
Enrico Granataac9df2d2013-03-25 18:53:07 +0000881 if child_sbvalue and child_sbvalue.IsValid():
Greg Clayton05e8d192012-02-01 01:46:19 +0000882 return value(child_sbvalue)
Enrico Granata944b4c42012-10-08 17:32:55 +0000883 raise AttributeError("Attribute '%s' is not defined" % name)
Greg Clayton05e8d192012-02-01 01:46:19 +0000884
885 def __add__(self, other):
886 return int(self) + int(other)
887
888 def __sub__(self, other):
889 return int(self) - int(other)
890
891 def __mul__(self, other):
892 return int(self) * int(other)
893
894 def __floordiv__(self, other):
895 return int(self) // int(other)
896
897 def __mod__(self, other):
898 return int(self) % int(other)
899
900 def __divmod__(self, other):
901 return int(self) % int(other)
902
903 def __pow__(self, other):
904 return int(self) ** int(other)
905
906 def __lshift__(self, other):
907 return int(self) << int(other)
908
909 def __rshift__(self, other):
910 return int(self) >> int(other)
911
912 def __and__(self, other):
913 return int(self) & int(other)
914
915 def __xor__(self, other):
916 return int(self) ^ int(other)
917
918 def __or__(self, other):
919 return int(self) | int(other)
920
921 def __div__(self, other):
922 return int(self) / int(other)
923
924 def __truediv__(self, other):
925 return int(self) / int(other)
926
927 def __iadd__(self, other):
928 result = self.__add__(other)
929 self.sbvalue.SetValueFromCString (str(result))
930 return result
931
932 def __isub__(self, other):
933 result = self.__sub__(other)
934 self.sbvalue.SetValueFromCString (str(result))
935 return result
936
937 def __imul__(self, other):
938 result = self.__mul__(other)
939 self.sbvalue.SetValueFromCString (str(result))
940 return result
941
942 def __idiv__(self, other):
943 result = self.__div__(other)
944 self.sbvalue.SetValueFromCString (str(result))
945 return result
946
947 def __itruediv__(self, other):
948 result = self.__truediv__(other)
949 self.sbvalue.SetValueFromCString (str(result))
950 return result
951
952 def __ifloordiv__(self, other):
953 result = self.__floordiv__(self, other)
954 self.sbvalue.SetValueFromCString (str(result))
955 return result
956
957 def __imod__(self, other):
958 result = self.__and__(self, other)
959 self.sbvalue.SetValueFromCString (str(result))
960 return result
961
962 def __ipow__(self, other):
963 result = self.__pow__(self, other)
964 self.sbvalue.SetValueFromCString (str(result))
965 return result
966
967 def __ipow__(self, other, modulo):
968 result = self.__pow__(self, other, modulo)
969 self.sbvalue.SetValueFromCString (str(result))
970 return result
971
972 def __ilshift__(self, other):
973 result = self.__lshift__(other)
974 self.sbvalue.SetValueFromCString (str(result))
975 return result
976
977 def __irshift__(self, other):
978 result = self.__rshift__(other)
979 self.sbvalue.SetValueFromCString (str(result))
980 return result
981
982 def __iand__(self, other):
983 result = self.__and__(self, other)
984 self.sbvalue.SetValueFromCString (str(result))
985 return result
986
987 def __ixor__(self, other):
988 result = self.__xor__(self, other)
989 self.sbvalue.SetValueFromCString (str(result))
990 return result
991
992 def __ior__(self, other):
993 result = self.__ior__(self, other)
994 self.sbvalue.SetValueFromCString (str(result))
995 return result
996
997 def __neg__(self):
998 return -int(self)
999
1000 def __pos__(self):
1001 return +int(self)
1002
1003 def __abs__(self):
1004 return abs(int(self))
1005
1006 def __invert__(self):
1007 return ~int(self)
1008
1009 def __complex__(self):
1010 return complex (int(self))
1011
1012 def __int__(self):
1013 return self.sbvalue.GetValueAsSigned()
1014
1015 def __long__(self):
1016 return self.sbvalue.GetValueAsSigned()
1017
1018 def __float__(self):
1019 return float (self.sbvalue.GetValueAsSigned())
1020
1021 def __oct__(self):
Greg Clayton43484c52012-02-02 00:12:47 +00001022 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +00001023
1024 def __hex__(self):
Greg Clayton43484c52012-02-02 00:12:47 +00001025 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +00001026
Enrico Granataac9df2d2013-03-25 18:53:07 +00001027 def __len__(self):
1028 return self.sbvalue.GetNumChildren()
1029
Greg Clayton43484c52012-02-02 00:12:47 +00001030 def __eq__(self, other):
Enrico Granata944b4c42012-10-08 17:32:55 +00001031 if type(other) is int:
1032 return int(self) == other
1033 elif type(other) is str:
1034 return str(self) == other
1035 elif type(other) is value:
1036 self_err = SBError()
1037 other_err = SBError()
1038 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
1039 if self_err.fail:
1040 raise ValueError("unable to extract value of self")
1041 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
1042 if other_err.fail:
1043 raise ValueError("unable to extract value of other")
1044 return self_val == other_val
1045 raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
1046
Greg Clayton43484c52012-02-02 00:12:47 +00001047 def __neq__(self, other):
1048 return not self.__eq__(other)
Greg Clayton05e8d192012-02-01 01:46:19 +00001049%}