from bt2 import native_bt, object, utils
import collections.abc
-import bt2.field
-import bt2.field_path
-import bt2.integer_range_set
+from bt2 import field_path as bt2_field_path
+from bt2 import integer_range_set as bt2_integer_range_set
import bt2
def _check_create_status(self, ptr):
if ptr is None:
- raise bt2.CreationError('cannot create {} field class object'.format(self._NAME.lower()))
+ raise bt2._MemoryError(
+ 'cannot create {} field class object'.format(self._NAME.lower())
+ )
+
+
+class _BoolFieldClass(_FieldClass):
+ _NAME = 'Boolean'
class _IntegerFieldClass(_FieldClass):
@property
def field_value_range(self):
size = native_bt.field_class_integer_get_field_value_range(self._ptr)
- assert(size >= 1)
+ assert size >= 1
return size
def _field_value_range(self, size):
@property
def preferred_display_base(self):
- base = native_bt.field_class_integer_get_preferred_display_base(
- self._ptr)
- assert(base >= 0)
+ base = native_bt.field_class_integer_get_preferred_display_base(self._ptr)
+ assert base >= 0
return base
def _preferred_display_base(self, base):
utils._check_uint64(base)
- if base not in (IntegerDisplayBase.BINARY,
- IntegerDisplayBase.OCTAL,
- IntegerDisplayBase.DECIMAL,
- IntegerDisplayBase.HEXADECIMAL):
+ if base not in (
+ IntegerDisplayBase.BINARY,
+ IntegerDisplayBase.OCTAL,
+ IntegerDisplayBase.DECIMAL,
+ IntegerDisplayBase.HEXADECIMAL,
+ ):
raise ValueError("Display base is not a valid IntegerDisplayBase value")
- native_bt.field_class_integer_set_preferred_display_base(
- self._ptr, base)
+ native_bt.field_class_integer_set_preferred_display_base(self._ptr, base)
_preferred_display_base = property(fset=_preferred_display_base)
def _is_single_precision(self, is_single_precision):
utils._check_bool(is_single_precision)
native_bt.field_class_real_set_is_single_precision(
- self._ptr, is_single_precision)
+ self._ptr, is_single_precision
+ )
_is_single_precision = property(fset=_is_single_precision)
class _EnumerationFieldClassMapping:
def __init__(self, mapping_ptr):
base_mapping_ptr = self._as_enumeration_field_class_mapping_ptr(mapping_ptr)
- self._label = native_bt.field_class_enumeration_mapping_get_label(base_mapping_ptr)
+ self._label = native_bt.field_class_enumeration_mapping_get_label(
+ base_mapping_ptr
+ )
assert self._label is not None
ranges_ptr = self._mapping_borrow_ranges_ptr(mapping_ptr)
assert ranges_ptr is not None
class _UnsignedEnumerationFieldClassMapping(_EnumerationFieldClassMapping):
- _ranges_type = bt2.integer_range_set.UnsignedIntegerRangeSet
- _as_enumeration_field_class_mapping_ptr = staticmethod(native_bt.field_class_unsigned_enumeration_mapping_as_mapping_const)
- _mapping_borrow_ranges_ptr = staticmethod(native_bt.field_class_unsigned_enumeration_mapping_borrow_ranges_const)
+ _ranges_type = bt2_integer_range_set.UnsignedIntegerRangeSet
+ _as_enumeration_field_class_mapping_ptr = staticmethod(
+ native_bt.field_class_enumeration_unsigned_mapping_as_mapping_const
+ )
+ _mapping_borrow_ranges_ptr = staticmethod(
+ native_bt.field_class_enumeration_unsigned_mapping_borrow_ranges_const
+ )
class _SignedEnumerationFieldClassMapping(_EnumerationFieldClassMapping):
- _ranges_type = bt2.integer_range_set.SignedIntegerRangeSet
- _as_enumeration_field_class_mapping_ptr = staticmethod(native_bt.field_class_signed_enumeration_mapping_as_mapping_const)
- _mapping_borrow_ranges_ptr = staticmethod(native_bt.field_class_signed_enumeration_mapping_borrow_ranges_const)
+ _ranges_type = bt2_integer_range_set.SignedIntegerRangeSet
+ _as_enumeration_field_class_mapping_ptr = staticmethod(
+ native_bt.field_class_enumeration_signed_mapping_as_mapping_const
+ )
+ _mapping_borrow_ranges_ptr = staticmethod(
+ native_bt.field_class_enumeration_signed_mapping_borrow_ranges_const
+ )
class _EnumerationFieldClass(_IntegerFieldClass, collections.abc.Mapping):
utils._check_type(ranges, self._range_set_type)
if label in self:
- raise bt2.Error("duplicate mapping label '{}'".format(label))
+ raise ValueError("duplicate mapping label '{}'".format(label))
status = self._add_mapping(self._ptr, label, ranges._ptr)
- utils._handle_func_status(status,
- 'cannot add mapping to enumeration field class object')
+ utils._handle_func_status(
+ status, 'cannot add mapping to enumeration field class object'
+ )
def mappings_for_value(self, value):
status, labels = self._get_mapping_labels_for_value(self._ptr, value)
- utils._handle_func_status(status, 'cannot get mapping labels for value {}'.format(value))
+ utils._handle_func_status(
+ status, 'cannot get mapping labels for value {}'.format(value)
+ )
return [self[label] for label in labels]
def __iter__(self):
return self
-class _UnsignedEnumerationFieldClass(_EnumerationFieldClass, _UnsignedIntegerFieldClass):
+class _UnsignedEnumerationFieldClass(
+ _EnumerationFieldClass, _UnsignedIntegerFieldClass
+):
_NAME = 'Unsigned enumeration'
- _range_set_type = bt2.integer_range_set.UnsignedIntegerRangeSet
- _add_mapping = staticmethod(native_bt.field_class_unsigned_enumeration_add_mapping)
+ _range_set_type = bt2_integer_range_set.UnsignedIntegerRangeSet
+ _add_mapping = staticmethod(native_bt.field_class_enumeration_unsigned_add_mapping)
@staticmethod
def _get_mapping_by_index(enum_ptr, index):
- mapping_ptr = native_bt.field_class_unsigned_enumeration_borrow_mapping_by_index_const(enum_ptr, index)
+ mapping_ptr = native_bt.field_class_enumeration_unsigned_borrow_mapping_by_index_const(
+ enum_ptr, index
+ )
assert mapping_ptr is not None
return _UnsignedEnumerationFieldClassMapping(mapping_ptr)
@staticmethod
def _get_mapping_by_label(enum_ptr, label):
- mapping_ptr = native_bt.field_class_unsigned_enumeration_borrow_mapping_by_label_const(enum_ptr, label)
+ mapping_ptr = native_bt.field_class_enumeration_unsigned_borrow_mapping_by_label_const(
+ enum_ptr, label
+ )
if mapping_ptr is None:
return
@staticmethod
def _get_mapping_labels_for_value(enum_ptr, value):
utils._check_uint64(value)
- return native_bt.field_class_unsigned_enumeration_get_mapping_labels_for_value(enum_ptr, value)
+ return native_bt.field_class_enumeration_unsigned_get_mapping_labels_for_value(
+ enum_ptr, value
+ )
class _SignedEnumerationFieldClass(_EnumerationFieldClass, _SignedIntegerFieldClass):
_NAME = 'Signed enumeration'
- _range_set_type = bt2.integer_range_set.SignedIntegerRangeSet
- _add_mapping = staticmethod(native_bt.field_class_signed_enumeration_add_mapping)
+ _range_set_type = bt2_integer_range_set.SignedIntegerRangeSet
+ _add_mapping = staticmethod(native_bt.field_class_enumeration_signed_add_mapping)
@staticmethod
def _get_mapping_by_index(enum_ptr, index):
- mapping_ptr = native_bt.field_class_signed_enumeration_borrow_mapping_by_index_const(enum_ptr, index)
+ mapping_ptr = native_bt.field_class_enumeration_signed_borrow_mapping_by_index_const(
+ enum_ptr, index
+ )
assert mapping_ptr is not None
return _SignedEnumerationFieldClassMapping(mapping_ptr)
@staticmethod
def _get_mapping_by_label(enum_ptr, label):
- mapping_ptr = native_bt.field_class_signed_enumeration_borrow_mapping_by_label_const(enum_ptr, label)
+ mapping_ptr = native_bt.field_class_enumeration_signed_borrow_mapping_by_label_const(
+ enum_ptr, label
+ )
if mapping_ptr is None:
return
@staticmethod
def _get_mapping_labels_for_value(enum_ptr, value):
utils._check_int64(value)
- return native_bt.field_class_signed_enumeration_get_mapping_labels_for_value(enum_ptr, value)
+ return native_bt.field_class_enumeration_signed_get_mapping_labels_for_value(
+ enum_ptr, value
+ )
class _StringFieldClass(_FieldClass):
utils._check_type(field_class, _FieldClass)
if name in self:
- raise bt2.Error("duplicate member name '{}'".format(name))
+ raise ValueError("duplicate member name '{}'".format(name))
- status = native_bt.field_class_structure_append_member(self._ptr, name, field_class._ptr)
- utils._handle_func_status(status,
- 'cannot append member to structure field class object')
+ status = native_bt.field_class_structure_append_member(
+ self._ptr, name, field_class._ptr
+ )
+ utils._handle_func_status(
+ status, 'cannot append member to structure field class object'
+ )
def __len__(self):
count = native_bt.field_class_structure_get_member_count(self._ptr)
def _create_member_from_ptr(member_ptr):
name = native_bt.field_class_structure_member_get_name(member_ptr)
assert name is not None
- fc_ptr = native_bt.field_class_structure_member_borrow_field_class_const(member_ptr)
+ fc_ptr = native_bt.field_class_structure_member_borrow_field_class_const(
+ member_ptr
+ )
assert fc_ptr is not None
fc = _create_field_class_from_ptr_and_get_ref(fc_ptr)
return _StructureFieldClassMember(name, fc)
def __getitem__(self, key):
if not isinstance(key, str):
- raise TypeError("key must be a 'str' object, got '{}'".format(key.__class__.__name__))
+ raise TypeError(
+ "key must be a 'str' object, got '{}'".format(key.__class__.__name__)
+ )
- member_ptr = native_bt.field_class_structure_borrow_member_by_name_const(self._ptr, key)
+ member_ptr = native_bt.field_class_structure_borrow_member_by_name_const(
+ self._ptr, key
+ )
if member_ptr is None:
raise KeyError(key)
def __iter__(self):
for idx in range(len(self)):
- member_ptr = native_bt.field_class_structure_borrow_member_by_index_const(self._ptr, idx)
+ member_ptr = native_bt.field_class_structure_borrow_member_by_index_const(
+ self._ptr, idx
+ )
assert member_ptr is not None
yield native_bt.field_class_structure_member_get_name(member_ptr)
if index >= len(self):
raise IndexError
- member_ptr = native_bt.field_class_structure_borrow_member_by_index_const(self._ptr, index)
+ member_ptr = native_bt.field_class_structure_borrow_member_by_index_const(
+ self._ptr, index
+ )
assert member_ptr is not None
return self._create_member_from_ptr(member_ptr)
class _VariantFieldClass(_FieldClass, collections.abc.Mapping):
_NAME = 'Variant'
- _borrow_option_by_name_ptr = staticmethod(native_bt.field_class_variant_borrow_option_by_name_const)
- _borrow_member_by_index_ptr = staticmethod(native_bt.field_class_variant_borrow_option_by_index_const)
+ _borrow_option_by_name_ptr = staticmethod(
+ native_bt.field_class_variant_borrow_option_by_name_const
+ )
+ _borrow_member_by_index_ptr = staticmethod(
+ native_bt.field_class_variant_borrow_option_by_index_const
+ )
@staticmethod
def _as_option_ptr(opt_ptr):
def __getitem__(self, key):
if not isinstance(key, str):
- raise TypeError("key must be a 'str' object, got '{}'".format(key.__class__.__name__))
+ raise TypeError(
+ "key must be a 'str' object, got '{}'".format(key.__class__.__name__)
+ )
opt_ptr = self._borrow_option_by_name_ptr(self._ptr, key)
utils._check_type(field_class, _FieldClass)
if name in self:
- raise bt2.Error("duplicate option name '{}'".format(name))
+ raise ValueError("duplicate option name '{}'".format(name))
- status = native_bt.field_class_variant_without_selector_append_option(self._ptr, name, field_class._ptr)
- utils._handle_func_status(status,
- 'cannot append option to variant field class object')
+ status = native_bt.field_class_variant_without_selector_append_option(
+ self._ptr, name, field_class._ptr
+ )
+ utils._handle_func_status(
+ status, 'cannot append option to variant field class object'
+ )
def __iadd__(self, options):
for name, field_class in options:
base_opt_ptr = self._as_option_ptr(opt_ptr)
name = native_bt.field_class_variant_option_get_name(base_opt_ptr)
assert name is not None
- fc_ptr = native_bt.field_class_variant_option_borrow_field_class_const(base_opt_ptr)
+ fc_ptr = native_bt.field_class_variant_option_borrow_field_class_const(
+ base_opt_ptr
+ )
assert fc_ptr is not None
fc = _create_field_class_from_ptr_and_get_ref(fc_ptr)
range_set_ptr = self._option_borrow_ranges_ptr(opt_ptr)
@property
def selector_field_path(self):
- ptr = native_bt.field_class_variant_with_selector_borrow_selector_field_path_const(self._ptr)
+ ptr = native_bt.field_class_variant_with_selector_borrow_selector_field_path_const(
+ self._ptr
+ )
if ptr is None:
return
- return bt2.field_path._FieldPath._create_from_ptr_and_get_ref(ptr)
+ return bt2_field_path._FieldPath._create_from_ptr_and_get_ref(ptr)
def append_option(self, name, field_class, ranges):
utils._check_str(name)
utils._check_type(ranges, self._range_set_type)
if name in self:
- raise bt2.Error("duplicate option name '{}'".format(name))
+ raise ValueError("duplicate option name '{}'".format(name))
if len(ranges) == 0:
raise ValueError('range set is empty')
# TODO: check overlaps (precondition of self._append_option())
status = self._append_option(self._ptr, name, field_class._ptr, ranges._ptr)
- utils._handle_func_status(status,
- 'cannot append option to variant field class object')
+ utils._handle_func_status(
+ status, 'cannot append option to variant field class object'
+ )
def __iadd__(self, options):
for name, field_class, ranges in options:
class _VariantFieldClassWithUnsignedSelector(_VariantFieldClassWithSelector):
_NAME = 'Variant (with unsigned selector)'
- _borrow_option_by_name_ptr = staticmethod(native_bt.field_class_variant_with_unsigned_selector_borrow_option_by_name_const)
- _borrow_member_by_index_ptr = staticmethod(native_bt.field_class_variant_with_unsigned_selector_borrow_option_by_index_const)
- _as_option_ptr = staticmethod(native_bt.field_class_variant_with_unsigned_selector_option_as_option_const)
- _append_option = staticmethod(native_bt.field_class_variant_with_unsigned_selector_append_option)
- _option_borrow_ranges_ptr = staticmethod(native_bt.field_class_variant_with_unsigned_selector_option_borrow_ranges_const)
- _range_set_type = bt2.integer_range_set.UnsignedIntegerRangeSet
+ _borrow_option_by_name_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_unsigned_borrow_option_by_name_const
+ )
+ _borrow_member_by_index_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_unsigned_borrow_option_by_index_const
+ )
+ _as_option_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_unsigned_option_as_option_const
+ )
+ _append_option = staticmethod(
+ native_bt.field_class_variant_with_selector_unsigned_append_option
+ )
+ _option_borrow_ranges_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_unsigned_option_borrow_ranges_const
+ )
+ _range_set_type = bt2_integer_range_set.UnsignedIntegerRangeSet
class _VariantFieldClassWithSignedSelector(_VariantFieldClassWithSelector):
_NAME = 'Variant (with signed selector)'
- _borrow_option_by_name_ptr = staticmethod(native_bt.field_class_variant_with_signed_selector_borrow_option_by_name_const)
- _borrow_member_by_index_ptr = staticmethod(native_bt.field_class_variant_with_signed_selector_borrow_option_by_index_const)
- _as_option_ptr = staticmethod(native_bt.field_class_variant_with_signed_selector_option_as_option_const)
- _append_option = staticmethod(native_bt.field_class_variant_with_signed_selector_append_option)
- _option_borrow_ranges_ptr = staticmethod(native_bt.field_class_variant_with_signed_selector_option_borrow_ranges_const)
- _range_set_type = bt2.integer_range_set.SignedIntegerRangeSet
+ _borrow_option_by_name_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_signed_borrow_option_by_name_const
+ )
+ _borrow_member_by_index_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_signed_borrow_option_by_index_const
+ )
+ _as_option_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_signed_option_as_option_const
+ )
+ _append_option = staticmethod(
+ native_bt.field_class_variant_with_selector_signed_append_option
+ )
+ _option_borrow_ranges_ptr = staticmethod(
+ native_bt.field_class_variant_with_selector_signed_option_borrow_ranges_const
+ )
+ _range_set_type = bt2_integer_range_set.SignedIntegerRangeSet
class _ArrayFieldClass(_FieldClass):
@property
def element_field_class(self):
- elem_fc_ptr = native_bt.field_class_array_borrow_element_field_class_const(self._ptr)
+ elem_fc_ptr = native_bt.field_class_array_borrow_element_field_class_const(
+ self._ptr
+ )
return _create_field_class_from_ptr_and_get_ref(elem_fc_ptr)
class _StaticArrayFieldClass(_ArrayFieldClass):
@property
def length(self):
- return native_bt.field_class_static_array_get_length(self._ptr)
+ return native_bt.field_class_array_static_get_length(self._ptr)
class _DynamicArrayFieldClass(_ArrayFieldClass):
@property
def length_field_path(self):
- ptr = native_bt.field_class_dynamic_array_borrow_length_field_path_const(self._ptr)
+ ptr = native_bt.field_class_array_dynamic_borrow_length_field_path_const(
+ self._ptr
+ )
if ptr is None:
return
- return bt2.field_path._FieldPath._create_from_ptr_and_get_ref(ptr)
-
- def _set_length_field_class(self, length_fc):
- utils._check_type(length_fc, _UnsignedIntegerFieldClass)
- status = native_bt.field_class_dynamic_array_set_length_field_class(self._ptr, length_fc._ptr)
- utils._handle_func_status(status,
- "cannot set dynamic array length field type")
-
- _length_field_class = property(fset=_set_length_field_class)
+ return bt2_field_path._FieldPath._create_from_ptr_and_get_ref(ptr)
_FIELD_CLASS_TYPE_TO_OBJ = {
+ native_bt.FIELD_CLASS_TYPE_BOOL: _BoolFieldClass,
native_bt.FIELD_CLASS_TYPE_UNSIGNED_INTEGER: _UnsignedIntegerFieldClass,
native_bt.FIELD_CLASS_TYPE_SIGNED_INTEGER: _SignedIntegerFieldClass,
native_bt.FIELD_CLASS_TYPE_REAL: _RealFieldClass,