tap-driver.sh: flush stdout after each test result
[babeltrace.git] / bindings / python / bt2 / bt2 / trace_class.py
index 631334a7fa9b356e09347ca635f8f75a2a90e374..5713db8c9e5d68ad98c97a960a11abfbcd23218e 100644 (file)
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 
-__all__ = ['TraceClass']
+__all__ = ['_TraceClass']
 
 import bt2
 from bt2 import native_bt, utils, object
+import bt2.stream_class
 import uuid as uuidp
 import collections.abc
 import functools
@@ -95,11 +96,11 @@ class _StreamClassIterator(collections.abc.Iterator):
 
 
 def _trace_class_destruction_listener_from_native(user_listener, trace_class_ptr):
-    trace_class = bt2.trace_class.TraceClass._create_from_ptr_and_get_ref(trace_class_ptr)
+    trace_class = bt2.trace_class._TraceClass._create_from_ptr_and_get_ref(trace_class_ptr)
     user_listener(trace_class)
 
 
-class TraceClass(object._SharedObject, collections.abc.Mapping):
+class _TraceClass(object._SharedObject, collections.abc.Mapping):
     _get_ref = staticmethod(native_bt.trace_class_get_ref)
     _put_ref = staticmethod(native_bt.trace_class_put_ref)
 
@@ -125,7 +126,7 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
         if trace_ptr is None:
             raise bt2.CreationError('cannot create trace class object')
 
-        trace = bt2.trace.Trace._create_from_ptr(trace_ptr)
+        trace = bt2.trace._Trace._create_from_ptr(trace_ptr)
 
         if name is not None:
             trace._name = name
@@ -148,7 +149,7 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
         if sc_ptr is None:
             raise KeyError(key)
 
-        return bt2.StreamClass._create_from_ptr_and_get_ref(sc_ptr)
+        return bt2.stream_class._StreamClass._create_from_ptr_and_get_ref(sc_ptr)
 
     def __iter__(self):
         for idx in range(len(self)):
@@ -171,22 +172,26 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
                             default_clock_class=None,
                             assigns_automatic_event_class_id=True,
                             assigns_automatic_stream_id=True,
-                            packets_have_default_beginning_clock_snapshot=False,
-                            packets_have_default_end_clock_snapshot=False):
+                            packets_have_beginning_default_clock_snapshot=False,
+                            packets_have_end_default_clock_snapshot=False,
+                            supports_discarded_events=False,
+                            discarded_events_have_default_clock_snapshots=False,
+                            supports_discarded_packets=False,
+                            discarded_packets_have_default_clock_snapshots=False):
 
         if self.assigns_automatic_stream_class_id:
             if id is not None:
-                raise bt2.CreationError('id provided, but trace class assigns automatic stream class ids')
+                raise ValueError('id provided, but trace class assigns automatic stream class ids')
 
             sc_ptr = native_bt.stream_class_create(self._ptr)
         else:
             if id is None:
-                raise bt2.CreationError('id not provided, but trace class does not assign automatic stream class ids')
+                raise ValueError('id not provided, but trace class does not assign automatic stream class ids')
 
             utils._check_uint64(id)
             sc_ptr = native_bt.stream_class_create_with_id(self._ptr, id)
 
-        sc = bt2.stream_class.StreamClass._create_from_ptr(sc_ptr)
+        sc = bt2.stream_class._StreamClass._create_from_ptr(sc_ptr)
 
         if name is not None:
             sc._name = name
@@ -202,9 +207,12 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
 
         sc._assigns_automatic_event_class_id = assigns_automatic_event_class_id
         sc._assigns_automatic_stream_id = assigns_automatic_stream_id
-        sc._packets_have_default_beginning_clock_snapshot = packets_have_default_beginning_clock_snapshot
-        sc._packets_have_default_end_clock_snapshot = packets_have_default_end_clock_snapshot
-
+        sc._packets_have_beginning_default_clock_snapshot = packets_have_beginning_default_clock_snapshot
+        sc._packets_have_end_default_clock_snapshot = packets_have_end_default_clock_snapshot
+        sc._set_supports_discarded_events(supports_discarded_events,
+                                          discarded_events_have_default_clock_snapshots)
+        sc._set_supports_discarded_packets(supports_discarded_packets,
+                                           discarded_packets_have_default_clock_snapshots)
         return sc
 
     @property
@@ -224,6 +232,50 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
             raise bt2.CreationError(
                 'cannot create {} field class'.format(type_name))
 
+    def _create_integer_field_class(self, create_func, py_cls, type_name, field_value_range, preferred_display_base):
+        field_class_ptr = create_func(self._ptr)
+        self._check_create_status(field_class_ptr, type_name)
+
+        field_class = py_cls._create_from_ptr(field_class_ptr)
+
+        if field_value_range is not None:
+            field_class._field_value_range = field_value_range
+
+        if preferred_display_base is not None:
+            field_class._preferred_display_base = preferred_display_base
+
+        return field_class
+
+    def create_signed_integer_field_class(self, field_value_range=None, preferred_display_base=None):
+        return self._create_integer_field_class(native_bt.field_class_signed_integer_create,
+                                                bt2.field_class._SignedIntegerFieldClass,
+                                                'signed integer', field_value_range, preferred_display_base)
+
+    def create_unsigned_integer_field_class(self, field_value_range=None, preferred_display_base=None):
+        return self._create_integer_field_class(native_bt.field_class_unsigned_integer_create,
+                                                bt2.field_class._UnsignedIntegerFieldClass,
+                                                'unsigned integer', field_value_range, preferred_display_base)
+
+    def create_signed_enumeration_field_class(self, field_value_range=None, preferred_display_base=None):
+        return self._create_integer_field_class(native_bt.field_class_signed_enumeration_create,
+                                                bt2.field_class._SignedEnumerationFieldClass,
+                                                'signed enumeration', field_value_range, preferred_display_base)
+
+    def create_unsigned_enumeration_field_class(self, field_value_range=None, preferred_display_base=None):
+        return self._create_integer_field_class(native_bt.field_class_unsigned_enumeration_create,
+                                                bt2.field_class._UnsignedEnumerationFieldClass,
+                                                'unsigned enumeration', field_value_range, preferred_display_base)
+
+    def create_real_field_class(self, is_single_precision=False):
+        field_class_ptr = native_bt.field_class_real_create(self._ptr)
+        self._check_create_status(field_class_ptr, 'real')
+
+        field_class = bt2.field_class._RealFieldClass._create_from_ptr(field_class_ptr)
+
+        field_class._is_single_precision = is_single_precision
+
+        return field_class
+
     def create_structure_field_class(self):
         field_class_ptr = native_bt.field_class_structure_create(self._ptr)
         self._check_create_status(field_class_ptr, 'structure')
@@ -234,7 +286,36 @@ class TraceClass(object._SharedObject, collections.abc.Mapping):
         field_class_ptr = native_bt.field_class_string_create(self._ptr)
         self._check_create_status(field_class_ptr, 'string')
 
-        return bt2.field_class.StringFieldClass._create_from_ptr(field_class_ptr)
+        return bt2.field_class._StringFieldClass._create_from_ptr(field_class_ptr)
+
+    def create_static_array_field_class(self, elem_fc, length):
+        utils._check_type(elem_fc, bt2.field_class._FieldClass)
+        utils._check_uint64(length)
+        ptr = native_bt.field_class_static_array_create(self._ptr, elem_fc._ptr, length)
+        self._check_create_status(ptr, 'static array')
+
+        return bt2.field_class._StaticArrayFieldClass._create_from_ptr_and_get_ref(ptr)
+
+    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)
+
+        if length_fc is not None:
+            obj._length_field_class = length_fc
+
+        return obj
+
+    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)
+
+        if selector_fc is not None:
+            obj._selector_field_class = selector_fc
+
+        return obj
 
     # Add a listener to be called when the trace class is destroyed.
 
This page took 0.024913 seconds and 4 git commands to generate.