projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bt2: field.py: raise ValueError when setting out of range value to Integer
[babeltrace.git]
/
src
/
bindings
/
python
/
bt2
/
bt2
/
field.py
diff --git
a/src/bindings/python/bt2/bt2/field.py
b/src/bindings/python/bt2/bt2/field.py
index 1e2ceac30efa0c6ab80cef0f5db7f84f6e6e2913..fbe609eedb473377a3a16ff55ac4091540626bc0 100644
(file)
--- a/
src/bindings/python/bt2/bt2/field.py
+++ b/
src/bindings/python/bt2/bt2/field.py
@@
-330,7
+330,13
@@
class _IntegerFieldConst(_IntegralFieldConst, _FieldConst):
class _IntegerField(_IntegerFieldConst, _IntegralField, _Field):
class _IntegerField(_IntegerFieldConst, _IntegralField, _Field):
- pass
+ def _check_range(self, value):
+ if not (value >= self._lower_bound and value <= self._upper_bound):
+ raise ValueError(
+ "Value {} is outside valid range [{}, {}]".format(
+ value, self._lower_bound, self._upper_bound
+ )
+ )
class _UnsignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
class _UnsignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
@@
-341,10
+347,7
@@
class _UnsignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
if not isinstance(value, numbers.Integral):
raise TypeError('expecting an integral number object')
if not isinstance(value, numbers.Integral):
raise TypeError('expecting an integral number object')
- value = int(value)
- utils._check_uint64(value)
-
- return value
+ return int(value)
@property
def _value(self):
@property
def _value(self):
@@
-356,10
+359,21
@@
class _UnsignedIntegerField(_UnsignedIntegerFieldConst, _IntegerField, _Field):
def _set_value(self, value):
value = self._value_to_int(value)
def _set_value(self, value):
value = self._value_to_int(value)
+
+ self._check_range(value)
+
native_bt.field_integer_unsigned_set_value(self._ptr, value)
value = property(fset=_set_value)
native_bt.field_integer_unsigned_set_value(self._ptr, value)
value = property(fset=_set_value)
+ @property
+ def _lower_bound(self):
+ return 0
+
+ @property
+ def _upper_bound(self):
+ return (2 ** self.cls.field_value_range) - 1
+
class _SignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
_NAME = 'Const signed integer'
class _SignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
_NAME = 'Const signed integer'
@@
-369,10
+383,7
@@
class _SignedIntegerFieldConst(_IntegerFieldConst, _FieldConst):
if not isinstance(value, numbers.Integral):
raise TypeError('expecting an integral number object')
if not isinstance(value, numbers.Integral):
raise TypeError('expecting an integral number object')
- value = int(value)
- utils._check_int64(value)
-
- return value
+ return int(value)
@property
def _value(self):
@property
def _value(self):
@@
-384,10
+395,21
@@
class _SignedIntegerField(_SignedIntegerFieldConst, _IntegerField, _Field):
def _set_value(self, value):
value = self._value_to_int(value)
def _set_value(self, value):
value = self._value_to_int(value)
+
+ self._check_range(value)
+
native_bt.field_integer_signed_set_value(self._ptr, value)
value = property(fset=_set_value)
native_bt.field_integer_signed_set_value(self._ptr, value)
value = property(fset=_set_value)
+ @property
+ def _lower_bound(self):
+ return -1 * (2 ** (self.cls.field_value_range - 1))
+
+ @property
+ def _upper_bound(self):
+ return (2 ** (self.cls.field_value_range - 1)) - 1
+
class _RealFieldConst(_NumericFieldConst, numbers.Real):
_NAME = 'Const real'
class _RealFieldConst(_NumericFieldConst, numbers.Real):
_NAME = 'Const real'
This page took
0.028617 seconds
and
4
git commands to generate.