Fix: swapped libelf and libdw names in configure error message
[babeltrace.git] / bindings / python / python-complements.c
index e1c52c9870c08523525141ca18a3339849ab6b42..6b47ff9bf9aaaaac16213b00e9cb854c9752b89f 100644 (file)
 #include "python-complements.h"
 #include <babeltrace/ctf-writer/event-types-internal.h>
 #include <babeltrace/ctf-writer/event-fields-internal.h>
+#include <babeltrace/iterator.h>
+#include <babeltrace/ctf/iterator.h>
+#include <babeltrace/ctf/events-internal.h>
+#include <glib.h>
 
 /* FILE functions
    ----------------------------------------------------
@@ -151,6 +155,22 @@ end:
        return ret;
 }
 
+struct bt_declaration *_bt_python_get_sequence_element_declaration(
+               struct bt_declaration *field)
+{
+       struct declaration_sequence *sequence_decl;
+       struct bt_declaration *ret = NULL;
+
+       if (!field) {
+               goto end;
+       }
+
+       sequence_decl = container_of(field, struct declaration_sequence, p);
+       ret = sequence_decl->elem;
+end:
+       return ret;
+}
+
 const char *_bt_python_get_array_string(struct bt_definition *field)
 {
        struct definition_array *array;
@@ -166,6 +186,21 @@ end:
        return ret;
 }
 
+const char *_bt_python_get_sequence_string(struct bt_definition *field)
+{
+       struct definition_sequence *sequence;
+       const char *ret = NULL;
+
+       if (!field) {
+               goto end;
+       }
+
+       sequence = container_of(field, struct definition_sequence, p);
+       ret = sequence->string->str;
+end:
+       return ret;
+}
+
 struct definition_sequence *_bt_python_get_sequence_from_def(
                struct bt_definition *field)
 {
@@ -205,3 +240,33 @@ enum ctf_type_id _bt_python_get_field_type(const struct bt_ctf_field *field)
 end:
        return type_id;
 }
+
+/*
+ * Python 3.5 changes the StopIteration exception clearing behaviour which
+ * erroneously marks swig clean-up function as having failed. This explicit
+ * allocation function is intended as a work-around so SWIG doesn't manage
+ * the lifetime of a "temporary" object by itself.
+ */
+struct bt_iter_pos *_bt_python_create_iter_pos(void)
+{
+       return g_new0(struct bt_iter_pos, 1);
+}
+
+struct bt_ctf_iter *_bt_python_ctf_iter_create_intersect(
+               struct bt_context *ctx,
+               struct bt_iter_pos *inter_begin_pos,
+               struct bt_iter_pos *inter_end_pos)
+{
+       return bt_ctf_iter_create_intersect(ctx, &inter_begin_pos,
+                       &inter_end_pos);
+}
+
+int _bt_python_has_intersection(struct bt_context *ctx)
+{
+       int ret;
+       uint64_t begin = 0, end = ULLONG_MAX;
+
+       ret = ctf_find_packets_intersection(ctx, &begin, &end);
+
+       return ret == 0 ? 1 : 0;
+}
This page took 0.023385 seconds and 4 git commands to generate.