Docs: allow NULL packet, stream and event headers, contexts and payloads
[babeltrace.git] / include / babeltrace / ctf-ir / trace.h
index 97b6100cf219a9336a16864e0d4430c0e46d192f..ba6b28cdce3cb3f4e31a90b07600c698773adc80 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
 @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.
 
@@ -52,8 +56,8 @@ You can obtain a trace class in two different modes:
 
 - <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:
 
@@ -95,7 +99,7 @@ A trace class also contains zero or more
 @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.
@@ -105,7 +109,7 @@ success:
 
 - 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:
@@ -474,10 +478,13 @@ extern int bt_ctf_trace_set_environment_field_string(
 @param[in] trace_class Trace class of which to get the packet
                        header field type.
 @returns               Packet header field type of \p trace_class,
-                       or \c NULL on error.
+                       or \c NULL if \p trace_class has no packet header field
+                       type or on error.
 
 @prenotnull{trace_class}
-@postsuccessrefcountretinc
+@postrefcountsame{trace_class}
+@post <strong>On success, if the return value is a field type</strong>, its
+       reference count is incremented.
 
 @sa bt_ctf_trace_set_packet_header_type(): Sets the packet
        header field type of a given trace class.
@@ -487,22 +494,29 @@ extern struct bt_ctf_field_type *bt_ctf_trace_get_packet_header_type(
 
 /**
 @brief Sets the packet header field type of the CTF IR trace class
-       \p trace_class to \p packet_context_type.
+       \p trace_class to \p packet_header_type, or unsets the current packet
+       header field type from \p trace_class.
 
-As of Babeltrace \btversion, \p packet_context_type \em must be a
-CTF IR structure field type object.
+If \p packet_header_type is \c NULL, then this function unsets the current
+packet header field type from \p trace_class, effectively making \p trace_class
+a trace without a packet header field type.
+
+As of Babeltrace \btversion, if \p packet_header_type is not \c NULL,
+\p packet_header_type \em must be a CTF IR structure field type object.
 
 @param[in] trace_class         Trace class of which to set the packet
                                header field type.
-@param[in] packet_header_type  Packet header field type.
+@param[in] packet_header_type  Packet header field type, or \c NULL to unset
+                               the current packet header field type.
 @returns                       0 on success, or a negative value on error.
 
 @prenotnull{trace_class}
-@prenotnull{packet_header_type}
 @prehot{trace_class}
-@preisstructft{packet_header_type}
+@pre <strong>\p packet_header_type, if not \c NULL</strong>, is a CTF IR
+       structure field type.
 @postrefcountsame{trace_class}
-@postsuccessrefcountinc{packet_header_type}
+@post <strong>On success, if \p packet_header_type is not \c NULL</strong>,
+       the reference count of \p packet_header_type is incremented.
 
 @sa bt_ctf_trace_get_packet_header_type(): Returns the packet
        header field type of a given trace class.
@@ -591,6 +605,8 @@ You can call this function even if \p trace_class is frozen.
 @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.
@@ -673,6 +689,13 @@ You can only add a given stream class to one trace class.
 
 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.
@@ -681,6 +704,7 @@ You can call this function even if \p trace_class is frozen.
 @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.
@@ -722,6 +746,7 @@ is modified, \p listener is called with the new element and with
 
 @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);
This page took 0.025176 seconds and 4 git commands to generate.