ir: add bt_ctf_event_set_payload_field()
[babeltrace.git] / formats / ctf / ir / event.c
index d5c66c4d87de50bdd13302c07228413993734b03..7b8844beafb74e7dc00ec16cccdd3f865047c863 100644 (file)
@@ -718,6 +718,41 @@ end:
        return payload;
 }
 
+int bt_ctf_event_set_payload_field(struct bt_ctf_event *event,
+               struct bt_ctf_field *payload)
+{
+       int ret = 0;
+       struct bt_ctf_field_type *payload_type = NULL;
+
+       if (!event || !payload) {
+               ret = -1;
+               goto end;
+       }
+
+       payload_type = bt_ctf_field_get_type(payload);
+       if (!payload_type) {
+               ret = -1;
+               goto end;
+       }
+
+       if (bt_ctf_field_type_get_type_id(payload_type) != CTF_TYPE_STRUCT) {
+               ret = -1;
+               goto end;
+       }
+
+       bt_ctf_field_get(payload);
+       if (event->fields_payload) {
+               bt_ctf_field_put(event->fields_payload);
+       }
+       event->fields_payload = payload;
+
+end:
+       if (payload_type) {
+               bt_ctf_field_type_put(payload_type);
+       }
+       return ret;
+}
+
 struct bt_ctf_field *bt_ctf_event_get_payload(struct bt_ctf_event *event,
                const char *name)
 {
This page took 0.024644 seconds and 4 git commands to generate.