return self._spec_eq(other)
@property
- def field_class(self):
+ def cls(self):
field_class_ptr = native_bt.field_borrow_class_const(self._ptr)
assert field_class_ptr is not None
return bt2_field_class._create_field_class_from_ptr_and_get_ref(field_class_ptr)
return self._repr()
+class _BitArrayField(_Field):
+ _NAME = 'Bit array'
+
+ @property
+ def value_as_integer(self):
+ return native_bt.field_bit_array_get_value_as_integer(self._ptr)
+
+ @value_as_integer.setter
+ def value_as_integer(self, value):
+ utils._check_uint64(value)
+ native_bt.field_bit_array_set_value_as_integer(self._ptr, value)
+
+ def _spec_eq(self, other):
+ if type(other) is not type(self):
+ return False
+
+ return self.value_as_integer == other.value_as_integer
+
+ def _repr(self):
+ return repr(self.value_as_integer)
+
+ def __str__(self):
+ return str(self.value_as_integer)
+
+ def __len__(self):
+ return self.cls.length
+
+
@functools.total_ordering
class _NumericField(_Field):
@staticmethod
_NAME = 'Structure'
def _count(self):
- return len(self.field_class)
+ return len(self.cls)
def __setitem__(self, key, value):
# raises if key is somehow invalid
def __iter__(self):
# same name iterator
- return iter(self.field_class)
+ return iter(self.cls)
def _spec_eq(self, other):
if not isinstance(other, collections.abc.Mapping):
_TYPE_ID_TO_OBJ = {
native_bt.FIELD_CLASS_TYPE_BOOL: _BoolField,
+ native_bt.FIELD_CLASS_TYPE_BIT_ARRAY: _BitArrayField,
native_bt.FIELD_CLASS_TYPE_UNSIGNED_INTEGER: _UnsignedIntegerField,
native_bt.FIELD_CLASS_TYPE_SIGNED_INTEGER: _SignedIntegerField,
native_bt.FIELD_CLASS_TYPE_REAL: _RealField,