blob: 3dbcb881b95dd41b0387d419f1a841bc9f97c5d7 [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}
Enrico Granata061858c2012-02-15 02:34:21 +0000611%extend lldb::SBTypeNameSpecifier {
612 PyObject *lldb::SBTypeNameSpecifier::__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 }
Enrico Granatac3387332013-05-03 01:29:27 +0000624 %pythoncode %{
625 def __eq__(self, rhs):
626 if not isinstance(rhs, type(self)):
627 return False
628
629 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
630
631 def __ne__(self, rhs):
632 if not isinstance(rhs, type(self)):
633 return True
634
635 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
636 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000637}
638%extend lldb::SBTypeSummary {
639 PyObject *lldb::SBTypeSummary::__str__ (){
640 lldb::SBStream description;
641 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
642 const char *desc = description.GetData();
643 size_t desc_len = description.GetSize();
644 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
645 --desc_len;
646 if (desc_len > 0)
647 return PyString_FromStringAndSize (desc, desc_len);
648 else
649 return PyString_FromString("");
650 }
Enrico Granatac3387332013-05-03 01:29:27 +0000651 %pythoncode %{
652 def __eq__(self, rhs):
653 if not isinstance(rhs, type(self)):
654 return False
655
656 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
657
658 def __ne__(self, rhs):
659 if not isinstance(rhs, type(self)):
660 return True
661
662 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
663 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000664}
665%extend lldb::SBTypeSynthetic {
666 PyObject *lldb::SBTypeSynthetic::__str__ (){
667 lldb::SBStream description;
668 $self->GetDescription (description, lldb::eDescriptionLevelBrief);
669 const char *desc = description.GetData();
670 size_t desc_len = description.GetSize();
671 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
672 --desc_len;
673 if (desc_len > 0)
674 return PyString_FromStringAndSize (desc, desc_len);
675 else
676 return PyString_FromString("");
677 }
Enrico Granatac3387332013-05-03 01:29:27 +0000678 %pythoncode %{
679 def __eq__(self, rhs):
680 if not isinstance(rhs, type(self)):
681 return False
682
683 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
684
685 def __ne__(self, rhs):
686 if not isinstance(rhs, type(self)):
687 return True
688
689 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
690 %}
Enrico Granata061858c2012-02-15 02:34:21 +0000691}
Caroline Ticedac97f32010-09-22 23:01:29 +0000692%extend lldb::SBThread {
Greg Clayton81e871e2012-02-04 02:27:34 +0000693 PyObject *lldb::SBThread::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000694 lldb::SBStream description;
695 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000696 const char *desc = description.GetData();
697 size_t desc_len = description.GetSize();
698 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
699 --desc_len;
700 if (desc_len > 0)
701 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000702 else
703 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000704 }
Enrico Granatac3387332013-05-03 01:29:27 +0000705 %pythoncode %{
706 def __eq__(self, rhs):
707 if not isinstance(rhs, type(self)):
708 return False
709
710 return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs)
711
712 def __ne__(self, rhs):
713 if not isinstance(rhs, type(self)):
714 return True
715
716 return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs)
717 %}
Caroline Ticedac97f32010-09-22 23:01:29 +0000718}
719%extend lldb::SBValue {
Greg Clayton81e871e2012-02-04 02:27:34 +0000720 PyObject *lldb::SBValue::__str__ (){
Caroline Ticedac97f32010-09-22 23:01:29 +0000721 lldb::SBStream description;
722 $self->GetDescription (description);
Greg Clayton24155862012-02-01 02:30:27 +0000723 const char *desc = description.GetData();
724 size_t desc_len = description.GetSize();
725 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
726 --desc_len;
727 if (desc_len > 0)
728 return PyString_FromStringAndSize (desc, desc_len);
Greg Clayton81e871e2012-02-04 02:27:34 +0000729 else
730 return PyString_FromString("");
Caroline Ticedac97f32010-09-22 23:01:29 +0000731 }
732}
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000733%extend lldb::SBValueList {
Greg Claytondda8c7d2013-04-11 22:24:25 +0000734 PyObject *lldb::SBValueList::__str__ (){
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000735 lldb::SBStream description;
736 const size_t n = $self->GetSize();
737 if (n)
738 {
739 for (size_t i=0; i<n; ++i)
740 $self->GetValueAtIndex(i).GetDescription(description);
741 }
742 else
743 {
744 description.Printf("<empty> lldb.SBValueList()");
745 }
746 const char *desc = description.GetData();
747 size_t desc_len = description.GetSize();
748 if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
749 --desc_len;
750 if (desc_len > 0)
751 return PyString_FromStringAndSize (desc, desc_len);
Greg Claytondda8c7d2013-04-11 22:24:25 +0000752 else
753 return PyString_FromString("");
Greg Clayton7edbdfc2012-02-03 07:02:37 +0000754 }
755}
Greg Clayton1b282f92011-10-13 18:08:26 +0000756%extend lldb::SBWatchpoint {
Greg Clayton81e871e2012-02-04 02:27:34 +0000757 PyObject *lldb::SBWatchpoint::__str__ (){
Johnny Chend4dd7992011-09-27 01:19:20 +0000758 lldb::SBStream description;
759 $self->GetDescription (description, lldb::eDescriptionLevelVerbose);
Greg Clayton24155862012-02-01 02:30:27 +0000760 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 Clayton81e871e2012-02-04 02:27:34 +0000766 else
767 return PyString_FromString("");
Johnny Chend4dd7992011-09-27 01:19:20 +0000768 }
769}
Caroline Ticedac97f32010-09-22 23:01:29 +0000770
Filipe Cabecinhasc5041912012-08-25 00:29:07 +0000771
772// %extend lldb::SBDebugger {
773// // FIXME: We can't get the callback and baton
774// PyObject *lldb::SBDebugger (){
775// // Only call Py_XDECREF if we have a Python object (or NULL)
776// if (LLDBSwigPythonCallPythonLogOutputCallback == $self->GetLogOutPutCallback())
777// Py_XDECREF($self->GetCallbackBaton());
778// }
779// }
Filipe Cabecinhas6eb31e72012-08-22 13:25:10 +0000780
Greg Clayton05e8d192012-02-01 01:46:19 +0000781%pythoncode %{
782
Greg Clayton88e0f612013-06-19 01:38:02 +0000783def command(*args, **kwargs):
Greg Claytond8c3d4b2013-06-19 21:50:28 +0000784 import lldb
Greg Clayton88e0f612013-06-19 01:38:02 +0000785 """A decorator function that registers an LLDB command line
786 command that is bound to the function it is attached to."""
787 class obj(object):
788 """The object that tracks adding the command to LLDB one time and handles
789 calling the function on subsequent calls."""
790 def __init__(self, function, command_name, doc = None):
791 if doc:
792 function.__doc__ = doc
793 command = "command script add -f %s.%s %s" % (function.__module__, function.__name__, command_name)
Greg Claytond8c3d4b2013-06-19 21:50:28 +0000794 lldb.debugger.HandleCommand(command)
Greg Clayton88e0f612013-06-19 01:38:02 +0000795 self.function = function
796 def __call__(self, *args, **kwargs):
797 self.function(*args, **kwargs)
798 def callable(function):
799 """Creates a callable object that gets used."""
800 return obj(function, *args, **kwargs)
801 return callable
802
Greg Clayton5569e642012-02-06 01:44:54 +0000803class declaration(object):
804 '''A class that represents a source declaration location with file, line and column.'''
805 def __init__(self, file, line, col):
806 self.file = file
807 self.line = line
808 self.col = col
809
Enrico Granataac9df2d2013-03-25 18:53:07 +0000810class value_iter(object):
811 def __iter__(self):
812 return self
813
814 def next(self):
815 if self.index >= self.length:
816 raise StopIteration()
817 child_sbvalue = self.sbvalue.GetChildAtIndex(self.index)
818 self.index += 1
819 return value(child_sbvalue)
820
821 def __init__(self,value):
822 self.index = 0
823 self.sbvalue = value
824 if type(self.sbvalue) is value:
825 self.sbvalue = self.sbvalue.sbvalue
826 self.length = self.sbvalue.GetNumChildren()
827
Greg Clayton05e8d192012-02-01 01:46:19 +0000828class value(object):
829 '''A class designed to wrap lldb.SBValue() objects so the resulting object
830 can be used as a variable would be in code. So if you have a Point structure
831 variable in your code in the current frame named "pt", you can initialize an instance
832 of this class with it:
833
834 pt = lldb.value(lldb.frame.FindVariable("pt"))
835 print pt
836 print pt.x
837 print pt.y
838
839 pt = lldb.value(lldb.frame.FindVariable("rectangle_array"))
840 print rectangle_array[12]
841 print rectangle_array[5].origin.x'''
842 def __init__(self, sbvalue):
843 self.sbvalue = sbvalue
844
845 def __nonzero__(self):
846 return self.sbvalue.__nonzero__()
847
Greg Clayton05e8d192012-02-01 01:46:19 +0000848 def __str__(self):
849 return self.sbvalue.__str__()
850
851 def __getitem__(self, key):
852 # Allow array access if this value has children...
Enrico Granata944b4c42012-10-08 17:32:55 +0000853 if type(key) is value:
Enrico Granataac9df2d2013-03-25 18:53:07 +0000854 key = int(key)
855 if type(key) is int:
856 child_sbvalue = (self.sbvalue.GetValueForExpressionPath("[%i]" % key))
857 if child_sbvalue and child_sbvalue.IsValid():
858 return value(child_sbvalue)
859 raise IndexError("Index '%d' is out of range" % key)
Enrico Granata944b4c42012-10-08 17:32:55 +0000860 raise TypeError("No array item of type %s" % str(type(key)))
Greg Clayton05e8d192012-02-01 01:46:19 +0000861
Enrico Granataac9df2d2013-03-25 18:53:07 +0000862 def __iter__(self):
863 return value_iter(self.sbvalue)
864
Greg Clayton05e8d192012-02-01 01:46:19 +0000865 def __getattr__(self, name):
866 child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
Enrico Granataac9df2d2013-03-25 18:53:07 +0000867 if child_sbvalue and child_sbvalue.IsValid():
Greg Clayton05e8d192012-02-01 01:46:19 +0000868 return value(child_sbvalue)
Enrico Granata944b4c42012-10-08 17:32:55 +0000869 raise AttributeError("Attribute '%s' is not defined" % name)
Greg Clayton05e8d192012-02-01 01:46:19 +0000870
871 def __add__(self, other):
872 return int(self) + int(other)
873
874 def __sub__(self, other):
875 return int(self) - int(other)
876
877 def __mul__(self, other):
878 return int(self) * int(other)
879
880 def __floordiv__(self, other):
881 return int(self) // int(other)
882
883 def __mod__(self, other):
884 return int(self) % int(other)
885
886 def __divmod__(self, other):
887 return int(self) % int(other)
888
889 def __pow__(self, other):
890 return int(self) ** int(other)
891
892 def __lshift__(self, other):
893 return int(self) << int(other)
894
895 def __rshift__(self, other):
896 return int(self) >> int(other)
897
898 def __and__(self, other):
899 return int(self) & int(other)
900
901 def __xor__(self, other):
902 return int(self) ^ int(other)
903
904 def __or__(self, other):
905 return int(self) | int(other)
906
907 def __div__(self, other):
908 return int(self) / int(other)
909
910 def __truediv__(self, other):
911 return int(self) / int(other)
912
913 def __iadd__(self, other):
914 result = self.__add__(other)
915 self.sbvalue.SetValueFromCString (str(result))
916 return result
917
918 def __isub__(self, other):
919 result = self.__sub__(other)
920 self.sbvalue.SetValueFromCString (str(result))
921 return result
922
923 def __imul__(self, other):
924 result = self.__mul__(other)
925 self.sbvalue.SetValueFromCString (str(result))
926 return result
927
928 def __idiv__(self, other):
929 result = self.__div__(other)
930 self.sbvalue.SetValueFromCString (str(result))
931 return result
932
933 def __itruediv__(self, other):
934 result = self.__truediv__(other)
935 self.sbvalue.SetValueFromCString (str(result))
936 return result
937
938 def __ifloordiv__(self, other):
939 result = self.__floordiv__(self, other)
940 self.sbvalue.SetValueFromCString (str(result))
941 return result
942
943 def __imod__(self, other):
944 result = self.__and__(self, other)
945 self.sbvalue.SetValueFromCString (str(result))
946 return result
947
948 def __ipow__(self, other):
949 result = self.__pow__(self, other)
950 self.sbvalue.SetValueFromCString (str(result))
951 return result
952
953 def __ipow__(self, other, modulo):
954 result = self.__pow__(self, other, modulo)
955 self.sbvalue.SetValueFromCString (str(result))
956 return result
957
958 def __ilshift__(self, other):
959 result = self.__lshift__(other)
960 self.sbvalue.SetValueFromCString (str(result))
961 return result
962
963 def __irshift__(self, other):
964 result = self.__rshift__(other)
965 self.sbvalue.SetValueFromCString (str(result))
966 return result
967
968 def __iand__(self, other):
969 result = self.__and__(self, other)
970 self.sbvalue.SetValueFromCString (str(result))
971 return result
972
973 def __ixor__(self, other):
974 result = self.__xor__(self, other)
975 self.sbvalue.SetValueFromCString (str(result))
976 return result
977
978 def __ior__(self, other):
979 result = self.__ior__(self, other)
980 self.sbvalue.SetValueFromCString (str(result))
981 return result
982
983 def __neg__(self):
984 return -int(self)
985
986 def __pos__(self):
987 return +int(self)
988
989 def __abs__(self):
990 return abs(int(self))
991
992 def __invert__(self):
993 return ~int(self)
994
995 def __complex__(self):
996 return complex (int(self))
997
998 def __int__(self):
999 return self.sbvalue.GetValueAsSigned()
1000
1001 def __long__(self):
1002 return self.sbvalue.GetValueAsSigned()
1003
1004 def __float__(self):
1005 return float (self.sbvalue.GetValueAsSigned())
1006
1007 def __oct__(self):
Greg Clayton43484c52012-02-02 00:12:47 +00001008 return '0%o' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +00001009
1010 def __hex__(self):
Greg Clayton43484c52012-02-02 00:12:47 +00001011 return '0x%x' % self.sbvalue.GetValueAsUnsigned()
Greg Clayton05e8d192012-02-01 01:46:19 +00001012
Enrico Granataac9df2d2013-03-25 18:53:07 +00001013 def __len__(self):
1014 return self.sbvalue.GetNumChildren()
1015
Greg Clayton43484c52012-02-02 00:12:47 +00001016 def __eq__(self, other):
Enrico Granata944b4c42012-10-08 17:32:55 +00001017 if type(other) is int:
1018 return int(self) == other
1019 elif type(other) is str:
1020 return str(self) == other
1021 elif type(other) is value:
1022 self_err = SBError()
1023 other_err = SBError()
1024 self_val = self.sbvalue.GetValueAsUnsigned(self_err)
1025 if self_err.fail:
1026 raise ValueError("unable to extract value of self")
1027 other_val = other.sbvalue.GetValueAsUnsigned(other_err)
1028 if other_err.fail:
1029 raise ValueError("unable to extract value of other")
1030 return self_val == other_val
1031 raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
1032
Greg Clayton43484c52012-02-02 00:12:47 +00001033 def __neq__(self, other):
1034 return not self.__eq__(other)
Greg Clayton05e8d192012-02-01 01:46:19 +00001035%}