ir: add bt_ctf_field_variant_get_current_field()
[babeltrace.git] / formats / ctf / ir / event-fields.c
index 29c5397f7d2fe9406afbc3c90c6d567ca5c46eef..00c38c1f72a2a8236b89cf27cd8d6dd916c1fe04 100644 (file)
@@ -652,6 +652,31 @@ end:
        return new_field;
 }
 
+struct bt_ctf_field *bt_ctf_field_variant_get_current_field(
+               struct bt_ctf_field *variant_field)
+{
+       struct bt_ctf_field *current_field = NULL;
+       struct bt_ctf_field_variant *variant;
+
+       if (!variant_field ||
+               bt_ctf_field_type_get_type_id(variant_field->type) !=
+                       CTF_TYPE_VARIANT) {
+               goto end;
+       }
+
+       variant = container_of(variant_field, struct bt_ctf_field_variant,
+               parent);
+
+       if (variant->payload) {
+               current_field = variant->payload;
+               bt_ctf_field_get(current_field);
+               goto end;
+       }
+
+end:
+       return current_field;
+}
+
 struct bt_ctf_field *bt_ctf_field_enumeration_get_container(
        struct bt_ctf_field *field)
 {
This page took 0.0236 seconds and 4 git commands to generate.