bt2: add bt2._OutputPort.create_notification_iterator()
[babeltrace.git] / bindings / python / bt2 / bt2 / native_bt.i
index 59595a3117965a5bb432d39b2819d7236a8ef614..ad22797384b44c84e4683ec485f57d9dcfce5f6f 100644 (file)
@@ -192,6 +192,43 @@ typedef int bt_bool;
        $result = $1;
 }
 
+%{
+static enum bt_notification_type *bt_py3_notif_types_from_py_list(
+               PyObject *py_notif_types)
+{
+       enum bt_notification_type *notification_types = NULL;
+       size_t i;
+
+       assert(!PyErr_Occurred());
+
+       if (py_notif_types == Py_None) {
+               goto end;
+       }
+
+       assert(PyList_Check(py_notif_types));
+       notification_types = g_new0(enum bt_notification_type,
+               PyList_Size(py_notif_types) + 1);
+       assert(notification_types);
+       notification_types[PyList_Size(py_notif_types)] =
+               BT_NOTIFICATION_TYPE_SENTINEL;
+
+       for (i = 0; i < PyList_Size(py_notif_types); i++) {
+               PyObject *item = PyList_GetItem(py_notif_types, i);
+               long value;
+               int overflow;
+
+               assert(item);
+               assert(PyLong_Check(item));
+               value = PyLong_AsLongAndOverflow(item, &overflow);
+               assert(overflow == 0);
+               notification_types[i] = value;
+       }
+
+end:
+       return notification_types;
+}
+%}
+
 /* Per-module interface files */
 %include "native_btccpriomap.i"
 %include "native_btclockclass.i"
This page took 0.024635 seconds and 4 git commands to generate.