-/*
- * bt_ctf_stream_flush: flush a stream.
- *
- * The stream's current packet's events will be flushed, thus closing the
- * current packet. Events subsequently appended to the stream will be
- * added to a new packet.
- *
- * Flushing will also set the packet context's default attributes if
- * they remained unset while populating the current packet. These default
- * attributes, along with their expected types, are detailed in stream-class.h.
- *
- * @param stream Stream instance.
- *
- * Returns 0 on success, a negative value on error.
- */
-extern int bt_ctf_stream_flush(struct bt_ctf_stream *stream);
+A CTF IR stream does not contain, however, actual \link ctfirpacket CTF
+IR packet\endlink objects: it only acts as a common parent to identify
+the original CTF stream of packet objects.
+
+As with any Babeltrace object, CTF IR stream 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.
+
+@sa ctfirstreamclass
+@sa ctfirpacket
+@sa ctfwriterstream
+
+@file
+@brief CTF IR stream type and functions.
+@sa ctfirstream
+
+@addtogroup ctfirstream
+@{
+*/
+
+/**
+@struct bt_stream
+@brief A CTF IR stream.
+@sa ctfirstream
+@sa ctfwriterstream
+*/
+struct bt_stream;
+struct bt_event;
+
+/**
+@brief Creates a default CTF IR stream named \p name with ID \p id
+ from the CTF IR stream class \p stream_class.
+
+\p stream_class \em must have a parent
+\link ctfirtraceclass CTF IR trace class\endlink.
+
+\p id \em must be unique amongst the IDs of all the streams created
+from \p stream_class with bt_stream_create_with_id().
+
+\p name can be \c NULL to create an unnamed stream object.
+
+@param[in] stream_class CTF IR stream class to use to create the
+ CTF IR stream.
+@param[in] name Name of the stream object to create (copied on
+ success) or \c NULL to create an unnamed stream.
+@param[in] id ID of the stream object to create.
+@returns Created stream object, or \c NULL on error.
+
+@prenotnull{stream_class}
+@pre \p id is lesser than or equal to 9223372036854775807 (\c INT64_MAX).
+@pre \p stream_class has a parent trace class.
+@postsuccessrefcountret1
+*/
+extern struct bt_stream *bt_stream_create(struct bt_stream_class *stream_class,
+ const char *name, uint64_t id);
+
+/**
+@brief Returns the name of the CTF IR stream \p stream.
+
+On success, \p stream remains the sole owner of the returned string.
+
+@param[in] stream Stream object of which to get the name.
+@returns Name of stream \p stream, or \c NULL if
+ \p stream is unnamed or on error.
+
+@prenotnull{stream}
+@postrefcountsame{stream}
+*/
+extern const char *bt_stream_get_name(struct bt_stream *stream);
+
+/**
+@brief Returns the numeric ID of the CTF IR stream \p stream.
+
+@param[in] stream Stream of which to get the numeric ID.
+@returns ID of stream \p stream, or a negative value
+ on error.
+
+@prenotnull{stream}
+@postrefcountsame{stream}
+*/
+extern int64_t bt_stream_get_id(struct bt_stream *stream);
+
+extern struct bt_stream_class *bt_stream_borrow_class(
+ struct bt_stream *stream);
+
+/**
+@brief Returns the parent CTF IR stream class of the CTF IR
+ stream \p stream.
+
+This function returns a reference to the stream class which was used
+to create the stream object in the first place with
+bt_stream_create().
+
+@param[in] stream Stream of which to get the parent stream class.
+@returns Parent stream class of \p stream,
+ or \c NULL on error.
+
+@prenotnull{stream}
+@postrefcountsame{stream}
+@postsuccessrefcountretinc
+*/
+static inline
+struct bt_stream_class *bt_stream_get_class(
+ struct bt_stream *stream)
+{
+ return bt_get(bt_stream_borrow_class(stream));
+}