X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Fevent.h;h=7daab39578c24882dc18c868251d93b6faa01372;hp=26996c0d0f0a59b44300ae6b68efeeec8992fe42;hb=2f100782231d86cdaaadf7a8568c5b28583800f4;hpb=c13c7ca07e124477b059a69d75835afe98d4e634 diff --git a/include/babeltrace/ctf-ir/event.h b/include/babeltrace/ctf-ir/event.h index 26996c0d..7daab395 100644 --- a/include/babeltrace/ctf-ir/event.h +++ b/include/babeltrace/ctf-ir/event.h @@ -30,6 +30,9 @@ * http://www.efficios.com/ctf */ +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -38,12 +41,14 @@ struct bt_ctf_event_class; struct bt_ctf_event; struct bt_ctf_field; struct bt_ctf_field_type; +struct bt_ctf_stream_class; /* * bt_ctf_event_class_create: create an event class. * * Allocate a new event class of the given name. The creation of an event class - * sets its reference count to 1. + * sets its reference count to 1. A unique event id is automatically assigned + * to the event class. * * @param name Event class name (will be copied). * @@ -51,6 +56,52 @@ struct bt_ctf_field_type; */ extern struct bt_ctf_event_class *bt_ctf_event_class_create(const char *name); +/* + * bt_ctf_event_class_get_name: Get an event class' name. + * + * @param event_class Event class. + * + * Returns the event class' name, NULL on error. + */ +extern const char *bt_ctf_event_class_get_name( + struct bt_ctf_event_class *event_class); + +/* + * bt_ctf_event_class_get_id: Get an event class' id. + * + * @param event_class Event class. + * + * Returns the event class' id, a negative value on error. + */ +extern int64_t bt_ctf_event_class_get_id( + struct bt_ctf_event_class *event_class); + +/* + * bt_ctf_event_class_set_id: Set an event class' id. + * + * Set an event class' id. Must be unique stream-wise. + * Note that event classes are already assigned a unique id when added to a + * stream class if none was set explicitly. + * + * @param event_class Event class. + * @param id Event class id. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_event_class_set_id( + struct bt_ctf_event_class *event_class, uint32_t id); + +/* + * bt_ctf_event_class_get_stream_class: Get an event class' stream class. + * + * @param event_class Event class. + * + * Returns the event class' stream class, NULL on error or if the event class + * is not associated with a stream class. + */ +extern struct bt_ctf_stream_class *bt_ctf_event_class_get_stream_class( + struct bt_ctf_event_class *event_class); + /* * bt_ctf_event_class_add_field: add a field to an event class. * @@ -68,6 +119,43 @@ extern int bt_ctf_event_class_add_field(struct bt_ctf_event_class *event_class, struct bt_ctf_field_type *type, const char *name); +/* + * bt_ctf_event_class_get_field_count: Get an event class' field count. + * + * @param event_class Event class. + * + * Returns the event class' field count, a negative value on error. + */ +extern int64_t bt_ctf_event_class_get_field_count( + struct bt_ctf_event_class *event_class); + +/* + * bt_ctf_event_class_get_field: Get event class' field type and name by index. + * + * @param event_class Event class. + * @param field_name Pointer to a const char* where the field's name will + * be returned. + * @param field_type Pointer to a bt_ctf_field_type* where the field's type will + * be returned. + * @param index Index of field. + * + * Returns 0 on success, a negative error on value. + */ +extern int bt_ctf_event_class_get_field(struct bt_ctf_event_class *event_class, + const char **field_name, struct bt_ctf_field_type **field_type, + size_t index); + +/* + * bt_ctf_event_class_get_field_type_by_name: Get an event class's field by name + * + * @param event_class Event class. + * @param name Name of the field. + * + * Returns a field type on success, NULL on error. + */ +extern struct bt_ctf_field_type *bt_ctf_event_class_get_field_by_name( + struct bt_ctf_event_class *event_class, const char *name); + /* * bt_ctf_event_class__get and bt_ctf_event_class_put: increment and decrement * the event class' reference count. @@ -99,6 +187,40 @@ extern void bt_ctf_event_class_put(struct bt_ctf_event_class *event_class); extern struct bt_ctf_event *bt_ctf_event_create( struct bt_ctf_event_class *event_class); +/* + * bt_ctf_event_get_class: get an event's class. + * + * @param event Event. + * + * Returns the event's class, NULL on error. + */ +extern struct bt_ctf_event_class *bt_ctf_event_get_class( + struct bt_ctf_event *event); + +/* + * bt_ctf_event_get_clock: get an event's associated clock. + * + * @param event Event. + * + * Returns the event's clock, NULL on error. + */ +extern struct bt_ctf_clock *bt_ctf_event_get_clock( + struct bt_ctf_event *event); + +/* + * bt_ctf_event_get_payload: get an event's field. + * + * Returns the field matching "name". bt_ctf_field_put() must be called on the + * returned value. + * + * @param event Event instance. + * @param name Event field name. + * + * Returns a field instance on success, NULL on error. + */ +extern struct bt_ctf_field *bt_ctf_event_get_payload(struct bt_ctf_event *event, + const char *name); + /* * bt_ctf_event_set_payload: set an event's field. * @@ -117,18 +239,19 @@ extern int bt_ctf_event_set_payload(struct bt_ctf_event *event, struct bt_ctf_field *value); /* - * bt_ctf_event_get_payload: get an event's field. + * bt_ctf_event_get_payload_by_index: Get event's field by index. * - * Returns the field matching "name". bt_ctf_field_put() must be called on the - * returned value. + * Returns the field associated with the provided index. bt_ctf_field_put() + * must be called on the returned value. The indexes to be provided are + * the same as can be retrieved from the event class. * - * @param event Event instance. - * @param name Event field name. + * @param event Event. + * @param index Index of field. * - * Returns a field instance on success, NULL on error. + * Returns the event's field, NULL on error. */ -extern struct bt_ctf_field *bt_ctf_event_get_payload(struct bt_ctf_event *event, - const char *name); +extern struct bt_ctf_field *bt_ctf_event_get_payload_by_index( + struct bt_ctf_event *event, size_t index); /* * bt_ctf_event_get and bt_ctf_event_put: increment and decrement