ir: add bt_ctf_event_set_payload_field()
[babeltrace.git] / include / babeltrace / ctf-ir / event.h
index 102883d63066366befcd66815dfb33f7b3b6fc65..09ada907f8673ef19bb9080594030e1921f86de2 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <stdint.h>
 #include <stddef.h>
+#include <babeltrace/objects.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -91,6 +92,96 @@ extern int64_t bt_ctf_event_class_get_id(
 extern int bt_ctf_event_class_set_id(
                struct bt_ctf_event_class *event_class, uint32_t id);
 
+/*
+ * bt_ctf_event_class_set_attribute: sets an attribute to the event
+ *     class.
+ *
+ * Sets an attribute to the event class. The name parameter is copied,
+ * whereas the value parameter's reference count is incremented
+ * (if the function succeeds).
+ *
+ * If an attribute exists in the event class for the specified name, it
+ * is replaced by the new value.
+ *
+ * Valid attributes and object types are:
+ *
+ *   - "id":            integer object with a value >= 0
+ *   - "name":          string object
+ *   - "loglevel":      integer object with a value >= 0
+ *   - "model.emf.uri": string object
+ *
+ * @param event_class Event class.
+ * @param name Name of the attribute (will be copied).
+ * @param value Value of the attribute.
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_ctf_event_class_set_attribute(
+               struct bt_ctf_event_class *event_class, const char *name,
+               struct bt_object *value);
+
+/*
+ * bt_ctf_event_class_get_attribute_count: get the number of attributes
+ *     in this event class.
+ *
+ * Get the event class' attribute count.
+ *
+ * @param event_class Event class.
+ *
+ * Returns the attribute count, a negative value on error.
+ */
+extern int bt_ctf_event_class_get_attribute_count(
+               struct bt_ctf_event_class *event_class);
+
+/*
+ * bt_ctf_event_class_get_attribute_name: get attribute name.
+ *
+ * Get an attribute's name. The string's ownership is not
+ * transferred to the caller. The string data is valid as long as
+ * this event class' attributes are not modified.
+ *
+ * @param event_class Event class.
+ * @param index Index of the attribute.
+ *
+ * Returns the attribute's name, NULL on error.
+ */
+extern const char *
+bt_ctf_event_class_get_attribute_name(
+               struct bt_ctf_event_class *event_class, int index);
+
+/*
+ * bt_ctf_event_class_get_attribute_value: get attribute value (an object).
+ *
+ * Get an attribute's value (an object). The returned object's
+ * reference count is incremented. When done with the object, the caller
+ * must call bt_object_put() on it.
+ *
+ * @param event_class Event class.
+ * @param index Index of the attribute.
+ *
+ * Returns the attribute's object value, NULL on error.
+ */
+extern struct bt_object *
+bt_ctf_event_class_get_attribute_value(struct bt_ctf_event_class *event_class,
+               int index);
+
+/*
+ * bt_ctf_event_class_get_attribute_value_by_name: get attribute
+ *     value (an object) by name.
+ *
+ * Get an attribute's value (an object) by its name. The returned object's
+ * reference count is incremented. When done with the object, the caller
+ * must call bt_object_put() on it.
+ *
+ * @param event_class Event class.
+ * @param name Attribute's name
+ *
+ * Returns the attribute's object value, NULL on error.
+ */
+extern struct bt_object *
+bt_ctf_event_class_get_attribute_value_by_name(
+               struct bt_ctf_event_class *event_class, const char *name);
+
 /*
  * bt_ctf_event_class_get_stream_class: Get an event class' stream class.
  *
@@ -256,6 +347,16 @@ extern struct bt_ctf_event *bt_ctf_event_create(
 extern struct bt_ctf_event_class *bt_ctf_event_get_class(
                struct bt_ctf_event *event);
 
+/*
+ * bt_ctf_event_get_stream: get an event's associated stream.
+ *
+ * @param event Event.
+ *
+ * Returns the event's associated stream, NULL on error.
+ */
+extern struct bt_ctf_stream *bt_ctf_event_get_stream(
+               struct bt_ctf_event *event);
+
 /*
  * bt_ctf_event_get_clock: get an event's associated clock.
  *
@@ -266,6 +367,27 @@ extern struct bt_ctf_event_class *bt_ctf_event_get_class(
 extern struct bt_ctf_clock *bt_ctf_event_get_clock(
                struct bt_ctf_event *event);
 
+/*
+ * bt_ctf_event_get_payload_field: get an event's payload.
+ *
+ * @param event Event instance.
+ *
+ * Returns a field instance on success, NULL on error.
+ */
+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.
  *
@@ -373,6 +495,19 @@ extern struct bt_ctf_field *bt_ctf_event_get_event_context(
 extern int bt_ctf_event_set_event_context(struct bt_ctf_event *event,
                struct bt_ctf_field *context);
 
+/*
+ * bt_ctf_event_copy: Deep-copy an event.
+ *
+ * Get an event's deep copy.
+ *
+ * On success, the returned copy has its reference count set to 1.
+ *
+ * @param event Event to copy.
+ *
+ * Returns the deep-copied event on success, NULL on error.
+ */
+extern struct bt_ctf_event *bt_ctf_event_copy(struct bt_ctf_event *event);
+
 /*
  * bt_ctf_event_get and bt_ctf_event_put: increment and decrement
  * the event's reference count.
This page took 0.025849 seconds and 4 git commands to generate.