X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=formats%2Fctf%2Fir%2Fevent-class.c;fp=formats%2Fctf%2Fir%2Fevent-class.c;h=fa55457c3cb15dd1fefba7dc9f43f6ae312d1ef0;hb=5990dd44d7b43d236e7622d24d6d4dd4e6c58379;hp=750203aeef24b3e85e042b1bed63a21235c50a6b;hpb=2789e5d9b2cbbe16af62b703981719b9cae8470f;p=babeltrace.git diff --git a/formats/ctf/ir/event-class.c b/formats/ctf/ir/event-class.c index 750203ae..fa55457c 100644 --- a/formats/ctf/ir/event-class.c +++ b/formats/ctf/ir/event-class.c @@ -58,6 +58,7 @@ struct bt_ctf_event_class *bt_ctf_event_class_create(const char *name) goto error; } + event_class->id = -1; bt_object_init(event_class, bt_ctf_event_class_destroy); event_class->fields = bt_ctf_field_type_structure_create(); if (!event_class->fields) { @@ -112,6 +113,11 @@ const char *bt_ctf_event_class_get_name(struct bt_ctf_event_class *event_class) goto end; } + if (event_class->name) { + name = event_class->name; + goto end; + } + obj = bt_ctf_attributes_get_field_value(event_class->attributes, BT_CTF_EVENT_CLASS_ATTR_NAME_INDEX); if (!obj) { @@ -137,6 +143,11 @@ int64_t bt_ctf_event_class_get_id(struct bt_ctf_event_class *event_class) goto end; } + if (event_class->id >= 0) { + ret = event_class->id; + goto end; + } + obj = bt_ctf_attributes_get_field_value(event_class->attributes, BT_CTF_EVENT_CLASS_ATTR_ID_INDEX); if (!obj) { @@ -547,6 +558,8 @@ void bt_ctf_event_class_freeze(struct bt_ctf_event_class *event_class) { assert(event_class); event_class->frozen = 1; + event_class->name = bt_ctf_event_class_get_name(event_class); + event_class->id = bt_ctf_event_class_get_id(event_class); bt_ctf_field_type_freeze(event_class->context); bt_ctf_field_type_freeze(event_class->fields); bt_ctf_attributes_freeze(event_class->attributes);