- uint64_t i;
-
- /* Default clock class */
- if (sc->default_clock_class) {
- const char *descr;
- int64_t offset_seconds;
- uint64_t offset_cycles;
- bt_uuid uuid;
-
- append_indent(ctx);
- g_string_append(ctx->tsdl, "clock {\n");
- ctx->indent_level++;
- BT_ASSERT(sc->default_clock_class_name->len > 0);
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "name = %s;\n",
- sc->default_clock_class_name->str);
- descr = bt_clock_class_get_description(sc->default_clock_class);
- if (descr) {
- append_indent(ctx);
- g_string_append(ctx->tsdl, "description = ");
- append_quoted_string(ctx, descr);
- g_string_append(ctx->tsdl, ";\n");
- }
-
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "freq = %" PRIu64 ";\n",
- bt_clock_class_get_frequency(sc->default_clock_class));
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "precision = %" PRIu64 ";\n",
- bt_clock_class_get_precision(sc->default_clock_class));
- bt_clock_class_get_offset(sc->default_clock_class,
- &offset_seconds, &offset_cycles);
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "offset_s = %" PRId64 ";\n",
- offset_seconds);
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "offset = %" PRIu64 ";\n",
- offset_cycles);
- append_indent(ctx);
- g_string_append(ctx->tsdl, "absolute = ");
-
- if (bt_clock_class_origin_is_unix_epoch(
- sc->default_clock_class)) {
- g_string_append(ctx->tsdl, "true");
- } else {
- g_string_append(ctx->tsdl, "false");
- }
-
- g_string_append(ctx->tsdl, ";\n");
- uuid = bt_clock_class_get_uuid(sc->default_clock_class);
- if (uuid) {
- append_indent(ctx);
- g_string_append(ctx->tsdl, "uuid = ");
- append_uuid(ctx, uuid);
- g_string_append(ctx->tsdl, ";\n");
- }
-
- /* End clock class */
- append_end_block_semi_nl_nl(ctx);
- }
-
- /* Stream class */
- append_indent(ctx);
- g_string_append(ctx->tsdl, "stream {\n");
- ctx->indent_level++;
-
- /* Stream class properties */
- append_indent(ctx);
- g_string_append_printf(ctx->tsdl, "id = %" PRIu64 ";\n",
- bt_stream_class_get_id(sc->ir_sc));
-
- /* Packet context field class */
- append_indent(ctx);
- g_string_append(ctx->tsdl, "packet.context := struct {\n");
- ctx->indent_level++;
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- NULL, "packet_size", true);
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- NULL, "content_size", true);
-
- if (sc->packets_have_ts_begin) {
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- sc->default_clock_class_name->str,
- "timestamp_begin", true);
- }
-
- if (sc->packets_have_ts_end) {
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- sc->default_clock_class_name->str,
- "timestamp_end", true);
- }
-
- if (sc->has_discarded_events) {
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- NULL, "events_discarded", true);
- }
-
- /*
- * Unconditionnally write the packet sequence number as, even if
- * there's no possible discarded packets message, it's still
- * useful information to have.
- */
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- NULL, "packet_seq_num", true);
-
- if (sc->packet_context_fc) {
- append_struct_field_class_members(ctx,
- fs_sink_ctf_field_class_as_struct(sc->packet_context_fc));
- fs_sink_ctf_field_class_struct_align_at_least(
- fs_sink_ctf_field_class_as_struct(sc->packet_context_fc), 8);
- }
-
- /* End packet context field class */
- append_end_block(ctx);
- g_string_append_printf(ctx->tsdl, " align(%u);\n\n",
- sc->packet_context_fc ? sc->packet_context_fc->alignment : 8);
-
- /* Event header field class */
- append_indent(ctx);
- g_string_append(ctx->tsdl, "event.header := struct {\n");
- ctx->indent_level++;
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- NULL, "id", true);
-
- if (sc->default_clock_class) {
- append_indent(ctx);
- append_integer_field_class_from_props(ctx, 64, 8, false,
- BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
- sc->default_clock_class_name->str,
- "timestamp", true);
- }
-
- /* End event header field class */
- append_end_block(ctx);
- g_string_append(ctx->tsdl, " align(8);\n");
-
- /* Event common context field class */
- if (sc->event_common_context_fc) {
- append_indent(ctx);
- g_string_append(ctx->tsdl, "event.context := ");
- append_field_class(ctx, sc->event_common_context_fc);
- g_string_append(ctx->tsdl, ";\n");
- }
-
- /* End stream class */
- append_end_block_semi_nl_nl(ctx);
-
- /* Event classes */
- for (i = 0; i < sc->event_classes->len; i++) {
- append_event_class(ctx,
- (fs_sink_ctf_event_class *) sc->event_classes->pdata[i]);
- }
+ uint64_t i;
+
+ /* Default clock class */
+ if (sc->default_clock_class) {
+ const char *descr;
+ int64_t offset_seconds;
+ uint64_t offset_cycles;
+ bt_uuid uuid;
+
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "clock {\n");
+ ctx->indent_level++;
+ BT_ASSERT(sc->default_clock_class_name->len > 0);
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "name = %s;\n", sc->default_clock_class_name->str);
+ descr = bt_clock_class_get_description(sc->default_clock_class);
+ if (descr) {
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "description = ");
+ append_quoted_string(ctx, descr);
+ g_string_append(ctx->tsdl, ";\n");
+ }
+
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "freq = %" PRIu64 ";\n",
+ bt_clock_class_get_frequency(sc->default_clock_class));
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "precision = %" PRIu64 ";\n",
+ bt_clock_class_get_precision(sc->default_clock_class));
+ bt_clock_class_get_offset(sc->default_clock_class, &offset_seconds, &offset_cycles);
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "offset_s = %" PRId64 ";\n", offset_seconds);
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "offset = %" PRIu64 ";\n", offset_cycles);
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "absolute = ");
+
+ if (bt_clock_class_origin_is_unix_epoch(sc->default_clock_class)) {
+ g_string_append(ctx->tsdl, "true");
+ } else {
+ g_string_append(ctx->tsdl, "false");
+ }
+
+ g_string_append(ctx->tsdl, ";\n");
+ uuid = bt_clock_class_get_uuid(sc->default_clock_class);
+ if (uuid) {
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "uuid = ");
+ append_uuid(ctx, uuid);
+ g_string_append(ctx->tsdl, ";\n");
+ }
+
+ /* End clock class */
+ append_end_block_semi_nl_nl(ctx);
+ }
+
+ /* Stream class */
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "stream {\n");
+ ctx->indent_level++;
+
+ /* Stream class properties */
+ append_indent(ctx);
+ g_string_append_printf(ctx->tsdl, "id = %" PRIu64 ";\n", bt_stream_class_get_id(sc->ir_sc));
+
+ /* Packet context field class */
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "packet.context := struct {\n");
+ ctx->indent_level++;
+ append_indent(ctx);
+ append_integer_field_class_from_props(ctx, 64, 8, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ NULL, "packet_size", true);
+ append_indent(ctx);
+ append_integer_field_class_from_props(ctx, 64, 8, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ NULL, "content_size", true);
+
+ if (sc->packets_have_ts_begin) {
+ append_indent(ctx);
+ append_integer_field_class_from_props(
+ ctx, 64, 8, false, BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ sc->default_clock_class_name->str, "timestamp_begin", true);
+ }
+
+ if (sc->packets_have_ts_end) {
+ append_indent(ctx);
+ append_integer_field_class_from_props(
+ ctx, 64, 8, false, BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ sc->default_clock_class_name->str, "timestamp_end", true);
+ }
+
+ if (sc->has_discarded_events) {
+ append_indent(ctx);
+ append_integer_field_class_from_props(ctx, 64, 8, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ NULL, "events_discarded", true);
+ }
+
+ /*
+ * Unconditionnally write the packet sequence number as, even if
+ * there's no possible discarded packets message, it's still
+ * useful information to have.
+ */
+ append_indent(ctx);
+ append_integer_field_class_from_props(ctx, 64, 8, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ NULL, "packet_seq_num", true);
+
+ if (sc->packet_context_fc) {
+ append_struct_field_class_members(ctx,
+ fs_sink_ctf_field_class_as_struct(sc->packet_context_fc));
+ fs_sink_ctf_field_class_struct_align_at_least(
+ fs_sink_ctf_field_class_as_struct(sc->packet_context_fc), 8);
+ }
+
+ /* End packet context field class */
+ append_end_block(ctx);
+ g_string_append_printf(ctx->tsdl, " align(%u);\n\n",
+ sc->packet_context_fc ? sc->packet_context_fc->alignment : 8);
+
+ /* Event header field class */
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "event.header := struct {\n");
+ ctx->indent_level++;
+ append_indent(ctx);
+ append_integer_field_class_from_props(
+ ctx, 64, 8, false, BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL, NULL, "id", true);
+
+ if (sc->default_clock_class) {
+ append_indent(ctx);
+ append_integer_field_class_from_props(ctx, 64, 8, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_DECIMAL,
+ sc->default_clock_class_name->str, "timestamp", true);
+ }
+
+ /* End event header field class */
+ append_end_block(ctx);
+ g_string_append(ctx->tsdl, " align(8);\n");
+
+ /* Event common context field class */
+ if (sc->event_common_context_fc) {
+ append_indent(ctx);
+ g_string_append(ctx->tsdl, "event.context := ");
+ append_field_class(ctx, sc->event_common_context_fc);
+ g_string_append(ctx->tsdl, ";\n");
+ }
+
+ /* End stream class */
+ append_end_block_semi_nl_nl(ctx);
+
+ /* Event classes */
+ for (i = 0; i < sc->event_classes->len; i++) {
+ append_event_class(ctx, (fs_sink_ctf_event_class *) sc->event_classes->pdata[i]);
+ }