1573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton#!/usr/bin/python 2573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 3573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Claytonimport lldb 4573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 5573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Claytonclass value(object): 6573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton '''A class that wraps an lldb.SBValue object and returns an object that 7573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton can be used as an object with attribytes:\n 8573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv = a.value(lldb.frame.FindVariable('argv'))\n 9573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.name - return the name of the value that this object contains\n 10573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.type - return the lldb.SBType for this value 11573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.type_name - return the name of the type 12573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.size - return the byte size of this value 13573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.is_in_scope - return true if this value is currently in scope 14573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.is_pointer - return true if this value is a pointer 15573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.format - return the current format for this value 16573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.value - return the value's value as a string 17573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.summary - return a summary of this value's value 18573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.description - return the runtime description for this value 19573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.location - return a string that represents the values location (address, register, etc) 20573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.target - return the lldb.SBTarget for this value 21573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.process - return the lldb.SBProcess for this value 22573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.thread - return the lldb.SBThread for this value 23573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.frame - return the lldb.SBFrame for this value 24573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.num_children - return the number of children this value has 25573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton argv.children - return a list of sbvalue objects that represents all of the children of this value 26573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton ''' 27573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __init__(self, sbvalue): 28573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue = sbvalue 29573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 30573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __nonzero__(self): 31573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__nonzero__() 32573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 33573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __repr__(self): 34573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__repr__() 35573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 36573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __str__(self): 37573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__str__() 38573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 39573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __getitem__(self, key): 40573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if type(key) is int: 41573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return value(self.sbvalue.GetChildAtIndex(key, lldb.eNoDynamicValues, True)) 42573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton raise TypeError 43573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 44573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __getattr__(self, name): 45573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'name': 46573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetName() 47573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'type': 48573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetType() 49573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'type_name': 50573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetTypeName() 51573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'size': 52573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetByteSize() 53573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'is_in_scope': 54573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.IsInScope() 55573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'is_pointer': 56573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.TypeIsPointerType() 57573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'format': 58573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetFormat () 59573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'value': 60573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetValue () 61573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'summary': 62573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetSummary () 63573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'description': 64573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetObjectDescription () 65573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'location': 66573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetLocation () 67573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'target': 68573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetTarget() 69573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'process': 70573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetProcess() 71573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'thread': 72573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetThread() 73573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'frame': 74573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetFrame() 75573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'num_children': 76573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetNumChildren() 77573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if name == 'children': 78573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton # Returns an array of sbvalue objects, one for each child of 79573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton # the value for the lldb.SBValue 80573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton children = [] 81573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton for i in range (self.sbvalue.GetNumChildren()): 82573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton children.append(value(self.sbvalue.GetChildAtIndex(i, lldb.eNoDynamicValues, True))) 83573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return children 84573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton raise AttributeError 85573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 86573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Claytonclass variable(object): 87573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton '''A class that treats a lldb.SBValue and allows it to be used just as 88573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton a variable would be in code. So if you have a Point structure variable 89573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton in your code, you would be able to do: "pt.x + pt.y"''' 90573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __init__(self, sbvalue): 91573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue = sbvalue 92573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 93573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __nonzero__(self): 94573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__nonzero__() 95573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 96573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __repr__(self): 97573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__repr__() 98573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 99573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __str__(self): 100573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.__str__() 101573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 102573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __getitem__(self, key): 103573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton # Allow array access if this value has children... 104573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if type(key) is int: 105573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return variable(self.sbvalue.GetValueForExpressionPath("[%i]" % key)) 106573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton raise TypeError 107573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 108573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __getattr__(self, name): 109573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton child_sbvalue = self.sbvalue.GetChildMemberWithName (name) 110573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton if child_sbvalue: 111573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return variable(child_sbvalue) 112573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton raise AttributeError 113573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 114573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __add__(self, other): 115573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) + int(other) 116573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 117573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __sub__(self, other): 118573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) - int(other) 119573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 120573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __mul__(self, other): 121573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) * int(other) 122573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 123573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __floordiv__(self, other): 124573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) // int(other) 125573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 126573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __mod__(self, other): 127573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) % int(other) 128573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 129573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __divmod__(self, other): 130573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) % int(other) 131573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 132573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __pow__(self, other): 133573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) ** int(other) 134573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 135573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __lshift__(self, other): 136573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) << int(other) 137573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 138573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __rshift__(self, other): 139573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) >> int(other) 140573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 141573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __and__(self, other): 142573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) & int(other) 143573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 144573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __xor__(self, other): 145573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) ^ int(other) 146573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 147573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __or__(self, other): 148573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) | int(other) 149573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 150573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __div__(self, other): 151573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) / int(other) 152573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 153573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __truediv__(self, other): 154573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return int(self) / int(other) 155573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 156573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __iadd__(self, other): 157573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__add__(other) 158573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 159573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 160573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 161573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __isub__(self, other): 162573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__sub__(other) 163573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 164573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 165573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 166573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __imul__(self, other): 167573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__mul__(other) 168573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 169573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 170573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 171573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __idiv__(self, other): 172573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__div__(other) 173573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 174573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 175573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 176573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __itruediv__(self, other): 177573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__truediv__(other) 178573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 179573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 180573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 181573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ifloordiv__(self, other): 182573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__floordiv__(self, other) 183573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 184573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 185573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 186573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __imod__(self, other): 187573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__and__(self, other) 188573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 189573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 190573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 191573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ipow__(self, other): 192573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__pow__(self, other) 193573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 194573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 195573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 196573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ipow__(self, other, modulo): 197573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__pow__(self, other, modulo) 198573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 199573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 200573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 201573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ilshift__(self, other): 202573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__lshift__(self, other) 203573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 204573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 205573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 206573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __irshift__(self, other): 207573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__rshift__(self, other) 208573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 209573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 210573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 211573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __iand__(self, other): 212573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__and__(self, other) 213573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 214573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 215573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 216573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ixor__(self, other): 217573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__xor__(self, other) 218573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 219573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 220573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 221573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __ior__(self, other): 222573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton result = self.__ior__(self, other) 223573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton self.sbvalue.SetValueFromCString (str(result)) 224573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return result 225573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 226573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __neg__(self): 227573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return -int(self) 228573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 229573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __pos__(self): 230573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return +int(self) 231573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 232573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __abs__(self): 233573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return abs(int(self)) 234573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 235573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __invert__(self): 236573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return ~int(self) 237573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 238573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __complex__(self): 239573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return complex (int(self)) 240573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 241573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __int__(self): 242573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetValueAsSigned() 243573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 244573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __long__(self): 245573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return self.sbvalue.GetValueAsSigned() 246573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 247573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __float__(self): 248573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return float (self.sbvalue.GetValueAsSigned()) 249573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 250573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __oct__(self): 251573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return '0%o' % self.sbvalue.GetValueAsSigned() 252573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton 253573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton def __hex__(self): 254573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton return '0x%x' % self.sbvalue.GetValueAsSigned() 255573d85c4dbfcf7d4c518a47f3354371715e853bfGreg Clayton