import bt2
from bt2 import native_bt, utils, object
import bt2.stream_class
+import bt2.field_class
import collections.abc
import functools
def create_dynamic_array_field_class(self, elem_fc, length_fc=None):
utils._check_type(elem_fc, bt2.field_class._FieldClass)
- ptr = native_bt.field_class_dynamic_array_create(self._ptr, elem_fc._ptr)
- self._check_create_status(ptr, 'dynamic array')
- obj = bt2.field_class._DynamicArrayFieldClass._create_from_ptr(ptr)
+ length_fc_ptr = None
if length_fc is not None:
- obj._length_field_class = length_fc
+ utils._check_type(length_fc, bt2.field_class._UnsignedIntegerFieldClass)
+ length_fc_ptr = length_fc._ptr
- return obj
+ ptr = native_bt.field_class_dynamic_array_create(self._ptr, elem_fc._ptr, length_fc_ptr)
+ self._check_create_status(ptr, 'dynamic array')
+ return bt2.field_class._DynamicArrayFieldClass._create_from_ptr(ptr)
def create_variant_field_class(self, selector_fc=None):
- ptr = native_bt.field_class_variant_create(self._ptr)
- self._check_create_status(ptr, 'variant')
- obj = bt2.field_class._VariantFieldClass._create_from_ptr(ptr)
+ selector_fc_ptr = None
if selector_fc is not None:
- obj._selector_field_class = selector_fc
+ utils._check_type(selector_fc, bt2.field_class._IntegerFieldClass)
+ selector_fc_ptr = selector_fc._ptr
- return obj
+ ptr = native_bt.field_class_variant_create(self._ptr, selector_fc_ptr)
+ self._check_create_status(ptr, 'variant')
+ return bt2.field_class._create_field_class_from_ptr_and_get_ref(ptr)
# Add a listener to be called when the trace class is destroyed.