struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name)
{
+ struct bt_ctf_stream_class *stream_class =
+ bt_ctf_stream_class_create_empty(name);
int ret;
+
+ if (!stream_class) {
+ goto error;
+ }
+
+ ret = init_event_header(stream_class);
+ if (ret) {
+ goto error;
+ }
+
+ ret = init_packet_context(stream_class);
+ if (ret) {
+ goto error;
+ }
+
+ return stream_class;
+
+error:
+ BT_PUT(stream_class);
+ return stream_class;
+}
+
+struct bt_ctf_stream_class *bt_ctf_stream_class_create_empty(const char *name)
+{
struct bt_ctf_stream_class *stream_class = NULL;
if (name && bt_ctf_validate_identifier(name)) {
stream_class->event_classes_ht = g_hash_table_new_full(g_int64_hash,
g_int64_equal, g_free, NULL);
- ret = init_event_header(stream_class);
- if (ret) {
+ stream_class->packet_context_type = bt_ctf_field_type_structure_create();
+ if (!stream_class->packet_context_type) {
goto error;
}
- ret = init_packet_context(stream_class);
- if (ret) {
+ stream_class->event_header_type = bt_ctf_field_type_structure_create();
+ if (!stream_class->event_header_type) {
+ goto error;
+ }
+
+ stream_class->event_context_type = bt_ctf_field_type_structure_create();
+ if (!stream_class->event_context_type) {
goto error;
}
return stream_class;
error:
- BT_PUT(stream_class);
+ BT_PUT(stream_class);
return stream_class;
}
int64_t ret;
if (!stream_class || !stream_class->id_set) {
- ret = -1;
+ ret = (int64_t) -1;
goto end;
}
- ret = (int64_t) stream_class->id;
+ ret = stream_class->id;
end:
return ret;
}
BT_HIDDEN
int _bt_ctf_stream_class_set_id(
- struct bt_ctf_stream_class *stream_class, uint32_t id)
+ struct bt_ctf_stream_class *stream_class, int64_t id)
{
stream_class->id = id;
stream_class->id_set = 1;
return 0;
}
-struct event_class_set_stream_id_data {
- uint32_t stream_id;
+struct event_class_set_stream_class_id_data {
+ int64_t stream_class_id;
int ret;
};
static
void event_class_set_stream_id(gpointer event_class, gpointer data)
{
- struct event_class_set_stream_id_data *typed_data = data;
+ struct event_class_set_stream_class_id_data *typed_data = data;
typed_data->ret |= bt_ctf_event_class_set_stream_id(event_class,
- typed_data->stream_id);
+ typed_data->stream_class_id);
}
BT_HIDDEN
int bt_ctf_stream_class_set_id_no_check(
- struct bt_ctf_stream_class *stream_class, uint32_t id)
+ struct bt_ctf_stream_class *stream_class, int64_t id)
{
int ret = 0;
- struct event_class_set_stream_id_data data =
- { .stream_id = id, .ret = 0 };
+ struct event_class_set_stream_class_id_data data =
+ { .stream_class_id = id, .ret = 0 };
/*
* Make sure all event classes have their "stream_id" attribute
}
int bt_ctf_stream_class_set_id(struct bt_ctf_stream_class *stream_class,
- uint32_t id)
+ uint64_t id_param)
{
int ret = 0;
+ int64_t id = (int64_t) id_param;
- if (!stream_class || stream_class->frozen) {
+ if (!stream_class || stream_class->frozen || id < 0) {
ret = -1;
goto end;
}
goto end;
}
- /*
- * Two event classes cannot share the same name in a given
- * stream class.
- */
- if (!strcmp(bt_ctf_event_class_get_name(event_class_a),
- bt_ctf_event_class_get_name(event_class_b))) {
- search_query->found = 1;
- goto end;
- }
-
/*
* Two event classes cannot share the same ID in a given
* stream class.
int64_t ret;
if (!stream_class) {
- ret = -1;
+ ret = (int64_t) -1;
goto end;
}
- ret = (int) stream_class->event_classes->len;
+ ret = (int64_t) stream_class->event_classes->len;
end:
return ret;
}
-struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class(
- struct bt_ctf_stream_class *stream_class, int index)
+struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_index(
+ struct bt_ctf_stream_class *stream_class, uint64_t index)
{
struct bt_ctf_event_class *event_class = NULL;
- if (!stream_class || index < 0 ||
- index >= stream_class->event_classes->len) {
+ if (!stream_class || index >= stream_class->event_classes->len) {
goto end;
}
return event_class;
}
-struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_name(
- struct bt_ctf_stream_class *stream_class, const char *name)
-{
- size_t i;
- struct bt_ctf_event_class *event_class = NULL;
-
- if (!stream_class || !name) {
- goto end;
- }
-
- for (i = 0; i < stream_class->event_classes->len; i++) {
- struct bt_ctf_event_class *cur_event_class =
- g_ptr_array_index(stream_class->event_classes, i);
- const char *cur_event_class_name =
- bt_ctf_event_class_get_name(cur_event_class);
-
- if (!strcmp(name, cur_event_class_name)) {
- event_class = cur_event_class;
- bt_get(event_class);
- goto end;
- }
- }
-end:
- return event_class;
-}
-
struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_id(
- struct bt_ctf_stream_class *stream_class, uint32_t id)
+ struct bt_ctf_stream_class *stream_class, uint64_t id)
{
- int64_t id_key = id;
+ int64_t id_key = (int64_t) id;
struct bt_ctf_event_class *event_class = NULL;
- if (!stream_class) {
+ if (!stream_class || id_key < 0) {
goto end;
}
static
void *get_event_class(void *element, int i)
{
- return bt_ctf_stream_class_get_event_class(
+ return bt_ctf_stream_class_get_event_class_by_index(
(struct bt_ctf_stream_class *) element, i);
}
int bt_ctf_stream_class_serialize(struct bt_ctf_stream_class *stream_class,
struct metadata_context *context)
{
- int64_t ret = 0;
+ int ret = 0;
size_t i;
g_string_assign(context->field_name, "");
}
g_string_append_printf(context->string,
- "stream {\n\tid = %" PRIu32 ";\n\tevent.header := ",
+ "stream {\n\tid = %" PRId64 ";\n\tevent.header := ",
stream_class->id);
ret = bt_ctf_field_type_serialize(stream_class->event_header_type,
context);
goto end;
}
- if (stream_class->event_header_type) {
- bt_put(stream_class->event_header_type);
- }
- stream_class->event_header_type = event_header_type;
+ BT_MOVE(stream_class->event_header_type, event_header_type);
end:
if (ret) {
bt_put(event_header_type);
goto end;
}
- bt_put(stream_class->packet_context_type);
- stream_class->packet_context_type = packet_context_type;
+ BT_MOVE(stream_class->packet_context_type, packet_context_type);
end:
if (ret) {
bt_put(packet_context_type);