from bt2 import native_bt, object, utils
import collections.abc
-from bt2 import field as bt2_field
from bt2 import field_path as bt2_field_path
from bt2 import integer_range_set as bt2_integer_range_set
import bt2
)
+class _BoolFieldClass(_FieldClass):
+ _NAME = 'Boolean'
+
+
+class _BitArrayFieldClass(_FieldClass):
+ _NAME = 'Bit array'
+
+ @property
+ def length(self):
+ length = native_bt.field_class_bit_array_get_length(self._ptr)
+ assert length >= 1
+ return length
+
+
class _IntegerFieldClass(_FieldClass):
@property
def field_value_range(self):
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
_FIELD_CLASS_TYPE_TO_OBJ = {
+ native_bt.FIELD_CLASS_TYPE_BOOL: _BoolFieldClass,
+ native_bt.FIELD_CLASS_TYPE_BIT_ARRAY: _BitArrayFieldClass,
native_bt.FIELD_CLASS_TYPE_UNSIGNED_INTEGER: _UnsignedIntegerFieldClass,
native_bt.FIELD_CLASS_TYPE_SIGNED_INTEGER: _SignedIntegerFieldClass,
native_bt.FIELD_CLASS_TYPE_REAL: _RealFieldClass,
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,