1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 """
32 Base classes.
33 """
34
35 __revision__ = "$Id$"
36
38 """ Base class containing methods used by many others classes in the library."""
40 """
41 @type shouldPack: bool
42 @param shouldPack: (Optional) If the value is set to C{True}, the class will be packed. If the value is
43 set to C{False}, the class will not be packed.
44 """
45 self.shouldPack = shouldPack
46 self._attrsList = []
47
49 s = ""
50 for i in self._attrsList:
51 attr = getattr(self, i)
52 if attr.shouldPack:
53 s += str(attr)
54 return s
55
58
61
63 """
64 Returns all the class attributues.
65
66 @rtype: dict
67 @return: A dictionary containing all the class attributes.
68 """
69 d = {}
70 for i in self._attrsList:
71 key = i
72 value = getattr(self, i)
73 d[key] = value
74 return d
75
77 """
78 This method should be implemented in the inherited classes. When implemented, returns
79 an integer value to identified the corresponding class.
80
81 @raise NotImplementedError: The method wasn't implemented in the inherited class.
82 """
83 raise NotImplementedError("getType() method not implemented.")
84
86 - def __init__(self, value = 0, endianness = "<", signed = False, shouldPack = True):
87 """
88 @type value: int
89 @param value: The value used to build the L{BYTE} object.
90
91 @type endianness: str
92 @param endianness: (Optional) Indicates the endianness of the L{BYTE} object. The C{<} indicates little-endian while C{>} indicates big-endian.
93
94 @type signed: bool
95 @param signed: (Optional) If set to C{True} the L{BYTE} object will be packed as signed. If set to C{False} it will be packed as unsigned.
96
97 @type shouldPack: bool
98 @param shouldPack: (Optional) If set to c{True}, the object will be packed. If set to C{False}, the object won't be packed.
99 """
100 self.value = value
101 self.endianness = endianness
102 self.signed = signed
103 self.shouldPack = shouldPack
104
106 result = None
107
108 if isinstance(other, self.__class__):
109 result = self.value == other.value
110 else:
111 result = self.value == other
112 return result
113
115 result = None
116
117 if isinstance(other, self.__class__):
118 result = self.value != other.value
119 else:
120 result = self.value != other
121 return result
122
124 result = None
125
126 if isinstance(other, self.__class__):
127 result = self.value < other.value
128 else:
129 result = self.value < other
130 return result
131
133 result = None
134
135 if isinstance(other, self.__class__):
136 result = self.value > other.value
137 else:
138 result = self.value > other
139 return result
140
142 result = None
143
144 if isinstance(other, self.__class__):
145 result = self.value <= other.value
146 else:
147 result = self.value <= other
148 return result
149
151 result = None
152
153 if isinstance(other, self.__class__):
154 result = self.value >= other.value
155 else:
156 result = self.value >= other
157 return result
158
160 result = None
161
162 if isinstance(other, self.__class__):
163 try:
164 result = self.value + other.value
165 except TypeError, e:
166 raise e
167 else:
168 try:
169 result = self.value + other
170 except TypeError, e:
171 raise e
172 return result
173
175 result = None
176 if isinstance(other, self.__class__):
177 try:
178 result = self.value - other.value
179 except TypeError, e:
180 raise e
181 else:
182 try:
183 result = self.value - other
184 except TypeError, e:
185 raise e
186 return result
187
189 result = None
190 if isinstance(other, self.__class__):
191 result = self.value * other.value
192 else:
193 try:
194 result = self.value * other
195 except TypeError, e:
196 raise e
197 return result
198
200 result = None
201 if isinstance(other, self.__class__):
202 try:
203 result = self.value / other.value
204 except (TypeError, ZeroDivisionError) as e:
205 raise e
206 else:
207 try:
208 result = self.value / other
209 except (TypeError, ZeroDivisionError) as e:
210 raise e
211 return result
212
214 result = None
215 if isinstance(other, self.__class__):
216 result = self.value ^ other.value
217 else:
218 try:
219 result = self.value ^ other
220 except TypeError, e:
221 raise e
222 return result
223
225 result = None
226 if isinstance(other, self.__class__):
227 result = self.value >> other.value
228 else:
229 try:
230 result = self.value >> other
231 except TypeError, e:
232 raise e
233 return result
234
236 result = None
237 if isinstance(other, self.__class__):
238 result = self.value << other.value
239 else:
240 try:
241 result = self.value << other
242 except TypeError, e:
243 raise e
244 return result
245
247 result = None
248 if isinstance(other, self.__class__):
249 result = self.value & other.value
250 else:
251 try:
252 result = self.value & other
253 except TypeError, e:
254 raise e
255 return result
256
258 result = None
259 if isinstance(other, self.__class__):
260 result = self.value | other.value
261 else:
262 try:
263 result = self.value | other
264 except TypeError, e:
265 raise e
266 return result
267