lib: bt_field_class_dynamic_array_create(): accept length FC parameter
[babeltrace.git] / src / bindings / python / bt2 / bt2 / trace_class.py
index 9c8258429c55e2066c3ee5aa1a1fe918ee8f5228..fb0eb543f10793b425b94dbb5d9d58350e06009d 100644 (file)
@@ -27,6 +27,7 @@ __all__ = ['_TraceClass']
 import bt2
 from bt2 import native_bt, utils, object
 import bt2.stream_class
+import bt2.field_class
 import collections.abc
 import functools
 
@@ -251,24 +252,26 @@ class _TraceClass(object._SharedObject, collections.abc.Mapping):
 
     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.
 
This page took 0.025731 seconds and 4 git commands to generate.