#include <stdbool.h>
#include <stdlib.h>
#include <ctype.h>
-#include <babeltrace/assert-internal.h>
+#include <babeltrace2/assert-internal.h>
#include <glib.h>
#include <inttypes.h>
#include <errno.h>
-#include <babeltrace/common-internal.h>
-#include <babeltrace/compat/uuid-internal.h>
-#include <babeltrace/endian-internal.h>
-#include <babeltrace/babeltrace.h>
+#include <babeltrace2/common-internal.h>
+#include <babeltrace2/compat/uuid-internal.h>
+#include <babeltrace2/endian-internal.h>
+#include <babeltrace2/babeltrace.h>
#include "scanner.h"
#include "parser.h"
* Visitor context (private).
*/
struct ctx {
+ bt_self_component_source *self_comp;
/* Trace IR trace class being filled (owned by this) */
bt_trace_class *trace_class;
BT_LOGE_STR("Cannot create empty trace class.");
goto error;
}
+ ctx->self_comp = self_comp;
}
ctx->ctf_tc = ctf_trace_class_create();
* Only read "stream_id" if get_unary_unsigned()
* succeeded.
*/
- if (ret || (!ret && *stream_id < 0)) {
+ if (ret) {
_BT_LOGE_NODE(node,
"Unexpected unary expression for event class's `stream_id` attribute.");
ret = -EINVAL;
stream_class->id = stream_id;
g_ptr_array_add(ctx->ctf_tc->stream_classes,
stream_class);
- stream_class = stream_class;
break;
case 1:
/* Single stream class: get its ID */
goto end;
}
+ /* Update stream class configuration */
+ ret = ctf_trace_class_update_stream_class_config(ctx->ctf_tc);
+ if (ret) {
+ ret = -EINVAL;
+ goto end;
+ }
+
/* Update text arrays and sequences */
ret = ctf_trace_class_update_text_array_sequence(ctx->ctf_tc);
if (ret) {
if (ctx->trace_class) {
/* Copy new CTF metadata -> new IR metadata */
- ret = ctf_trace_class_translate(ctx->trace_class, ctx->ctf_tc);
+ ret = ctf_trace_class_translate(ctx->self_comp,
+ ctx->trace_class, ctx->ctf_tc);
if (ret) {
ret = -EINVAL;
goto end;