lib: remove clock class priority map, use default clock value
[babeltrace.git] / lib / ctf-ir / event-class.c
index 79cd123eac2362c490382551ffc35be07cdab81b..a6295cbe8c9276d69127753e6a2cde68e9596d49 100644 (file)
 #include <babeltrace/lib-logging-internal.h>
 
 #include <babeltrace/assert-pre-internal.h>
+#include <babeltrace/ctf-ir/clock-value-internal.h>
 #include <babeltrace/ctf-ir/fields-internal.h>
 #include <babeltrace/ctf-ir/field-types-internal.h>
 #include <babeltrace/ctf-ir/event-class.h>
 #include <babeltrace/ctf-ir/event-class-internal.h>
+#include <babeltrace/ctf-ir/event-internal.h>
 #include <babeltrace/ctf-ir/stream-class.h>
 #include <babeltrace/ctf-ir/stream-class-internal.h>
 #include <babeltrace/ctf-ir/trace-internal.h>
@@ -83,7 +85,7 @@ int bt_event_class_common_initialize(struct bt_event_class_common *event_class,
 
        BT_LOGD("Initializing common event class object: name=\"%s\"",
                name);
-       bt_object_init(event_class, release_func);
+       bt_object_init_shared_with_parent(&event_class->base, release_func);
        event_class->payload_field_type = ft_struct_create_func();
        if (!event_class->payload_field_type) {
                BT_LOGE_STR("Cannot create event class's initial payload field type object.");
@@ -116,11 +118,21 @@ error:
 static
 void bt_event_class_destroy(struct bt_object *obj)
 {
+       struct bt_event_class *event_class = (void *) obj;
+
        BT_LOGD("Destroying event class: addr=%p", obj);
        bt_event_class_common_finalize(obj);
+       bt_object_pool_finalize(&event_class->event_pool);
        g_free(obj);
 }
 
+static
+void free_event(struct bt_event *event,
+               struct bt_event_class *event_class)
+{
+       bt_event_destroy(event);
+}
+
 struct bt_event_class *bt_event_class_create(const char *name)
 {
        int ret;
@@ -147,6 +159,16 @@ struct bt_event_class *bt_event_class_create(const char *name)
                goto error;
        }
 
+       ret = bt_object_pool_initialize(&event_class->event_pool,
+               (bt_object_pool_new_object_func) bt_event_new,
+               (bt_object_pool_destroy_object_func) free_event,
+               event_class);
+       if (ret) {
+               BT_LOGE("Failed to initialize event pool: ret=%d",
+                       ret);
+               goto error;
+       }
+
        BT_LOGD("Created event class object: addr=%p, name=\"%s\"",
                event_class, bt_event_class_get_name(event_class));
        goto end;
This page took 0.03469 seconds and 4 git commands to generate.