X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Ffield_class.py;h=9974a29203c96146108c134bf0f3177c9c59b2f9;hb=cec0261d56a42e810f56b39fcefbe33987c8aab8;hp=cfad4c04681d98cfdb425ae8bcc463a208a0b79f;hpb=694c792bc8f078c02acde68a3390acafbb36b2f4;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/field_class.py b/src/bindings/python/bt2/bt2/field_class.py index cfad4c04..9974a292 100644 --- a/src/bindings/python/bt2/bt2/field_class.py +++ b/src/bindings/python/bt2/bt2/field_class.py @@ -22,9 +22,8 @@ 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 @@ -51,6 +50,10 @@ class _FieldClass(object._SharedObject): ) +class _BoolFieldClass(_FieldClass): + _NAME = 'Boolean' + + class _IntegerFieldClass(_FieldClass): @property def field_value_range(self): @@ -134,7 +137,7 @@ class _EnumerationFieldClassMapping: class _UnsignedEnumerationFieldClassMapping(_EnumerationFieldClassMapping): - _ranges_type = bt2.integer_range_set.UnsignedIntegerRangeSet + _ranges_type = bt2_integer_range_set.UnsignedIntegerRangeSet _as_enumeration_field_class_mapping_ptr = staticmethod( native_bt.field_class_enumeration_unsigned_mapping_as_mapping_const ) @@ -144,7 +147,7 @@ class _UnsignedEnumerationFieldClassMapping(_EnumerationFieldClassMapping): class _SignedEnumerationFieldClassMapping(_EnumerationFieldClassMapping): - _ranges_type = bt2.integer_range_set.SignedIntegerRangeSet + _ranges_type = bt2_integer_range_set.SignedIntegerRangeSet _as_enumeration_field_class_mapping_ptr = staticmethod( native_bt.field_class_enumeration_signed_mapping_as_mapping_const ) @@ -203,7 +206,7 @@ class _UnsignedEnumerationFieldClass( _EnumerationFieldClass, _UnsignedIntegerFieldClass ): _NAME = 'Unsigned enumeration' - _range_set_type = bt2.integer_range_set.UnsignedIntegerRangeSet + _range_set_type = bt2_integer_range_set.UnsignedIntegerRangeSet _add_mapping = staticmethod(native_bt.field_class_enumeration_unsigned_add_mapping) @staticmethod @@ -235,7 +238,7 @@ class _UnsignedEnumerationFieldClass( class _SignedEnumerationFieldClass(_EnumerationFieldClass, _SignedIntegerFieldClass): _NAME = 'Signed enumeration' - _range_set_type = bt2.integer_range_set.SignedIntegerRangeSet + _range_set_type = bt2_integer_range_set.SignedIntegerRangeSet _add_mapping = staticmethod(native_bt.field_class_enumeration_signed_add_mapping) @staticmethod @@ -358,6 +361,21 @@ class _StructureFieldClass(_FieldClass, collections.abc.Mapping): return self._create_member_from_ptr(member_ptr) +class _OptionFieldClass(_FieldClass): + @property + def field_class(self): + elem_fc_ptr = native_bt.field_class_option_borrow_field_class_const(self._ptr) + return _create_field_class_from_ptr_and_get_ref(elem_fc_ptr) + + @property + def selector_field_path(self): + ptr = native_bt.field_class_option_borrow_selector_field_path_const(self._ptr) + if ptr is None: + return + + return bt2_field_path._FieldPath._create_from_ptr_and_get_ref(ptr) + + class _VariantFieldClassOption: def __init__(self, name, field_class): self._name = name @@ -489,7 +507,7 @@ class _VariantFieldClassWithSelector(_VariantFieldClass): 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) @@ -533,7 +551,7 @@ class _VariantFieldClassWithUnsignedSelector(_VariantFieldClassWithSelector): _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 + _range_set_type = bt2_integer_range_set.UnsignedIntegerRangeSet class _VariantFieldClassWithSignedSelector(_VariantFieldClassWithSelector): @@ -553,7 +571,7 @@ class _VariantFieldClassWithSignedSelector(_VariantFieldClassWithSelector): _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 + _range_set_type = bt2_integer_range_set.SignedIntegerRangeSet class _ArrayFieldClass(_FieldClass): @@ -580,10 +598,11 @@ class _DynamicArrayFieldClass(_ArrayFieldClass): 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) _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, @@ -593,6 +612,7 @@ _FIELD_CLASS_TYPE_TO_OBJ = { native_bt.FIELD_CLASS_TYPE_STRUCTURE: _StructureFieldClass, native_bt.FIELD_CLASS_TYPE_STATIC_ARRAY: _StaticArrayFieldClass, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY: _DynamicArrayFieldClass, + native_bt.FIELD_CLASS_TYPE_OPTION: _OptionFieldClass, native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR: _VariantFieldClassWithoutSelector, native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR: _VariantFieldClassWithUnsignedSelector, native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR: _VariantFieldClassWithSignedSelector,