@ingroup ctfir
@brief CTF IR trace class.
+@code
+#include <babeltrace/ctf-ir/trace.h>
+@endcode
+
A CTF IR <strong><em>trace class</em></strong> is a descriptor of
traces.
- <strong>Normal mode</strong>: use bt_ctf_trace_create() to create a
default, empty trace class.
-- <strong>CTF writer mode</strong>: use bt_ctf_writer_get_trace() to
- get the trace class created by a given CTF writer object.
+- <strong>CTF IR writer mode</strong>: use bt_ctf_writer_get_trace() to
+ get the trace class created by a given CTF IR writer object.
A trace class has the following properties:
@todo
Elaborate about clock classes irt clock values.
-As with any Babeltrace object, CTF IR stream class objects have
+As with any Babeltrace object, CTF IR trace class objects have
<a href="https://en.wikipedia.org/wiki/Reference_counting">reference
counts</a>. See \ref refs to learn more about the reference counting
management of Babeltrace objects.
- bt_ctf_trace_add_stream_class()
- bt_ctf_writer_create_stream()
- (\link ctfirwriter CTF writer\endlink mode only)
+ (\link ctfirwriter CTF IR writer\endlink mode only)
You cannot modify a frozen trace class: it is considered immutable,
except for:
or \c NULL on error.
@prenotnull{trace_class}
+@postrefcountsame{trace_class}
@postsuccessrefcountretinc
@sa bt_ctf_trace_set_packet_header_type(): Sets the packet
@prenotnull{clock_class}
@postrefcountsame{trace_class}
@postsuccessrefcountinc{clock_class}
+@post <strong>On success, if \p trace_class is frozen</strong>,
+ \p clock_class is frozen.
@sa bt_ctf_trace_get_clock(): Returns the clock class contained in a
given trace class at a given index.
You can call this function even if \p trace_class is frozen.
+This function tries to resolve the needed
+\link ctfirfieldtypes CTF IR field type\endlink of the dynamic field
+types that are found anywhere in the root field types of
+\p stream_class and of all its currently contained
+\link ctfireventclass CTF IR event classes\endlink. If any automatic
+resolving fails, then this function fails.
+
@param[in] trace_class Trace class to which to add \p stream_class.
@param[in] stream_class Stream class to add to \p trace_class.
@returns 0 on success, or a negative value on error.
@prenotnull{stream_class}
@postrefcountsame{trace_class}
@postsuccessrefcountinc{stream_class}
+@postsuccessfrozen{stream_class}
@sa bt_ctf_trace_get_clock(): Returns the stream class contained in a
given trace class at a given index.
/**
@brief User function type to use with bt_ctf_trace_add_listener().
-@param[in] element New element which is part of the trace class
- hierarchy.
-@param[in] data User data.
+@param[in] obj New CTF IR object which is part of the trace
+ class hierarchy.
+@param[in] data User data.
-@prenotnull{element}
+@prenotnull{obj}
*/
-typedef void (*bt_ctf_listener_cb)(
- struct bt_ctf_ir_element *element, void *data);
+typedef void (*bt_ctf_listener_cb)(struct bt_ctf_object *obj, void *data);
/**
@brief Adds the trace class modification listener \p listener to
@prenotnull{trace_class}
@prenotnull{listener}
+@postrefcountsame{trace_class}
*/
extern int bt_ctf_trace_add_listener(struct bt_ctf_trace *trace_class,
bt_ctf_listener_cb listener, void *data);
@prenotnull{visitor}
*/
extern int bt_ctf_trace_visit(struct bt_ctf_trace *trace_class,
- bt_ctf_ir_visitor visitor, void *data);
+ bt_ctf_visitor visitor, void *data);
/** @} */