callbacks: use correct type for element size
[babeltrace.git] / converter / babeltrace-lib.c
index d62565c02c88c173b4e95939f9ec4c4c54944367..8f0502cdaebdf81536fdeeadfd4576b1372244e3 100644 (file)
@@ -34,6 +34,8 @@
 #include <babeltrace/ctf-ir/metadata.h>
 #include <stdarg.h>
 
+int babeltrace_verbose, babeltrace_debug;
+
 struct stream_saved_pos {
        /*
         * Use file_stream pointer to check if the trace collection we
@@ -165,20 +167,14 @@ int babeltrace_iter_add_callback(struct babeltrace_iter *iter,
 
                        stream = g_ptr_array_index(tin->streams, stream_id);
 
-                       /* find or create the bt_stream_callbacks for this stream */
-                       if (iter->callbacks->len >= stream_id) {
-                               bt_stream_cb = &g_array_index(iter->callbacks,
-                                               struct bt_stream_callbacks, stream->stream_id);
-                       } else {
-                               g_array_set_size(iter->callbacks, stream->stream_id);
+                       if (stream_id >= iter->callbacks->len) {
+                               g_array_set_size(iter->callbacks, stream->stream_id + 1);
                        }
-                       if (!bt_stream_cb || !bt_stream_cb->per_id_callbacks) {
-                               struct bt_stream_callbacks new_stream_cb;
-                               new_stream_cb.per_id_callbacks = g_array_new(1, 1,
+                       bt_stream_cb = &g_array_index(iter->callbacks,
+                                       struct bt_stream_callbacks, stream->stream_id);
+                       if (!bt_stream_cb->per_id_callbacks) {
+                               bt_stream_cb->per_id_callbacks = g_array_new(FALSE, TRUE,
                                                sizeof(struct bt_callback_chain));
-                               g_array_insert_val(iter->callbacks, stream->stream_id, new_stream_cb);
-                               bt_stream_cb = &g_array_index(iter->callbacks,
-                                               struct bt_stream_callbacks, stream->stream_id);
                        }
 
                        if (event) {
@@ -190,27 +186,22 @@ int babeltrace_iter_add_callback(struct babeltrace_iter *iter,
                                        printf("event not found\n");
                                        continue;
                                }
-                               event_id = (uint64_t)(unsigned long)*event_id_ptr;
+                               event_id = (uint64_t)(unsigned long) *event_id_ptr;
 
                                /* find or create the bt_callback_chain for this event */
-                               if (bt_stream_cb->per_id_callbacks->len >= event_id) {
-                                       bt_chain = &g_array_index(bt_stream_cb->per_id_callbacks,
-                                                       struct bt_callback_chain, event_id);
-                               } else {
-                                       g_array_set_size(bt_stream_cb->per_id_callbacks, event_id);
+                               if (event_id >= bt_stream_cb->per_id_callbacks->len) {
+                                       g_array_set_size(bt_stream_cb->per_id_callbacks, event_id + 1);
                                }
-                               if (!bt_chain || !bt_chain->callback) {
-                                       struct bt_callback_chain new_chain;
-                                       new_chain.callback = g_array_new(1, 1, sizeof(struct bt_callback));
-                                       g_array_insert_val(bt_stream_cb->per_id_callbacks, event_id,
-                                                       new_chain);
-                                       bt_chain = &g_array_index(bt_stream_cb->per_id_callbacks,
-                                                       struct bt_callback_chain, event_id);
+                               bt_chain = &g_array_index(bt_stream_cb->per_id_callbacks,
+                                               struct bt_callback_chain, event_id);
+                               if (!bt_chain->callback) {
+                                       bt_chain->callback = g_array_new(FALSE, TRUE,
+                                               sizeof(struct bt_callback));
                                }
                        } else {
                                /* callback for all events */
                                if (!iter->main_callbacks.callback) {
-                                       iter->main_callbacks.callback = g_array_new(1, 1,
+                                       iter->main_callbacks.callback = g_array_new(FALSE, TRUE,
                                                        sizeof(struct bt_callback));
                                }
                                bt_chain = &iter->main_callbacks;
@@ -277,7 +268,7 @@ static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
                 */
                break;
        case BT_SEEK_BEGIN:
-               ctf_move_pos_slow(&file_stream->pos, 0, SEEK_SET);
+               file_stream->pos.move_pos_slow(&file_stream->pos, 0, SEEK_SET);
                ret = stream_read_event(file_stream);
                break;
        case BT_SEEK_TIME:
@@ -505,6 +496,7 @@ void process_callbacks(struct babeltrace_iter *iter,
        struct bt_ctf_data ctf_data;
 
        ctf_data.event = extract_ctf_stream_event(stream);
+       ctf_data.stream = stream;
 
        /* process all events callback first */
        if (iter->main_callbacks.callback) {
@@ -608,3 +600,12 @@ end:
        babeltrace_iter_destroy(iter);
        return ret;
 }
+
+static
+void __attribute__((constructor)) init_babeltrace_lib(void)
+{
+       if (getenv("BABELTRACE_VERBOSE"))
+               babeltrace_verbose = 1;
+       if (getenv("BABELTRACE_DEBUG"))
+               babeltrace_debug = 1;
+}
This page took 0.024296 seconds and 4 git commands to generate.