X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=include%2Fbabeltrace%2Fctf-ir%2Fstream-class.h;h=225ea45079a28c4d023194975ea9acc39adb56db;hb=312c056ae3d374b253fa0cfe5ed576c0b0e5e569;hp=63d7e7d02dd3b9cda6ecf38aa493de94b21e23d2;hpb=a9f0d01b276e2bb637ad4bea1e8863e144911f55;p=babeltrace.git diff --git a/include/babeltrace/ctf-ir/stream-class.h b/include/babeltrace/ctf-ir/stream-class.h index 63d7e7d0..225ea450 100644 --- a/include/babeltrace/ctf-ir/stream-class.h +++ b/include/babeltrace/ctf-ir/stream-class.h @@ -31,6 +31,11 @@ */ #include + +/* For bt_get() */ +#include + +/* For bt_visitor */ #include #ifdef __cplusplus @@ -65,9 +70,9 @@ contains zero or more stream classes, and a stream class contains zero or more \link ctfireventclass event classes\endlink. You can add an event class -to a stream class with bt_ctf_stream_class_add_event_class(). +to a stream class with bt_stream_class_add_event_class(). You can add a stream class to a trace class with -bt_ctf_trace_add_stream_class(). +bt_trace_add_stream_class(). A stream class owns three \link ctfirfieldtypes field types\endlink: @@ -90,8 +95,8 @@ As a reminder, here's the structure of a CTF packet: @imgpacketstructure Before you can create a stream from a stream class with -bt_ctf_stream_create(), you \em must add the prepared stream class to a -trace class by calling bt_ctf_trace_add_stream_class(). +bt_stream_create(), you \em must add the prepared stream class to a +trace class by calling bt_trace_add_stream_class(). As with any Babeltrace object, CTF IR stream class objects have reference @@ -101,16 +106,19 @@ management of Babeltrace objects. The following functions \em freeze their stream class parameter on success: -- bt_ctf_trace_add_stream_class() -- bt_ctf_event_create() -- bt_ctf_writer_create_stream() +- bt_trace_add_stream_class() +- bt_event_create() +- bt_writer_create_stream() (\link ctfwriter CTF writer\endlink mode only) You cannot modify a frozen stream class: it is considered immutable, except for: - Adding an event class to it with - bt_ctf_stream_class_add_event_class(). + bt_stream_class_add_event_class(). If the stream class's parent + \link ctfirtraceclass trace class\endlink is static, however, + you cannot call bt_stream_class_add_event_class() + (see bt_trace_is_static() and bt_trace_set_is_static()). - \link refs Reference counting\endlink. @sa ctfirstream @@ -127,13 +135,15 @@ except for: */ /** -@struct bt_ctf_stream_class +@struct bt_stream_class @brief A CTF IR stream class. @sa ctfirstreamclass */ -struct bt_ctf_stream_class; -struct bt_ctf_event_class; -struct bt_ctf_clock; +struct bt_stream_class; +struct bt_event_class; +struct bt_clock; +struct bt_event_header_field; +struct bt_packet_context_field; /** @name Creation and parent access functions @@ -160,16 +170,21 @@ has the following fields: - timestamp: a 64-bit unsigned integer field type. You can modify those default field types after the stream class is -created with bt_ctf_stream_class_set_packet_context_type() and -bt_ctf_stream_class_set_event_header_type(). +created with bt_stream_class_set_packet_context_field_type() and +bt_stream_class_set_event_header_field_type(). -@param[in] name Name of the stream class to create (can be \c NULL to - create an unnamed stream class). -@returns Created stream class, or \c NULL on error. +@param[in] name Name of the stream class to create (copied on success), + or \c NULL to create an unnamed stream class. +@returns Created default stream class, or \c NULL on error. @postsuccessrefcountret1 + +@sa bt_stream_class_create_empty(): Creates an empty stream class. */ -extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name); +extern struct bt_stream_class *bt_stream_class_create(const char *name); + +extern struct bt_trace *bt_stream_class_borrow_trace( + struct bt_stream_class *stream_class); /** @brief Returns the parent CTF IR trace class of the CTF IR stream @@ -178,7 +193,7 @@ extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name); It is possible that the stream class was not added to a trace class yet, in which case this function returns \c NULL. You can add a stream class to a trace class with -bt_ctf_trace_add_stream_class(). +bt_trace_add_stream_class(). @param[in] stream_class Stream class of which to get the parent trace class. @@ -190,11 +205,15 @@ bt_ctf_trace_add_stream_class(). @postrefcountsame{stream_class} @postsuccessrefcountretinc -@sa bt_ctf_trace_add_stream_class(): Add a stream class to +@sa bt_trace_add_stream_class(): Add a stream class to a trace class. */ -extern struct bt_ctf_trace *bt_ctf_stream_class_get_trace( - struct bt_ctf_stream_class *stream_class); +static inline +struct bt_trace *bt_stream_class_get_trace( + struct bt_stream_class *stream_class) +{ + return bt_get(bt_stream_class_borrow_trace(stream_class)); +} /** @} */ @@ -217,33 +236,36 @@ string. @prenotnull{stream_class} @postrefcountsame{stream_class} -@sa bt_ctf_stream_class_set_name(): Sets the name of a given +@sa bt_stream_class_set_name(): Sets the name of a given stream class. */ -extern const char *bt_ctf_stream_class_get_name( - struct bt_ctf_stream_class *stream_class); +extern const char *bt_stream_class_get_name( + struct bt_stream_class *stream_class); /** @brief Sets the name of the CTF IR stream class - \p stream_class to \p name. + \p stream_class to \p name, or resets the name of + \p stream_class. -\p name must be unique amongst the names of all the stream classes -of the trace class to which you eventually add \p stream_class. +If \p name is not \c NULL, it must be unique amongst the names of all +the stream classes of the trace class to which you eventually add +\p stream_class. @param[in] stream_class Stream class of which to set the name. -@param[in] name Name of the stream class (copied on success). +@param[in] name Name of the stream class (copied on success), or + \c NULL to reset the name of \p stream_class + (make it unnamed). @returns 0 on success, or a negative value on error. @prenotnull{stream_class} -@prenotnull{name} @prehot{stream_class} @postrefcountsame{stream_class} -@sa bt_ctf_stream_class_get_name(): Returns the name of a given +@sa bt_stream_class_get_name(): Returns the name of a given stream class. */ -extern int bt_ctf_stream_class_set_name( - struct bt_ctf_stream_class *stream_class, const char *name); +extern int bt_stream_class_set_name( + struct bt_stream_class *stream_class, const char *name); /** @brief Returns the numeric ID of the CTF IR stream class \p stream_class. @@ -255,11 +277,11 @@ extern int bt_ctf_stream_class_set_name( @prenotnull{stream_class} @postrefcountsame{stream_class} -@sa bt_ctf_stream_class_set_id(): Sets the numeric ID of a given +@sa bt_stream_class_set_id(): Sets the numeric ID of a given stream class. */ -extern int64_t bt_ctf_stream_class_get_id( - struct bt_ctf_stream_class *stream_class); +extern int64_t bt_stream_class_get_id( + struct bt_stream_class *stream_class); /** @brief Sets the numeric ID of the CTF IR stream class @@ -277,11 +299,11 @@ of the trace class to which you eventually add \p stream_class. @pre \p id is lesser than or equal to 9223372036854775807 (\c INT64_MAX). @postrefcountsame{stream_class} -@sa bt_ctf_stream_class_get_id(): Returns the numeric ID of a given +@sa bt_stream_class_get_id(): Returns the numeric ID of a given stream class. */ -extern int bt_ctf_stream_class_set_id( - struct bt_ctf_stream_class *stream_class, uint64_t id); +extern int bt_stream_class_set_id( + struct bt_stream_class *stream_class, uint64_t id); /** @} */ @@ -290,6 +312,9 @@ extern int bt_ctf_stream_class_set_id( @{ */ +extern struct bt_field_type *bt_stream_class_borrow_packet_context_field_type( + struct bt_stream_class *stream_class); + /** @brief Returns the packet context field type of the CTF IR stream class \p stream_class. @@ -305,11 +330,20 @@ extern int bt_ctf_stream_class_set_id( @post On success, if the return value is a field type, its reference count is incremented. -@sa bt_ctf_stream_class_set_packet_context_type(): Sets the packet +@sa bt_stream_class_set_packet_context_field_type(): Sets the packet context field type of a given stream class. */ -extern struct bt_ctf_field_type *bt_ctf_stream_class_get_packet_context_type( - struct bt_ctf_stream_class *stream_class); +static inline +struct bt_field_type *bt_stream_class_get_packet_context_field_type( + struct bt_stream_class *stream_class) +{ + return bt_get(bt_stream_class_borrow_packet_context_field_type( + stream_class)); +} + +extern +struct bt_packet_context_field *bt_stream_class_create_packet_context_field( + struct bt_stream_class *stream_class); /** @brief Sets the packet context field type of the CTF IR stream class @@ -337,12 +371,16 @@ As of Babeltrace \btversion, if \p packet_context_type is not \c NULL, @post On success, if \p packet_context_type is not \c NULL, the reference count of \p packet_context_type is incremented. -@sa bt_ctf_stream_class_get_packet_context_type(): Returns the packet +@sa bt_stream_class_get_packet_context_field_type(): Returns the packet context field type of a given stream class. */ -extern int bt_ctf_stream_class_set_packet_context_type( - struct bt_ctf_stream_class *stream_class, - struct bt_ctf_field_type *packet_context_type); +extern int bt_stream_class_set_packet_context_field_type( + struct bt_stream_class *stream_class, + struct bt_field_type *packet_context_type); + +extern struct bt_field_type * +bt_stream_class_borrow_event_header_field_type( + struct bt_stream_class *stream_class); /** @brief Returns the event header field type of the CTF IR stream class @@ -359,12 +397,16 @@ extern int bt_ctf_stream_class_set_packet_context_type( @post On success, if the return value is a field type, its reference count is incremented. -@sa bt_ctf_stream_class_set_event_header_type(): Sets the event +@sa bt_stream_class_set_event_header_field_type(): Sets the event header field type of a given stream class. */ -extern struct bt_ctf_field_type * -bt_ctf_stream_class_get_event_header_type( - struct bt_ctf_stream_class *stream_class); +static inline +struct bt_field_type *bt_stream_class_get_event_header_field_type( + struct bt_stream_class *stream_class) +{ + return bt_get(bt_stream_class_borrow_event_header_field_type( + stream_class)); +} /** @brief Sets the event header field type of the CTF IR stream class @@ -392,12 +434,19 @@ As of Babeltrace \btversion, if \p event_header_type is not \c NULL, @post On success, if \p event_header_type is not \c NULL, the reference count of \p event_header_type is incremented. -@sa bt_ctf_stream_class_get_event_header_type(): Returns the event +@sa bt_stream_class_get_event_header_field_type(): Returns the event header field type of a given stream class. */ -extern int bt_ctf_stream_class_set_event_header_type( - struct bt_ctf_stream_class *stream_class, - struct bt_ctf_field_type *event_header_type); +extern int bt_stream_class_set_event_header_field_type( + struct bt_stream_class *stream_class, + struct bt_field_type *event_header_type); + +extern struct bt_event_header_field *bt_stream_class_create_event_header_field( + struct bt_stream_class *stream_class); + +extern struct bt_field_type * +bt_stream_class_borrow_event_context_field_type( + struct bt_stream_class *stream_class); /** @brief Returns the event context field type of the CTF IR stream class @@ -415,12 +464,17 @@ extern int bt_ctf_stream_class_set_event_header_type( its reference count is incremented. -@sa bt_ctf_stream_class_set_event_context_type(): Sets the event +@sa bt_stream_class_set_event_context_field_type(): Sets the event context field type of a given stream class. */ -extern struct bt_ctf_field_type * -bt_ctf_stream_class_get_event_context_type( - struct bt_ctf_stream_class *stream_class); +static inline +struct bt_field_type * +bt_stream_class_get_event_context_field_type( + struct bt_stream_class *stream_class) +{ + return bt_get(bt_stream_class_borrow_event_context_field_type( + stream_class)); +} /** @brief Sets the event context field type of the CTF IR stream class @@ -448,12 +502,12 @@ As of Babeltrace \btversion, if \p event_context_type is not \c NULL, @post On success, if \p event_context_type is not \c NULL, the reference count of \p event_context_type is incremented. -@sa bt_ctf_stream_class_get_event_context_type(): Returns the event context +@sa bt_stream_class_get_event_context_field_type(): Returns the event context field type of a given stream class. */ -extern int bt_ctf_stream_class_set_event_context_type( - struct bt_ctf_stream_class *stream_class, - struct bt_ctf_field_type *event_context_type); +extern int bt_stream_class_set_event_context_field_type( + struct bt_stream_class *stream_class, + struct bt_field_type *event_context_type); /** @} */ @@ -475,8 +529,11 @@ extern int bt_ctf_stream_class_set_event_context_type( @prenotnull{stream_class} @postrefcountsame{stream_class} */ -extern int64_t bt_ctf_stream_class_get_event_class_count( - struct bt_ctf_stream_class *stream_class); +extern int64_t bt_stream_class_get_event_class_count( + struct bt_stream_class *stream_class); + +extern struct bt_event_class *bt_stream_class_borrow_event_class_by_index( + struct bt_stream_class *stream_class, uint64_t index); /** @brief Returns the event class at index \p index in the CTF IR stream @@ -490,15 +547,23 @@ extern int64_t bt_ctf_stream_class_get_event_class_count( @prenotnull{stream_class} @pre \p index is lesser than the number of event classes contained in the stream class \p stream_class (see - bt_ctf_stream_class_get_event_class_count()). + bt_stream_class_get_event_class_count()). @postrefcountsame{stream_class} @postsuccessrefcountretinc -@sa bt_ctf_stream_class_get_event_class_by_id(): Finds an event class +@sa bt_stream_class_get_event_class_by_id(): Finds an event class by ID. */ -extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_index( - struct bt_ctf_stream_class *stream_class, uint64_t index); +static inline +struct bt_event_class *bt_stream_class_get_event_class_by_index( + struct bt_stream_class *stream_class, uint64_t index) +{ + return bt_get(bt_stream_class_borrow_event_class_by_index(stream_class, + index)); +} + +extern struct bt_event_class *bt_stream_class_borrow_event_class_by_id( + struct bt_stream_class *stream_class, uint64_t id); /** @brief Returns the event class with ID \c id found in the CTF IR stream @@ -513,8 +578,13 @@ extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_index( @postrefcountsame{stream_class} @postsuccessrefcountretinc */ -extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_id( - struct bt_ctf_stream_class *stream_class, uint64_t id); +static inline +struct bt_event_class *bt_stream_class_get_event_class_by_id( + struct bt_stream_class *stream_class, uint64_t id) +{ + return bt_get(bt_stream_class_borrow_event_class_by_id(stream_class, + id)); +} /** @brief Adds the CTF IR event class \p event_class to the @@ -537,10 +607,10 @@ types of \p event_class. If any automatic resolving fails: types of \p event_class or \p stream_class, this function fails. - If \p stream_class is the child of a \link ctfirtraceclass CTF IR trace class\endlink (it was added - with bt_ctf_trace_add_stream_class()), this function fails. + with bt_trace_add_stream_class()), this function fails. - If \p stream_class is not the child of a trace class yet, the automatic resolving is reported to the next call to - bt_ctf_trace_add_stream_class() with \p stream_class. + bt_trace_add_stream_class() with \p stream_class. @param[in] stream_class Stream class to which to add \p event_class. @param[in] event_class Event class to add to \p stream_class. @@ -553,9 +623,9 @@ types of \p event_class. If any automatic resolving fails: @postsuccessrefcountinc{event_class} @postsuccessfrozen{event_class} */ -extern int bt_ctf_stream_class_add_event_class( - struct bt_ctf_stream_class *stream_class, - struct bt_ctf_event_class *event_class); +extern int bt_stream_class_add_event_class( + struct bt_stream_class *stream_class, + struct bt_event_class *event_class); /** @} */ @@ -582,8 +652,8 @@ event classes. @prenotnull{stream_class} @prenotnull{visitor} */ -extern int bt_ctf_stream_class_visit(struct bt_ctf_stream_class *stream_class, - bt_ctf_visitor visitor, void *data); +extern int bt_stream_class_visit(struct bt_stream_class *stream_class, + bt_visitor visitor, void *data); /** @} */