ir: add bt_ctf_event_set_payload_field()
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 28 Apr 2015 19:35:07 +0000 (15:35 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 28 Apr 2015 19:35:35 +0000 (15:35 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
formats/ctf/ir/event.c
include/babeltrace/ctf-ir/event.h

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)
 {
index 2f1ca8c842bf6b9e623459c2adc6d49a34bbe399..09ada907f8673ef19bb9080594030e1921f86de2 100644 (file)
@@ -377,6 +377,17 @@ extern struct bt_ctf_clock *bt_ctf_event_get_clock(
 extern struct bt_ctf_field *bt_ctf_event_get_payload_field(
                struct bt_ctf_event *event);
 
+/*
+ * bt_ctf_event_set_payload_field: set an event's payload.
+ *
+ * @param event Event instance.
+ * @param payload Field instance (must be a structure).
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_ctf_event_set_payload_field(struct bt_ctf_event *event,
+               struct bt_ctf_field *payload);
+
 /*
  * bt_ctf_event_get_payload: get an event's field.
  *
This page took 0.025294 seconds and 4 git commands to generate.