#include "ctf-meta-visitors.h"
static inline
-struct bt_field_type *ctf_field_type_to_ir(struct ctf_field_type *ft,
+bt_field_class *ctf_field_class_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec);
static inline
-void ctf_field_type_int_set_props(struct ctf_field_type_int *ft,
- struct bt_field_type *ir_ft)
+void ctf_field_class_int_set_props(struct ctf_field_class_int *fc,
+ bt_field_class *ir_fc)
{
- int ret;
-
- ret = bt_field_type_integer_set_field_value_range(ir_ft, ft->base.size);
- BT_ASSERT(ret == 0);
- ret = bt_field_type_integer_set_preferred_display_base(ir_ft,
- ft->disp_base);
- BT_ASSERT(ret == 0);
+ bt_field_class_integer_set_field_value_range(ir_fc,
+ fc->base.size);
+ bt_field_class_integer_set_preferred_display_base(ir_fc,
+ fc->disp_base);
}
static inline
-struct bt_field_type *ctf_field_type_int_to_ir(struct ctf_field_type_int *ft)
+bt_field_class *ctf_field_class_int_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_int *fc)
{
- struct bt_field_type *ir_ft;
+ bt_field_class *ir_fc;
- if (ft->is_signed) {
- ir_ft = bt_field_type_signed_integer_create();
+ if (fc->is_signed) {
+ ir_fc = bt_field_class_signed_integer_create(ir_tc);
} else {
- ir_ft = bt_field_type_unsigned_integer_create();
+ ir_fc = bt_field_class_unsigned_integer_create(ir_tc);
}
- BT_ASSERT(ir_ft);
- ctf_field_type_int_set_props(ft, ir_ft);
- return ir_ft;
+ BT_ASSERT(ir_fc);
+ ctf_field_class_int_set_props(fc, ir_fc);
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_enum_to_ir(struct ctf_field_type_enum *ft)
+bt_field_class *ctf_field_class_enum_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_enum *fc)
{
int ret;
- struct bt_field_type *ir_ft;
+ bt_field_class *ir_fc;
uint64_t i;
- if (ft->base.is_signed) {
- ir_ft = bt_field_type_signed_enumeration_create();
+ if (fc->base.is_signed) {
+ ir_fc = bt_field_class_signed_enumeration_create(ir_tc);
} else {
- ir_ft = bt_field_type_unsigned_enumeration_create();
+ ir_fc = bt_field_class_unsigned_enumeration_create(ir_tc);
}
- BT_ASSERT(ir_ft);
- ctf_field_type_int_set_props((void *) ft, ir_ft);
+ BT_ASSERT(ir_fc);
+ ctf_field_class_int_set_props((void *) fc, ir_fc);
- for (i = 0; i < ft->mappings->len; i++) {
- struct ctf_field_type_enum_mapping *mapping =
- ctf_field_type_enum_borrow_mapping_by_index(ft, i);
+ for (i = 0; i < fc->mappings->len; i++) {
+ struct ctf_field_class_enum_mapping *mapping =
+ ctf_field_class_enum_borrow_mapping_by_index(fc, i);
- if (ft->base.is_signed) {
- ret = bt_field_type_signed_enumeration_map_range(
- ir_ft, mapping->label->str,
+ if (fc->base.is_signed) {
+ ret = bt_field_class_signed_enumeration_map_range(
+ ir_fc, mapping->label->str,
mapping->range.lower.i, mapping->range.upper.i);
} else {
- ret = bt_field_type_unsigned_enumeration_map_range(
- ir_ft, mapping->label->str,
+ ret = bt_field_class_unsigned_enumeration_map_range(
+ ir_fc, mapping->label->str,
mapping->range.lower.u, mapping->range.upper.u);
}
BT_ASSERT(ret == 0);
}
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_float_to_ir(
- struct ctf_field_type_float *ft)
+bt_field_class *ctf_field_class_float_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_float *fc)
{
- struct bt_field_type *ir_ft;
- int ret;
+ bt_field_class *ir_fc;
- ir_ft = bt_field_type_real_create();
- BT_ASSERT(ir_ft);
+ ir_fc = bt_field_class_real_create(ir_tc);
+ BT_ASSERT(ir_fc);
- if (ft->base.size == 32) {
- ret = bt_field_type_real_set_is_single_precision(ir_ft,
+ if (fc->base.size == 32) {
+ bt_field_class_real_set_is_single_precision(ir_fc,
BT_TRUE);
- BT_ASSERT(ret == 0);
}
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_string_to_ir(
- struct ctf_field_type_string *ft)
+bt_field_class *ctf_field_class_string_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_string *fc)
{
- struct bt_field_type *ir_ft = bt_field_type_string_create();
+ bt_field_class *ir_fc = bt_field_class_string_create(ir_tc);
- BT_ASSERT(ir_ft);
- return ir_ft;
+ BT_ASSERT(ir_fc);
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_struct_to_ir(
- struct ctf_field_type_struct *ft,
+bt_field_class *ctf_field_class_struct_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_struct *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
int ret;
- struct bt_field_type *ir_ft = bt_field_type_structure_create();
+ bt_field_class *ir_fc = bt_field_class_structure_create(ir_tc);
uint64_t i;
- BT_ASSERT(ir_ft);
+ BT_ASSERT(ir_fc);
- for (i = 0; i < ft->members->len; i++) {
- struct ctf_named_field_type *named_ft =
- ctf_field_type_struct_borrow_member_by_index(ft, i);
- struct bt_field_type *member_ir_ft;
+ for (i = 0; i < fc->members->len; i++) {
+ struct ctf_named_field_class *named_fc =
+ ctf_field_class_struct_borrow_member_by_index(fc, i);
+ bt_field_class *member_ir_fc;
- if (!named_ft->ft->in_ir) {
+ if (!named_fc->fc->in_ir) {
continue;
}
- member_ir_ft = ctf_field_type_to_ir(named_ft->ft, tc, sc, ec);
- BT_ASSERT(member_ir_ft);
- ret = bt_field_type_structure_append_member(ir_ft,
- named_ft->name->str, member_ir_ft);
+ member_ir_fc = ctf_field_class_to_ir(ir_tc, named_fc->fc,
+ tc, sc, ec);
+ BT_ASSERT(member_ir_fc);
+ ret = bt_field_class_structure_append_member(
+ ir_fc, named_fc->name->str, member_ir_fc);
BT_ASSERT(ret == 0);
- bt_put(member_ir_ft);
+ bt_field_class_put_ref(member_ir_fc);
}
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *borrow_ir_ft_from_field_path(
- struct ctf_field_path *field_path,
+bt_field_class *borrow_ir_ft_from_field_path(struct ctf_field_path *field_path,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
- struct bt_field_type *ir_ft = NULL;
- struct ctf_field_type *ft = ctf_field_path_borrow_field_type(
+ bt_field_class *ir_fc = NULL;
+ struct ctf_field_class *fc = ctf_field_path_borrow_field_class(
field_path, tc, sc, ec);
- BT_ASSERT(ft);
+ BT_ASSERT(fc);
- if (ft->in_ir) {
- ir_ft = ft->ir_ft;
+ if (fc->in_ir) {
+ ir_fc = fc->ir_fc;
}
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_variant_to_ir(
- struct ctf_field_type_variant *ft,
+bt_field_class *ctf_field_class_variant_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_variant *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
int ret;
- struct bt_field_type *ir_ft = bt_field_type_variant_create();
+ bt_field_class *ir_fc = bt_field_class_variant_create(ir_tc);
uint64_t i;
- BT_ASSERT(ir_ft);
- ret = bt_field_type_variant_set_selector_field_type(ir_ft,
- borrow_ir_ft_from_field_path(&ft->tag_path, tc, sc, ec));
+ BT_ASSERT(ir_fc);
+ ret = bt_field_class_variant_set_selector_field_class(
+ ir_fc, borrow_ir_ft_from_field_path(&fc->tag_path, tc, sc, ec));
BT_ASSERT(ret == 0);
- for (i = 0; i < ft->options->len; i++) {
- struct ctf_named_field_type *named_ft =
- ctf_field_type_variant_borrow_option_by_index(ft, i);
- struct bt_field_type *option_ir_ft;
-
- BT_ASSERT(named_ft->ft->in_ir);
- option_ir_ft = ctf_field_type_to_ir(named_ft->ft, tc, sc, ec);
- BT_ASSERT(option_ir_ft);
- ret = bt_field_type_variant_append_option(ir_ft,
- named_ft->name->str, option_ir_ft);
+ for (i = 0; i < fc->options->len; i++) {
+ struct ctf_named_field_class *named_fc =
+ ctf_field_class_variant_borrow_option_by_index(fc, i);
+ bt_field_class *option_ir_fc;
+
+ BT_ASSERT(named_fc->fc->in_ir);
+ option_ir_fc = ctf_field_class_to_ir(ir_tc, named_fc->fc,
+ tc, sc, ec);
+ BT_ASSERT(option_ir_fc);
+ ret = bt_field_class_variant_append_option(
+ ir_fc, named_fc->name->str, option_ir_fc);
BT_ASSERT(ret == 0);
- bt_put(option_ir_ft);
+ bt_field_class_put_ref(option_ir_fc);
}
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_array_to_ir(
- struct ctf_field_type_array *ft,
+bt_field_class *ctf_field_class_array_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_array *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
- struct bt_field_type *ir_ft;
- struct bt_field_type *elem_ir_ft;
+ bt_field_class *ir_fc;
+ bt_field_class *elem_ir_fc;
- if (ft->base.is_text) {
- ir_ft = bt_field_type_string_create();
- BT_ASSERT(ir_ft);
+ if (fc->base.is_text) {
+ ir_fc = bt_field_class_string_create(ir_tc);
+ BT_ASSERT(ir_fc);
goto end;
}
- elem_ir_ft = ctf_field_type_to_ir(ft->base.elem_ft, tc, sc, ec);
- BT_ASSERT(elem_ir_ft);
- ir_ft = bt_field_type_static_array_create(elem_ir_ft, ft->length);
- BT_ASSERT(ir_ft);
- bt_put(elem_ir_ft);
+ elem_ir_fc = ctf_field_class_to_ir(ir_tc, fc->base.elem_fc, tc, sc, ec);
+ BT_ASSERT(elem_ir_fc);
+ ir_fc = bt_field_class_static_array_create(ir_tc, elem_ir_fc,
+ fc->length);
+ BT_ASSERT(ir_fc);
+ bt_field_class_put_ref(elem_ir_fc);
end:
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_sequence_to_ir(
- struct ctf_field_type_sequence *ft,
+bt_field_class *ctf_field_class_sequence_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class_sequence *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
int ret;
- struct bt_field_type *ir_ft;
- struct bt_field_type *elem_ir_ft;
+ bt_field_class *ir_fc;
+ bt_field_class *elem_ir_fc;
- if (ft->base.is_text) {
- ir_ft = bt_field_type_string_create();
- BT_ASSERT(ir_ft);
+ if (fc->base.is_text) {
+ ir_fc = bt_field_class_string_create(ir_tc);
+ BT_ASSERT(ir_fc);
goto end;
}
- elem_ir_ft = ctf_field_type_to_ir(ft->base.elem_ft, tc, sc, ec);
- BT_ASSERT(elem_ir_ft);
- ir_ft = bt_field_type_dynamic_array_create(elem_ir_ft);
- BT_ASSERT(ir_ft);
- bt_put(elem_ir_ft);
- BT_ASSERT(ir_ft);
- ret = bt_field_type_dynamic_array_set_length_field_type(ir_ft,
- borrow_ir_ft_from_field_path(&ft->length_path, tc, sc, ec));
+ elem_ir_fc = ctf_field_class_to_ir(ir_tc, fc->base.elem_fc, tc, sc, ec);
+ BT_ASSERT(elem_ir_fc);
+ ir_fc = bt_field_class_dynamic_array_create(ir_tc, elem_ir_fc);
+ BT_ASSERT(ir_fc);
+ bt_field_class_put_ref(elem_ir_fc);
+ BT_ASSERT(ir_fc);
+ ret = bt_field_class_dynamic_array_set_length_field_class(
+ ir_fc,
+ borrow_ir_ft_from_field_path(&fc->length_path, tc, sc, ec));
BT_ASSERT(ret == 0);
end:
- return ir_ft;
+ return ir_fc;
}
static inline
-struct bt_field_type *ctf_field_type_to_ir(struct ctf_field_type *ft,
+bt_field_class *ctf_field_class_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class *fc,
struct ctf_trace_class *tc,
struct ctf_stream_class *sc,
struct ctf_event_class *ec)
{
- struct bt_field_type *ir_ft = NULL;
+ bt_field_class *ir_fc = NULL;
- BT_ASSERT(ft);
- BT_ASSERT(ft->in_ir);
+ BT_ASSERT(fc);
+ BT_ASSERT(fc->in_ir);
- switch (ft->id) {
- case CTF_FIELD_TYPE_ID_INT:
- ir_ft = ctf_field_type_int_to_ir((void *) ft);
+ switch (fc->type) {
+ case CTF_FIELD_CLASS_TYPE_INT:
+ ir_fc = ctf_field_class_int_to_ir(ir_tc, (void *) fc);
break;
- case CTF_FIELD_TYPE_ID_ENUM:
- ir_ft = ctf_field_type_enum_to_ir((void *) ft);
+ case CTF_FIELD_CLASS_TYPE_ENUM:
+ ir_fc = ctf_field_class_enum_to_ir(ir_tc, (void *) fc);
break;
- case CTF_FIELD_TYPE_ID_FLOAT:
- ir_ft = ctf_field_type_float_to_ir((void *) ft);
+ case CTF_FIELD_CLASS_TYPE_FLOAT:
+ ir_fc = ctf_field_class_float_to_ir(ir_tc, (void *) fc);
break;
- case CTF_FIELD_TYPE_ID_STRING:
- ir_ft = ctf_field_type_string_to_ir((void *) ft);
+ case CTF_FIELD_CLASS_TYPE_STRING:
+ ir_fc = ctf_field_class_string_to_ir(ir_tc, (void *) fc);
break;
- case CTF_FIELD_TYPE_ID_STRUCT:
- ir_ft = ctf_field_type_struct_to_ir((void *) ft, tc, sc, ec);
+ case CTF_FIELD_CLASS_TYPE_STRUCT:
+ ir_fc = ctf_field_class_struct_to_ir(ir_tc, (void *) fc,
+ tc, sc, ec);
break;
- case CTF_FIELD_TYPE_ID_ARRAY:
- ir_ft = ctf_field_type_array_to_ir((void *) ft, tc, sc, ec);
+ case CTF_FIELD_CLASS_TYPE_ARRAY:
+ ir_fc = ctf_field_class_array_to_ir(ir_tc, (void *) fc,
+ tc, sc, ec);
break;
- case CTF_FIELD_TYPE_ID_SEQUENCE:
- ir_ft = ctf_field_type_sequence_to_ir((void *) ft, tc, sc, ec);
+ case CTF_FIELD_CLASS_TYPE_SEQUENCE:
+ ir_fc = ctf_field_class_sequence_to_ir(ir_tc, (void *) fc,
+ tc, sc, ec);
break;
- case CTF_FIELD_TYPE_ID_VARIANT:
- ir_ft = ctf_field_type_variant_to_ir((void *) ft, tc, sc, ec);
+ case CTF_FIELD_CLASS_TYPE_VARIANT:
+ ir_fc = ctf_field_class_variant_to_ir(ir_tc, (void *) fc,
+ tc, sc, ec);
break;
default:
abort();
}
- ft->ir_ft = ir_ft;
- return ir_ft;
+ fc->ir_fc = ir_fc;
+ return ir_fc;
}
static inline
-bool ctf_field_type_struct_has_immediate_member_in_ir(
- struct ctf_field_type_struct *ft)
+bool ctf_field_class_struct_has_immediate_member_in_ir(
+ struct ctf_field_class_struct *fc)
{
uint64_t i;
bool has_immediate_member_in_ir = false;
- for (i = 0; i < ft->members->len; i++) {
- struct ctf_named_field_type *named_ft =
- ctf_field_type_struct_borrow_member_by_index(ft, i);
+ for (i = 0; i < fc->members->len; i++) {
+ struct ctf_named_field_class *named_fc =
+ ctf_field_class_struct_borrow_member_by_index(fc, i);
- if (named_ft->ft->in_ir) {
+ if (named_fc->fc->in_ir) {
has_immediate_member_in_ir = true;
goto end;
}
}
static inline
-struct bt_field_type *scope_ctf_field_type_to_ir(struct ctf_field_type *ft,
- struct ctf_trace_class *tc,
- struct ctf_stream_class *sc,
- struct ctf_event_class *ec)
+bt_field_class *scope_ctf_field_class_to_ir(bt_trace_class *ir_tc,
+ struct ctf_field_class *fc,
+ struct ctf_trace_class *tc,
+ struct ctf_stream_class *sc,
+ struct ctf_event_class *ec)
{
- struct bt_field_type *ir_ft = NULL;
+ bt_field_class *ir_fc = NULL;
- if (!ft) {
+ if (!fc) {
goto end;
}
- BT_ASSERT(ft->id == CTF_FIELD_TYPE_ID_STRUCT);
+ BT_ASSERT(fc->type == CTF_FIELD_CLASS_TYPE_STRUCT);
- if (!ctf_field_type_struct_has_immediate_member_in_ir((void *) ft)) {
+ if (!ctf_field_class_struct_has_immediate_member_in_ir((void *) fc)) {
/*
* Nothing for IR in this scope: typical for packet
* header, packet context, and event header.
goto end;
}
- ir_ft = ctf_field_type_to_ir(ft, tc, sc, ec);
+ ir_fc = ctf_field_class_to_ir(ir_tc, fc, tc, sc, ec);
end:
- return ir_ft;
+ return ir_fc;
}
static inline
-struct ctf_field_type_int *borrow_named_int_field_type(
- struct ctf_field_type_struct *struct_ft, const char *name)
+struct ctf_field_class_int *borrow_named_int_field_class(
+ struct ctf_field_class_struct *struct_fc, const char *name)
{
- struct ctf_named_field_type *named_ft = NULL;
- struct ctf_field_type_int *int_ft = NULL;
+ struct ctf_named_field_class *named_fc = NULL;
+ struct ctf_field_class_int *int_fc = NULL;
- if (!struct_ft) {
+ if (!struct_fc) {
goto end;
}
- named_ft = ctf_field_type_struct_borrow_member_by_name(struct_ft, name);
- if (!named_ft) {
+ named_fc = ctf_field_class_struct_borrow_member_by_name(struct_fc, name);
+ if (!named_fc) {
goto end;
}
- if (named_ft->ft->id != CTF_FIELD_TYPE_ID_INT &&
- named_ft->ft->id != CTF_FIELD_TYPE_ID_ENUM) {
+ if (named_fc->fc->type != CTF_FIELD_CLASS_TYPE_INT &&
+ named_fc->fc->type != CTF_FIELD_CLASS_TYPE_ENUM) {
goto end;
}
- int_ft = (void *) named_ft->ft;
+ int_fc = (void *) named_fc->fc;
end:
- return int_ft;
+ return int_fc;
}
static inline
-struct bt_event_class *ctf_event_class_to_ir(struct ctf_event_class *ec,
- struct bt_stream_class *ir_sc, struct ctf_trace_class *tc,
+bt_event_class *ctf_event_class_to_ir(struct ctf_event_class *ec,
+ bt_stream_class *ir_sc, struct ctf_trace_class *tc,
struct ctf_stream_class *sc)
{
int ret;
- struct bt_event_class *ir_ec = NULL;
+ bt_event_class *ir_ec = NULL;
+ bt_trace_class *ir_tc = bt_stream_class_borrow_trace_class(ir_sc);
if (ec->is_translated) {
ir_ec = bt_stream_class_borrow_event_class_by_id(
ir_ec = bt_event_class_create_with_id(ir_sc, ec->id);
BT_ASSERT(ir_ec);
- bt_put(ir_ec);
+ bt_event_class_put_ref(ir_ec);
- if (ec->spec_context_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- ec->spec_context_ft, tc, sc, ec);
+ if (ec->spec_context_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ ec->spec_context_fc, tc, sc, ec);
- if (ir_ft) {
- ret = bt_event_class_set_specific_context_field_type(
- ir_ec, ir_ft);
+ if (ir_fc) {
+ ret = bt_event_class_set_specific_context_field_class(
+ ir_ec, ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
+ bt_field_class_put_ref(ir_fc);
}
}
- if (ec->payload_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- ec->payload_ft, tc, sc, ec);
+ if (ec->payload_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ ec->payload_fc, tc, sc, ec);
- if (ir_ft) {
- ret = bt_event_class_set_payload_field_type(ir_ec,
- ir_ft);
+ if (ir_fc) {
+ ret = bt_event_class_set_payload_field_class(ir_ec,
+ ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
+ bt_field_class_put_ref(ir_fc);
}
}
}
if (ec->log_level != -1) {
- ret = bt_event_class_set_log_level(ir_ec, ec->log_level);
- BT_ASSERT(ret == 0);
+ bt_event_class_set_log_level(ir_ec, ec->log_level);
}
ec->is_translated = true;
static inline
-struct bt_stream_class *ctf_stream_class_to_ir(struct ctf_stream_class *sc,
- struct bt_trace *ir_trace, struct ctf_trace_class *tc)
+bt_stream_class *ctf_stream_class_to_ir(struct ctf_stream_class *sc,
+ bt_trace_class *ir_tc, struct ctf_trace_class *tc)
{
int ret;
- struct bt_stream_class *ir_sc = NULL;
- struct ctf_field_type_int *int_ft;
+ bt_stream_class *ir_sc = NULL;
+ struct ctf_field_class_int *int_fc;
if (sc->is_translated) {
- ir_sc = bt_trace_borrow_stream_class_by_id(ir_trace, sc->id);
+ ir_sc = bt_trace_class_borrow_stream_class_by_id(ir_tc, sc->id);
BT_ASSERT(ir_sc);
goto end;
}
- ir_sc = bt_stream_class_create_with_id(ir_trace, sc->id);
+ ir_sc = bt_stream_class_create_with_id(ir_tc, sc->id);
BT_ASSERT(ir_sc);
- bt_put(ir_sc);
+ bt_stream_class_put_ref(ir_sc);
- if (sc->packet_context_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- sc->packet_context_ft, tc, sc, NULL);
+ if (sc->packet_context_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ sc->packet_context_fc, tc, sc, NULL);
- if (ir_ft) {
- ret = bt_stream_class_set_packet_context_field_type(
- ir_sc, ir_ft);
+ if (ir_fc) {
+ ret = bt_stream_class_set_packet_context_field_class(
+ ir_sc, ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
+ bt_field_class_put_ref(ir_fc);
}
}
- if (sc->event_header_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- sc->event_header_ft, tc, sc, NULL);
+ if (sc->event_header_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ sc->event_header_fc, tc, sc, NULL);
- if (ir_ft) {
- ret = bt_stream_class_set_event_header_field_type(ir_sc,
- ir_ft);
+ if (ir_fc) {
+ ret = bt_stream_class_set_event_header_field_class(
+ ir_sc, ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
+ bt_field_class_put_ref(ir_fc);
}
}
- if (sc->event_common_context_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- sc->event_common_context_ft, tc, sc, NULL);
+ if (sc->event_common_context_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ sc->event_common_context_fc, tc, sc, NULL);
- if (ir_ft) {
- ret = bt_stream_class_set_event_common_context_field_type(
- ir_sc, ir_ft);
+ if (ir_fc) {
+ ret = bt_stream_class_set_event_common_context_field_class(
+ ir_sc, ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
+ bt_field_class_put_ref(ir_fc);
}
}
- ret = bt_stream_class_set_assigns_automatic_event_class_id(ir_sc,
+ bt_stream_class_set_assigns_automatic_event_class_id(ir_sc,
BT_FALSE);
- BT_ASSERT(ret == 0);
- ret = bt_stream_class_set_assigns_automatic_stream_id(ir_sc, BT_FALSE);
- BT_ASSERT(ret == 0);
+ bt_stream_class_set_assigns_automatic_stream_id(ir_sc, BT_FALSE);
if (sc->default_clock_class) {
+ BT_ASSERT(sc->default_clock_class->ir_cc);
ret = bt_stream_class_set_default_clock_class(ir_sc,
- sc->default_clock_class);
+ sc->default_clock_class->ir_cc);
BT_ASSERT(ret == 0);
}
- int_ft = borrow_named_int_field_type((void *) sc->packet_context_ft,
+ int_fc = borrow_named_int_field_class((void *) sc->packet_context_fc,
"events_discarded");
- if (int_ft) {
- if (int_ft->meaning == CTF_FIELD_TYPE_MEANING_DISC_EV_REC_COUNTER_SNAPSHOT) {
- ret = bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
+ if (int_fc) {
+ if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_DISC_EV_REC_COUNTER_SNAPSHOT) {
+ bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
ir_sc, BT_TRUE);
- BT_ASSERT(ret == 0);
}
}
- int_ft = borrow_named_int_field_type((void *) sc->packet_context_ft,
+ int_fc = borrow_named_int_field_class((void *) sc->packet_context_fc,
"packet_seq_num");
- if (int_ft) {
- if (int_ft->meaning == CTF_FIELD_TYPE_MEANING_PACKET_COUNTER_SNAPSHOT) {
- ret = bt_stream_class_set_packets_have_packet_counter_snapshot(
+ if (int_fc) {
+ if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_COUNTER_SNAPSHOT) {
+ bt_stream_class_set_packets_have_packet_counter_snapshot(
ir_sc, BT_TRUE);
- BT_ASSERT(ret == 0);
}
}
- int_ft = borrow_named_int_field_type((void *) sc->packet_context_ft,
+ int_fc = borrow_named_int_field_class((void *) sc->packet_context_fc,
"timestamp_begin");
- if (int_ft) {
- if (int_ft->meaning == CTF_FIELD_TYPE_MEANING_PACKET_BEGINNING_TIME) {
- ret = bt_stream_class_set_packets_have_default_beginning_clock_value(
+ if (int_fc) {
+ if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_BEGINNING_TIME) {
+ bt_stream_class_set_packets_have_default_beginning_clock_snapshot(
ir_sc, BT_TRUE);
- BT_ASSERT(ret == 0);
}
}
- int_ft = borrow_named_int_field_type((void *) sc->packet_context_ft,
+ int_fc = borrow_named_int_field_class((void *) sc->packet_context_fc,
"timestamp_end");
- if (int_ft) {
- if (int_ft->meaning == CTF_FIELD_TYPE_MEANING_PACKET_END_TIME) {
- ret = bt_stream_class_set_packets_have_default_end_clock_value(
+ if (int_fc) {
+ if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_END_TIME) {
+ bt_stream_class_set_packets_have_default_end_clock_snapshot(
ir_sc, BT_TRUE);
- BT_ASSERT(ret == 0);
}
}
}
static inline
-int ctf_trace_class_to_ir(struct bt_trace *ir_trace,
- struct ctf_trace_class *tc)
+void ctf_clock_class_to_ir(bt_clock_class *ir_cc, struct ctf_clock_class *cc)
+{
+ int ret;
+
+ if (strlen(cc->name->str) > 0) {
+ ret = bt_clock_class_set_name(ir_cc, cc->name->str);
+ BT_ASSERT(ret == 0);
+ }
+
+ if (strlen(cc->description->str) > 0) {
+ ret = bt_clock_class_set_description(ir_cc, cc->description->str);
+ BT_ASSERT(ret == 0);
+ }
+
+ bt_clock_class_set_frequency(ir_cc, cc->frequency);
+ bt_clock_class_set_precision(ir_cc, cc->precision);
+ bt_clock_class_set_offset(ir_cc, cc->offset_seconds, cc->offset_cycles);
+
+ if (cc->has_uuid) {
+ bt_clock_class_set_uuid(ir_cc, cc->uuid);
+ }
+
+ bt_clock_class_set_is_absolute(ir_cc, cc->is_absolute);
+}
+
+static inline
+int ctf_trace_class_to_ir(bt_trace_class *ir_tc, struct ctf_trace_class *tc)
{
int ret = 0;
uint64_t i;
goto end;
}
- if (tc->packet_header_ft) {
- struct bt_field_type *ir_ft = scope_ctf_field_type_to_ir(
- tc->packet_header_ft, tc, NULL, NULL);
+ if (tc->packet_header_fc) {
+ bt_field_class *ir_fc = scope_ctf_field_class_to_ir(ir_tc,
+ tc->packet_header_fc, tc, NULL, NULL);
- if (ir_ft) {
- ret = bt_trace_set_packet_header_field_type(ir_trace,
- ir_ft);
+ if (ir_fc) {
+ ret = bt_trace_class_set_packet_header_field_class(
+ ir_tc, ir_fc);
BT_ASSERT(ret == 0);
- bt_put(ir_ft);
- }
- }
-
- if (tc->name->len > 0) {
- ret = bt_trace_set_name(ir_trace, tc->name->str);
- if (ret) {
- goto end;
+ bt_field_class_put_ref(ir_fc);
}
}
if (tc->is_uuid_set) {
- ret = bt_trace_set_uuid(ir_trace, tc->uuid);
- if (ret) {
- goto end;
- }
+ bt_trace_class_set_uuid(ir_tc, tc->uuid);
}
for (i = 0; i < tc->env_entries->len; i++) {
switch (env_entry->type) {
case CTF_TRACE_CLASS_ENV_ENTRY_TYPE_INT:
- ret = bt_trace_set_environment_entry_integer(
- ir_trace, env_entry->name->str,
+ ret = bt_trace_class_set_environment_entry_integer(
+ ir_tc, env_entry->name->str,
env_entry->value.i);
break;
case CTF_TRACE_CLASS_ENV_ENTRY_TYPE_STR:
- ret = bt_trace_set_environment_entry_string(
- ir_trace, env_entry->name->str,
+ ret = bt_trace_class_set_environment_entry_string(
+ ir_tc, env_entry->name->str,
env_entry->value.str->str);
break;
default:
}
}
- ret = bt_trace_set_assigns_automatic_stream_class_id(ir_trace,
- BT_FALSE);
- if (ret) {
- goto end;
+ for (i = 0; i < tc->clock_classes->len; i++) {
+ struct ctf_clock_class *cc = tc->clock_classes->pdata[i];
+
+ cc->ir_cc = bt_clock_class_create(ir_tc);
+ ctf_clock_class_to_ir(cc->ir_cc, cc);
}
+ bt_trace_class_set_assigns_automatic_stream_class_id(ir_tc,
+ BT_FALSE);
tc->is_translated = true;
- tc->ir_tc = ir_trace;
+ tc->ir_tc = ir_tc;
end:
return ret;
}
BT_HIDDEN
-int ctf_trace_class_translate(struct bt_trace *ir_trace,
+int ctf_trace_class_translate(bt_trace_class *ir_tc,
struct ctf_trace_class *tc)
{
int ret = 0;
uint64_t i;
- ret = ctf_trace_class_to_ir(ir_trace, tc);
+ ret = ctf_trace_class_to_ir(ir_tc, tc);
if (ret) {
goto end;
}
for (i = 0; i < tc->stream_classes->len; i++) {
uint64_t j;
struct ctf_stream_class *sc = tc->stream_classes->pdata[i];
- struct bt_stream_class *ir_sc;
+ bt_stream_class *ir_sc;
- ir_sc = ctf_stream_class_to_ir(sc, ir_trace, tc);
+ ir_sc = ctf_stream_class_to_ir(sc, ir_tc, tc);
if (!ir_sc) {
ret = -1;
goto end;
for (j = 0; j < sc->event_classes->len; j++) {
struct ctf_event_class *ec = sc->event_classes->pdata[j];
- struct bt_event_class *ir_ec;
+ bt_event_class *ir_ec;
ir_ec = ctf_event_class_to_ir(ec, ir_sc, tc, sc);
if (!ir_ec) {