#
# Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
-from bt2 import native_bt, object, utils
import collections.abc
+
+from bt2 import error as bt2_error
+from bt2 import utils as bt2_utils
+from bt2 import value as bt2_value
+from bt2 import object as bt2_object
+from bt2 import native_bt
from bt2 import field_path as bt2_field_path
from bt2 import integer_range_set as bt2_integer_range_set
-from bt2 import value as bt2_value
-import bt2
def _obj_type_from_field_class_ptr_template(type_map, ptr):
HEXADECIMAL = native_bt.FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_HEXADECIMAL
-class _FieldClassConst(object._SharedObject):
- _get_ref = staticmethod(native_bt.field_class_get_ref)
- _put_ref = staticmethod(native_bt.field_class_put_ref)
+class _FieldClassConst(bt2_object._SharedObject):
+ @staticmethod
+ def _get_ref(ptr):
+ native_bt.field_class_get_ref(ptr)
+
+ @staticmethod
+ def _put_ref(ptr):
+ native_bt.field_class_put_ref(ptr)
+
_borrow_user_attributes_ptr = staticmethod(
native_bt.field_class_borrow_user_attributes_const
)
def _check_create_status(self, ptr):
if ptr is None:
- raise bt2._MemoryError(
- 'cannot create {} field class object'.format(self._NAME.lower())
+ raise bt2_error._MemoryError(
+ "cannot create {} field class object".format(self._NAME.lower())
)
@property
def _user_attributes(self, user_attributes):
value = bt2_value.create_value(user_attributes)
- utils._check_type(value, bt2_value.MapValue)
+ bt2_utils._check_type(value, bt2_value.MapValue)
native_bt.field_class_set_user_attributes(self._ptr, value._ptr)
_user_attributes = property(fset=_user_attributes)
class _BoolFieldClassConst(_FieldClassConst):
- _NAME = 'Const boolean'
+ _NAME = "Const boolean"
class _BoolFieldClass(_BoolFieldClassConst, _FieldClass):
- _NAME = 'Boolean'
+ _NAME = "Boolean"
class _BitArrayFieldClassConst(_FieldClassConst):
- _NAME = 'Const bit array'
+ _NAME = "Const bit array"
@property
def length(self):
class _BitArrayFieldClass(_BitArrayFieldClassConst, _FieldClass):
- _NAME = 'Bit array'
+ _NAME = "Bit array"
class _IntegerFieldClassConst(_FieldClassConst):
_field_value_range = property(fset=_field_value_range)
def _preferred_display_base(self, base):
- utils._check_uint64(base)
+ bt2_utils._check_uint64(base)
if base not in (
IntegerDisplayBase.BINARY,
class _UnsignedIntegerFieldClassConst(_IntegerFieldClassConst, _FieldClassConst):
- _NAME = 'Const unsigned integer'
+ _NAME = "Const unsigned integer"
class _UnsignedIntegerFieldClass(
_UnsignedIntegerFieldClassConst, _IntegerFieldClass, _FieldClass
):
- _NAME = 'Unsigned integer'
+ _NAME = "Unsigned integer"
class _SignedIntegerFieldClassConst(_IntegerFieldClassConst, _FieldClassConst):
- _NAME = 'Const signed integer'
+ _NAME = "Const signed integer"
class _SignedIntegerFieldClass(
_SignedIntegerFieldClassConst, _IntegerFieldClass, _FieldClass
):
- _NAME = 'Signed integer'
+ _NAME = "Signed integer"
class _RealFieldClassConst(_FieldClassConst):
class _SinglePrecisionRealFieldClassConst(_RealFieldClassConst):
- _NAME = 'Const single-precision real'
+ _NAME = "Const single-precision real"
class _DoublePrecisionRealFieldClassConst(_RealFieldClassConst):
- _NAME = 'Const double-precision real'
+ _NAME = "Const double-precision real"
class _RealFieldClass(_FieldClass, _RealFieldClassConst):
class _SinglePrecisionRealFieldClass(_RealFieldClass):
- _NAME = 'Single-precision real'
+ _NAME = "Single-precision real"
class _DoublePrecisionRealFieldClass(_RealFieldClass):
- _NAME = 'Double-precision real'
+ _NAME = "Double-precision real"
# an enumeration field class mapping does not have a reference count, so
self._check_int_type(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)
+ bt2_utils._handle_func_status(
+ status, "cannot get mapping labels for value {}".format(value)
)
return [self[label] for label in labels]
yield self._mapping_pycls(mapping_ptr).label
def __getitem__(self, label):
- utils._check_str(label)
+ bt2_utils._check_str(label)
mapping_ptr = self._borrow_mapping_ptr_by_label(self._ptr, label)
if mapping_ptr is None:
class _EnumerationFieldClass(_EnumerationFieldClassConst, _IntegerFieldClass):
def add_mapping(self, label, ranges):
- utils._check_str(label)
- utils._check_type(ranges, self._range_set_pycls)
+ bt2_utils._check_str(label)
+ bt2_utils._check_type(ranges, self._range_set_pycls)
if label in self:
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'
+ bt2_utils._handle_func_status(
+ status, "cannot add mapping to enumeration field class object"
)
def __iadd__(self, mappings):
class _UnsignedEnumerationFieldClassConst(
_EnumerationFieldClassConst, _UnsignedIntegerFieldClassConst
):
- _NAME = 'Const unsigned enumeration'
+ _NAME = "Const unsigned enumeration"
_borrow_mapping_ptr_by_label = staticmethod(
native_bt.field_class_enumeration_unsigned_borrow_mapping_by_label_const
)
_get_mapping_labels_for_value = staticmethod(
native_bt.field_class_enumeration_unsigned_get_mapping_labels_for_value
)
- _check_int_type = staticmethod(utils._check_uint64)
+ _check_int_type = staticmethod(bt2_utils._check_uint64)
class _UnsignedEnumerationFieldClass(
_EnumerationFieldClass,
_UnsignedIntegerFieldClass,
):
- _NAME = 'Unsigned enumeration'
+ _NAME = "Unsigned enumeration"
_range_set_pycls = bt2_integer_range_set.UnsignedIntegerRangeSet
_add_mapping = staticmethod(native_bt.field_class_enumeration_unsigned_add_mapping)
class _SignedEnumerationFieldClassConst(
_EnumerationFieldClassConst, _SignedIntegerFieldClassConst
):
- _NAME = 'Const signed enumeration'
+ _NAME = "Const signed enumeration"
_borrow_mapping_ptr_by_label = staticmethod(
native_bt.field_class_enumeration_signed_borrow_mapping_by_label_const
)
_get_mapping_labels_for_value = staticmethod(
native_bt.field_class_enumeration_signed_get_mapping_labels_for_value
)
- _check_int_type = staticmethod(utils._check_int64)
+ _check_int_type = staticmethod(bt2_utils._check_int64)
class _SignedEnumerationFieldClass(
_SignedEnumerationFieldClassConst, _EnumerationFieldClass, _SignedIntegerFieldClass
):
- _NAME = 'Signed enumeration'
+ _NAME = "Signed enumeration"
_range_set_pycls = bt2_integer_range_set.SignedIntegerRangeSet
_add_mapping = staticmethod(native_bt.field_class_enumeration_signed_add_mapping)
class _StringFieldClassConst(_FieldClassConst):
- _NAME = 'Const string'
+ _NAME = "Const string"
class _StringFieldClass(_StringFieldClassConst, _FieldClass):
- _NAME = 'String'
+ _NAME = "String"
class _StructureFieldClassMemberConst:
def _user_attributes(self, user_attributes):
value = bt2_value.create_value(user_attributes)
- utils._check_type(value, bt2_value.MapValue)
+ bt2_utils._check_type(value, bt2_value.MapValue)
native_bt.field_class_structure_member_set_user_attributes(
self._ptr, value._ptr
)
class _StructureFieldClassConst(_FieldClassConst, collections.abc.Mapping):
- _NAME = 'Const structure'
+ _NAME = "Const structure"
_borrow_member_ptr_by_index = staticmethod(
native_bt.field_class_structure_borrow_member_by_index_const
)
yield native_bt.field_class_structure_member_get_name(member_ptr)
def member_at_index(self, index):
- utils._check_uint64(index)
+ bt2_utils._check_uint64(index)
if index >= len(self):
raise IndexError
class _StructureFieldClass(_StructureFieldClassConst, _FieldClass):
- _NAME = 'Structure'
+ _NAME = "Structure"
_borrow_member_by_index = staticmethod(
native_bt.field_class_structure_borrow_member_by_index
)
_structure_member_field_class_pycls = property(lambda _: _StructureFieldClassMember)
def append_member(self, name, field_class, user_attributes=None):
- utils._check_str(name)
- utils._check_type(field_class, _FieldClass)
+ bt2_utils._check_str(name)
+ bt2_utils._check_type(field_class, _FieldClass)
if name in self:
raise ValueError("duplicate member name '{}'".format(name))
if user_attributes is not None:
# check now that user attributes are valid
- user_attributes_value = bt2.create_value(user_attributes)
+ user_attributes_value = bt2_value.create_value(user_attributes)
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'
+ bt2_utils._handle_func_status(
+ status, "cannot append member to structure field class object"
)
if user_attributes is not None:
class _OptionFieldClassConst(_FieldClassConst):
- _NAME = 'Const option'
+ _NAME = "Const option"
_create_field_class_from_ptr_and_get_ref = staticmethod(
_create_field_class_from_const_ptr_and_get_ref
)
class _OptionWithSelectorFieldClassConst(_OptionFieldClassConst):
- _NAME = 'Const option (with selector)'
+ _NAME = "Const option (with selector)"
@property
def selector_field_path(self):
class _OptionWithBoolSelectorFieldClassConst(_OptionWithSelectorFieldClassConst):
- _NAME = 'Const option (with boolean selector)'
+ _NAME = "Const option (with boolean selector)"
@property
def selector_is_reversed(self):
class _OptionWithIntegerSelectorFieldClassConst(_OptionWithSelectorFieldClassConst):
- _NAME = 'Const option (with integer selector)'
+ _NAME = "Const option (with integer selector)"
@property
def ranges(self):
class _OptionWithUnsignedIntegerSelectorFieldClassConst(
_OptionWithIntegerSelectorFieldClassConst
):
- _NAME = 'Const option (with unsigned integer selector)'
+ _NAME = "Const option (with unsigned integer selector)"
_range_set_pycls = bt2_integer_range_set._UnsignedIntegerRangeSetConst
_borrow_selector_ranges_ptr = staticmethod(
native_bt.field_class_option_with_selector_field_integer_unsigned_borrow_selector_ranges_const
class _OptionWithSignedIntegerSelectorFieldClassConst(
_OptionWithIntegerSelectorFieldClassConst
):
- _NAME = 'Const option (with signed integer selector)'
+ _NAME = "Const option (with signed integer selector)"
_range_set_pycls = bt2_integer_range_set._SignedIntegerRangeSetConst
_borrow_selector_ranges_ptr = staticmethod(
native_bt.field_class_option_with_selector_field_integer_signed_borrow_selector_ranges_const
class _OptionFieldClass(_OptionFieldClassConst, _FieldClass):
- _NAME = 'Option'
+ _NAME = "Option"
_borrow_field_class_ptr = staticmethod(
native_bt.field_class_option_borrow_field_class
)
class _OptionWithSelectorFieldClass(
_OptionWithSelectorFieldClassConst, _OptionFieldClass
):
- _NAME = 'Option (with selector)'
+ _NAME = "Option (with selector)"
class _OptionWithBoolSelectorFieldClass(
_OptionWithBoolSelectorFieldClassConst, _OptionWithSelectorFieldClass
):
- _NAME = 'Option (with boolean selector)'
+ _NAME = "Option (with boolean selector)"
def _selector_is_reversed(self, selector_is_reversed):
- utils._check_bool(selector_is_reversed)
+ bt2_utils._check_bool(selector_is_reversed)
native_bt.field_class_option_with_selector_field_bool_set_selector_is_reversed(
self._ptr, selector_is_reversed
)
class _OptionWithIntegerSelectorFieldClass(
_OptionWithIntegerSelectorFieldClassConst, _OptionWithSelectorFieldClass
):
- _NAME = 'Option (with integer selector)'
+ _NAME = "Option (with integer selector)"
class _OptionWithUnsignedIntegerSelectorFieldClass(
_OptionWithUnsignedIntegerSelectorFieldClassConst,
_OptionWithIntegerSelectorFieldClass,
):
- _NAME = 'Option (with unsigned integer selector)'
+ _NAME = "Option (with unsigned integer selector)"
class _OptionWithSignedIntegerSelectorFieldClass(
_OptionWithSignedIntegerSelectorFieldClassConst,
_OptionWithIntegerSelectorFieldClass,
):
- _NAME = 'Option (with signed integer selector)'
+ _NAME = "Option (with signed integer selector)"
class _VariantFieldClassOptionConst:
def _user_attributes(self, user_attributes):
value = bt2_value.create_value(user_attributes)
- utils._check_type(value, bt2_value.MapValue)
+ bt2_utils._check_type(value, bt2_value.MapValue)
native_bt.field_class_variant_option_set_user_attributes(self._ptr, value._ptr)
_user_attributes = property(fset=_user_attributes)
class _VariantFieldClassConst(_FieldClassConst, collections.abc.Mapping):
- _NAME = 'Const variant'
+ _NAME = "Const variant"
_borrow_option_ptr_by_name = staticmethod(
native_bt.field_class_variant_borrow_option_by_name_const
)
yield native_bt.field_class_variant_option_get_name(base_opt_ptr)
def option_at_index(self, index):
- utils._check_uint64(index)
+ bt2_utils._check_uint64(index)
if index >= len(self):
raise IndexError
class _VariantFieldClass(_VariantFieldClassConst, _FieldClass, collections.abc.Mapping):
- _NAME = 'Variant'
+ _NAME = "Variant"
_borrow_option_ptr_by_name = staticmethod(
native_bt.field_class_variant_borrow_option_by_name
)
class _VariantFieldClassWithoutSelectorConst(_VariantFieldClassConst):
- _NAME = 'Const variant (without selector)'
+ _NAME = "Const variant (without selector)"
class _VariantFieldClassWithoutSelector(
_VariantFieldClassWithoutSelectorConst, _VariantFieldClass
):
- _NAME = 'Variant (without selector)'
+ _NAME = "Variant (without selector)"
def append_option(self, name, field_class, user_attributes=None):
- utils._check_str(name)
- utils._check_type(field_class, _FieldClass)
+ bt2_utils._check_str(name)
+ bt2_utils._check_type(field_class, _FieldClass)
if name in self:
raise ValueError("duplicate option name '{}'".format(name))
if user_attributes is not None:
# check now that user attributes are valid
- user_attributes_value = bt2.create_value(user_attributes)
+ user_attributes_value = bt2_value.create_value(user_attributes)
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'
+ bt2_utils._handle_func_status(
+ status, "cannot append option to variant field class object"
)
if user_attributes is not None:
class _VariantFieldClassWithIntegerSelectorConst(_VariantFieldClassConst):
- _NAME = 'Const variant (with selector)'
+ _NAME = "Const variant (with selector)"
@property
def selector_field_path(self):
class _VariantFieldClassWithIntegerSelector(
_VariantFieldClassWithIntegerSelectorConst, _VariantFieldClass
):
- _NAME = 'Variant (with selector)'
+ _NAME = "Variant (with selector)"
def append_option(self, name, field_class, ranges, user_attributes=None):
- utils._check_str(name)
- utils._check_type(field_class, _FieldClass)
- utils._check_type(ranges, self._variant_option_pycls._range_set_pycls)
+ bt2_utils._check_str(name)
+ bt2_utils._check_type(field_class, _FieldClass)
+ bt2_utils._check_type(ranges, self._variant_option_pycls._range_set_pycls)
if name in self:
raise ValueError("duplicate option name '{}'".format(name))
if len(ranges) == 0:
- raise ValueError('range set is empty')
+ raise ValueError("range set is empty")
user_attributes_value = None
if user_attributes is not None:
# check now that user attributes are valid
- user_attributes_value = bt2.create_value(user_attributes)
+ user_attributes_value = bt2_value.create_value(user_attributes)
# 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'
+ bt2_utils._handle_func_status(
+ status, "cannot append option to variant field class object"
)
if user_attributes is not None:
class _VariantFieldClassWithUnsignedIntegerSelectorConst(
_VariantFieldClassWithIntegerSelectorConst
):
- _NAME = 'Const variant (with unsigned integer selector)'
+ _NAME = "Const variant (with unsigned integer selector)"
_borrow_option_ptr_by_name = staticmethod(
native_bt.field_class_variant_with_selector_field_integer_unsigned_borrow_option_by_name_const
)
_VariantFieldClassWithUnsignedIntegerSelectorConst,
_VariantFieldClassWithIntegerSelector,
):
- _NAME = 'Variant (with unsigned integer selector)'
+ _NAME = "Variant (with unsigned integer selector)"
_variant_option_pycls = _VariantFieldClassWithUnsignedIntegerSelectorOption
_as_option_ptr = staticmethod(_variant_option_pycls._as_option_ptr)
_append_option = staticmethod(
class _VariantFieldClassWithSignedIntegerSelectorConst(
_VariantFieldClassWithIntegerSelectorConst
):
- _NAME = 'Const variant (with signed integer selector)'
+ _NAME = "Const variant (with signed integer selector)"
_borrow_option_ptr_by_name = staticmethod(
native_bt.field_class_variant_with_selector_field_integer_signed_borrow_option_by_name_const
)
_VariantFieldClassWithSignedIntegerSelectorConst,
_VariantFieldClassWithIntegerSelector,
):
- _NAME = 'Variant (with signed integer selector)'
+ _NAME = "Variant (with signed integer selector)"
_variant_option_pycls = _VariantFieldClassWithSignedIntegerSelectorOption
_as_option_ptr = staticmethod(_variant_option_pycls._as_option_ptr)
_append_option = staticmethod(
class _StaticArrayFieldClassConst(_ArrayFieldClassConst):
- _NAME = 'Const static array'
+ _NAME = "Const static array"
@property
def length(self):
class _StaticArrayFieldClass(_StaticArrayFieldClassConst, _ArrayFieldClass):
- _NAME = 'Static array'
+ _NAME = "Static array"
class _DynamicArrayFieldClassConst(_ArrayFieldClassConst):
- _NAME = 'Const dynamic array'
+ _NAME = "Const dynamic array"
class _DynamicArrayWithLengthFieldFieldClassConst(_DynamicArrayFieldClassConst):
- _NAME = 'Const dynamic array (with length field)'
+ _NAME = "Const dynamic array (with length field)"
@property
def length_field_path(self):
class _DynamicArrayFieldClass(_DynamicArrayFieldClassConst, _ArrayFieldClass):
- _NAME = 'Dynamic array'
+ _NAME = "Dynamic array"
class _DynamicArrayWithLengthFieldFieldClass(
_DynamicArrayWithLengthFieldFieldClassConst, _DynamicArrayFieldClass
):
- _NAME = 'Dynamic array (with length field)'
+ _NAME = "Dynamic array (with length field)"
_FIELD_CLASS_TYPE_TO_CONST_OBJ = {