Use environment information for extra fields
[babeltrace.git] / lib / iterator.c
index 8e30a075a55302d305aee34520881926f4961ef4..4d201dc48942d911edc5647db48837869fcb526a 100644 (file)
 #include <stdlib.h>
 #include <babeltrace/babeltrace.h>
 #include <babeltrace/callbacks-internal.h>
+#include <babeltrace/context.h>
 #include <babeltrace/ctf/metadata.h>
 #include <babeltrace/iterator-internal.h>
+#include <babeltrace/iterator.h>
 #include <babeltrace/prio_heap.h>
 
 struct stream_saved_pos {
@@ -35,7 +37,7 @@ struct stream_saved_pos {
        ssize_t offset;         /* offset from base, in bits. EOF for end of file. */
 };
 
-struct babeltrace_saved_pos {
+struct bt_saved_pos {
        struct trace_collection *tc;
        GArray *stream_saved_pos;       /* Contains struct stream_saved_pos */
 };
@@ -48,7 +50,7 @@ static int stream_read_event(struct ctf_file_stream *sin)
        if (ret == EOF)
                return EOF;
        else if (ret) {
-               fprintf(stdout, "[error] Reading event failed.\n");
+               fprintf(stderr, "[error] Reading event failed.\n");
                return ret;
        }
        return 0;
@@ -73,7 +75,7 @@ int stream_compare(void *a, void *b)
  * The stream_id parameter is only useful for BT_SEEK_RESTORE.
  */
 static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
-               const struct trace_collection_pos *begin_pos,
+               const struct bt_iter_pos *begin_pos,
                unsigned long stream_id)
 {
        int ret = 0;
@@ -100,14 +102,14 @@ static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
 }
 
 /*
- * babeltrace_iter_seek: seek iterator to given position.
+ * bt_iter_seek: seek iterator to given position.
  */
-int babeltrace_iter_seek(struct babeltrace_iter *iter,
-               const struct trace_collection_pos *begin_pos)
+int bt_iter_seek(struct bt_iter *iter,
+               const struct bt_iter_pos *begin_pos)
 {
        int i, stream_id;
        int ret = 0;
-       struct trace_collection *tc = iter->tc;
+       struct trace_collection *tc = iter->ctx->tc;
 
        for (i = 0; i < tc->array->len; i++) {
                struct ctf_trace *tin;
@@ -140,34 +142,36 @@ end:
        return ret;
 }
 
-struct babeltrace_iter *babeltrace_iter_create(struct trace_collection *tc,
-               struct trace_collection_pos *begin_pos,
-               struct trace_collection_pos *end_pos)
+struct bt_iter *bt_iter_create(struct bt_context *ctx,
+               struct bt_iter_pos *begin_pos,
+               struct bt_iter_pos *end_pos)
 {
        int i, stream_id;
        int ret = 0;
-       struct babeltrace_iter *iter;
+       struct bt_iter *iter;
 
-       iter = malloc(sizeof(struct babeltrace_iter));
+       iter = malloc(sizeof(struct bt_iter));
        if (!iter)
                goto error_malloc;
        iter->stream_heap = g_new(struct ptr_heap, 1);
-       iter->tc = tc;
        iter->end_pos = end_pos;
        iter->callbacks = g_array_new(0, 1, sizeof(struct bt_stream_callbacks));
        iter->recalculate_dep_graph = 0;
        iter->main_callbacks.callback = NULL;
        iter->dep_gc = g_ptr_array_new();
+       if (bt_context_get(ctx) != 0)
+               goto error_ctx;
+       iter->ctx = ctx;
 
        ret = heap_init(iter->stream_heap, 0, stream_compare);
        if (ret < 0)
                goto error_heap_init;
 
-       for (i = 0; i < tc->array->len; i++) {
+       for (i = 0; i < ctx->tc->array->len; i++) {
                struct ctf_trace *tin;
                struct trace_descriptor *td_read;
 
-               td_read = g_ptr_array_index(tc->array, i);
+               td_read = g_ptr_array_index(ctx->tc->array, i);
                tin = container_of(td_read, struct ctf_trace, parent);
 
                /* Populate heap with each stream */
@@ -210,12 +214,13 @@ error:
        heap_free(iter->stream_heap);
 error_heap_init:
        g_free(iter->stream_heap);
+error_ctx:
        free(iter);
 error_malloc:
        return NULL;
 }
 
-void babeltrace_iter_destroy(struct babeltrace_iter *iter)
+void bt_iter_destroy(struct bt_iter *iter)
 {
        struct bt_stream_callbacks *bt_stream_cb;
        struct bt_callback_chain *bt_chain;
@@ -244,10 +249,12 @@ void babeltrace_iter_destroy(struct babeltrace_iter *iter)
                g_array_free(bt_stream_cb->per_id_callbacks, TRUE);
        }
 
+       bt_context_put(iter->ctx);
+
        free(iter);
 }
 
-int babeltrace_iter_next(struct babeltrace_iter *iter)
+int bt_iter_next(struct bt_iter *iter)
 {
        struct ctf_file_stream *file_stream, *removed;
        int ret;
@@ -276,7 +283,7 @@ end:
        return ret;
 }
 
-int babeltrace_iter_read_event(struct babeltrace_iter *iter,
+int bt_iter_read_event(struct bt_iter *iter,
                struct ctf_stream **stream,
                struct ctf_stream_event **event)
 {
This page took 0.024475 seconds and 4 git commands to generate.