+class _OptionWithSignedIntegerSelectorFieldClassConst(
+ _OptionWithIntegerSelectorFieldClassConst
+):
+ _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_integer_signed_borrow_selector_ranges_const
+ )
+
+
+class _OptionFieldClass(_OptionFieldClassConst, _FieldClass):
+ _NAME = 'Option'
+ _borrow_field_class_ptr = staticmethod(
+ native_bt.field_class_option_borrow_field_class
+ )
+ _create_field_class_from_ptr_and_get_ref = staticmethod(
+ _create_field_class_from_ptr_and_get_ref
+ )
+
+
+class _OptionWithSelectorFieldClass(
+ _OptionWithSelectorFieldClassConst, _OptionFieldClass
+):
+ _NAME = 'Option (with selector)'
+
+
+class _OptionWithBoolSelectorFieldClass(
+ _OptionWithBoolSelectorFieldClassConst, _OptionWithSelectorFieldClass
+):
+ _NAME = 'Option (with boolean selector)'
+
+ def _selector_is_reversed(self, selector_is_reversed):
+ utils._check_bool(selector_is_reversed)
+ native_bt.field_class_option_with_selector_bool_set_selector_is_reversed(
+ self._ptr, selector_is_reversed
+ )
+
+ _selector_is_reversed = property(fset=_selector_is_reversed)
+
+
+class _OptionWithIntegerSelectorFieldClass(
+ _OptionWithIntegerSelectorFieldClassConst, _OptionWithSelectorFieldClass
+):
+ _NAME = 'Option (with integer selector)'
+
+
+class _OptionWithUnsignedIntegerSelectorFieldClass(
+ _OptionWithUnsignedIntegerSelectorFieldClassConst,
+ _OptionWithIntegerSelectorFieldClass,
+):
+ _NAME = 'Option (with unsigned integer selector)'
+
+
+class _OptionWithSignedIntegerSelectorFieldClass(
+ _OptionWithSignedIntegerSelectorFieldClassConst,
+ _OptionWithIntegerSelectorFieldClass,
+):
+ _NAME = 'Option (with signed integer selector)'
+
+
+class _VariantFieldClassOptionConst:
+ _create_field_class_from_ptr_and_get_ref = staticmethod(
+ _create_field_class_from_const_ptr_and_get_ref
+ )
+ _borrow_field_class_ptr = staticmethod(
+ native_bt.field_class_variant_option_borrow_field_class_const
+ )
+ _borrow_user_attributes_ptr = staticmethod(
+ native_bt.field_class_variant_option_borrow_user_attributes_const
+ )
+ _create_value_from_ptr_and_get_ref = staticmethod(
+ bt2_value._create_from_const_ptr_and_get_ref
+ )
+
+ def __init__(self, owning_var_fc, option_ptr):
+ # this field class owns the option; keeping it here maintains
+ # the option alive as options are not shared objects
+ self._owning_var_fc = owning_var_fc
+ self._ptr = option_ptr