+ bt_bool assigns_automatic_event_class_id);
+
+/*!
+@brief
+ Returns whether or not the stream class \bt_p{stream_class}
+ automatically assigns a numeric ID to an \bt_ev_cls you create
+ and add to it.
+
+See the \ref api-tir-stream-cls-prop-auto-ec-id "assigns automatic event class IDs?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not it assigns automatic
+ event class IDs.
+
+@returns
+ #BT_TRUE if \bt_p{stream_class} automatically
+ assigns event class IDs.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_assigns_automatic_event_class_id() —
+ Sets whether or not a stream class automatically assigns
+ event class IDs.
+*/
+extern bt_bool bt_stream_class_assigns_automatic_event_class_id(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Sets whether or not the stream class \bt_p{stream_class}
+ automatically assigns a numeric ID to a \bt_stream you create from
+ it.
+
+See the \ref api-tir-stream-cls-prop-auto-stream-id "assigns automatic stream IDs?"
+property.
+
+@param[in] stream_class
+ Stream class of which to set whether or not it assigns automatic
+ stream IDs.
+@param[in] assigns_automatic_stream_id
+ #BT_TRUE to make \bt_p{stream_class} assign automatic stream
+ IDs.
+
+@bt_pre_not_null{stream_class}
+@bt_pre_hot{stream_class}
+
+@sa bt_stream_class_assigns_automatic_stream_id() —
+ Returns whether or not a stream class automatically assigns
+ stream IDs.
+*/
+extern void bt_stream_class_set_assigns_automatic_stream_id(
+ bt_stream_class *stream_class, bt_bool assigns_automatic_stream_id);
+
+/*!
+@brief
+ Returns whether or not the stream class \bt_p{stream_class}
+ automatically assigns a numeric ID to a \bt_stream you create
+ from it.
+
+See the \ref api-tir-stream-cls-prop-auto-stream-id "assigns automatic stream IDs?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not it assigns automatic
+ stream IDs.
+
+@returns
+ #BT_TRUE if \bt_p{stream_class} automatically assigns stream IDs.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_assigns_automatic_stream_id() —
+ Sets whether or not a stream class automatically assigns
+ stream IDs.
+*/
+extern bt_bool bt_stream_class_assigns_automatic_stream_id(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Sets whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} have \bt_p_pkt and, if so,
+ if those packets have beginning and/or end default
+ \bt_p_cs.
+
+See the
+\ref api-tir-stream-cls-prop-supports-pkt "supports packets?",
+\ref api-tir-stream-cls-prop-pkt-beg-cs "packets have a beginning default clock snapshot?",
+and
+\ref api-tir-stream-cls-prop-pkt-end-cs "packets have an end default clock snapshot?"
+properties.
+
+@param[in] stream_class
+ Stream class of which to set whether or not its streams have
+ packets.
+@param[in] supports_packets
+ #BT_TRUE to make the streams of \bt_p{stream_class} have packets.
+@param[in] with_beginning_default_clock_snapshot
+ #BT_TRUE to make the packets of the streams of \bt_p{stream_class}
+ have a beginning default clock snapshot.
+@param[in] with_end_default_clock_snapshot
+ #BT_TRUE to make the packets of the streams of \bt_p{stream_class}
+ have an end default clock snapshot.
+
+@bt_pre_not_null{stream_class}
+@bt_pre_hot{stream_class}
+@pre
+ <strong>If \bt_p{with_beginning_default_clock_snapshot} is
+ #BT_TRUE</strong>,
+ \bt_p{supports_packets} is also #BT_TRUE.
+@pre
+ <strong>If \bt_p{with_beginning_default_clock_snapshot} is
+ #BT_TRUE</strong>,
+ \bt_p{supports_packets} is also #BT_TRUE.
+@pre
+ <strong>If \bt_p{with_beginning_default_clock_snapshot} or
+ \bt_p{with_end_default_clock_snapshot} is #BT_TRUE</strong>,
+ \bt_p{stream_class} has a
+ \ref api-tir-stream-cls-prop-def-clock-cls "default clock class".
+
+@sa bt_stream_class_supports_packets() —
+ Returns whether or not a stream class's streams have packets.
+@sa bt_stream_class_packets_have_beginning_default_clock_snapshot() —
+ Returns whether or not the packets of a stream class's streams
+ have a beginning default clock snapshot.
+@sa bt_stream_class_packets_have_end_default_clock_snapshot() —
+ Returns whether or not the packets of a stream class's streams
+ have an end default clock snapshot.
+*/
+extern void bt_stream_class_set_supports_packets(
+ bt_stream_class *stream_class, bt_bool supports_packets,
+ bt_bool with_beginning_default_clock_snapshot,
+ bt_bool with_end_default_clock_snapshot);
+
+/*!
+@brief
+ Returns whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} have \bt_p_pkt.
+
+See the \ref api-tir-stream-cls-prop-supports-pkt "supports packets?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams have
+ packets.
+
+@returns
+ #BT_TRUE if the streams of \bt_p{stream_class} have packets.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_packets() —
+ Sets whether or not a stream class's streams have packets.
+*/
+extern bt_bool bt_stream_class_supports_packets(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Returns whether or not the \bt_p_pkt of the instances (\bt_p_stream)
+ of the stream class \bt_p{stream_class} have a beginning
+ default \bt_cs.
+
+See the
+\ref api-tir-stream-cls-prop-pkt-beg-cs "packets have a beginning default clock snapshot?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams's packets
+ have a beginning default clock snapshot.
+
+@returns
+ #BT_TRUE if the packets of the streams of \bt_p{stream_class} have a
+ beginning default clock snapshot.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_packets() —
+ Sets whether or not a stream class's streams have packets.
+@sa bt_stream_class_packets_have_end_default_clock_snapshot() —
+ Returns whether or not the packets of a stream class's streams
+ have an end default clock snapshot.
+*/
+extern bt_bool bt_stream_class_packets_have_beginning_default_clock_snapshot(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Returns whether or not the \bt_p_pkt of the instances (\bt_p_stream)
+ of the stream class \bt_p{stream_class} have an end
+ default \bt_cs.
+
+See the
+\ref api-tir-stream-cls-prop-pkt-end-cs "packets have an end default clock snapshot?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams's packets
+ have an end default clock snapshot.
+
+@returns
+ #BT_TRUE if the packets of the streams of \bt_p{stream_class} have
+ an end default clock snapshot.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_packets() —
+ Sets whether or not a stream class's streams have packets.
+@sa bt_stream_class_packets_have_beginning_default_clock_snapshot() —
+ Returns whether or not the packets of a stream class's streams
+ have a beginning default clock snapshot.
+*/
+extern bt_bool bt_stream_class_packets_have_end_default_clock_snapshot(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Sets whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} can have discarded events and,
+ if so, if the \bt_p_disc_ev_msg of those streams have
+ beginning and end default \bt_p_cs.
+
+See the
+\ref api-tir-stream-cls-prop-supports-disc-ev "supports discarded events?"
+and
+\ref api-tir-stream-cls-prop-disc-ev-cs "discarded events have default clock snapshots?"
+properties.
+
+@param[in] stream_class
+ Stream class of which to set whether or not its streams can have
+ discarded events.
+@param[in] supports_discarded_events
+ #BT_TRUE to make the streams of \bt_p{stream_class} be able to
+ have discarded events.
+@param[in] with_default_clock_snapshots
+ #BT_TRUE to make the discarded events messages the streams of
+ \bt_p{stream_class} have beginning and end default clock snapshots.
+
+@bt_pre_not_null{stream_class}
+@bt_pre_hot{stream_class}
+@pre
+ <strong>If \bt_p{with_default_clock_snapshots} is #BT_TRUE</strong>,
+ \bt_p{supports_discarded_events} is also #BT_TRUE.
+@pre
+ <strong>If \bt_p{with_default_clock_snapshots} is #BT_TRUE</strong>,
+ \bt_p{stream_class} has a
+ \ref api-tir-stream-cls-prop-def-clock-cls "default clock class".
+
+@sa bt_stream_class_supports_discarded_events() —
+ Returns whether or not a stream class's streams can have
+ discarded events.
+@sa bt_stream_class_discarded_events_have_default_clock_snapshots() —
+ Returns whether or not the discarded events messages of a
+ stream class's streams have beginning and end default clock
+ snapshots.
+*/
+extern void bt_stream_class_set_supports_discarded_events(
+ bt_stream_class *stream_class,
+ bt_bool supports_discarded_events,
+ bt_bool with_default_clock_snapshots);
+
+/*!
+@brief
+ Returns whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} can have discarded events.
+
+See the
+\ref api-tir-stream-cls-prop-supports-disc-ev "supports discarded events?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams can have
+ discarded events.
+
+@returns
+ #BT_TRUE if the streams of \bt_p{stream_class} can have discarded
+ events.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_discarded_events() —
+ Sets whether or not a stream class's streams can have discarded
+ events.
+*/
+extern bt_bool bt_stream_class_supports_discarded_events(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Returns whether or not the \bt_p_disc_ev_msg of the instances
+ (\bt_p_stream) of the stream class \bt_p{stream_class} have
+ beginning and end default \bt_p_cs.
+
+See the
+\ref api-tir-stream-cls-prop-disc-ev-cs "discarded events have default clock snapshots?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams's discarded
+ events messages have a beginning and end default clock snapshots.
+
+@returns
+ #BT_TRUE if the discarded events messages of the streams of
+ \bt_p{stream_class} have beginning and end default clock snapshots.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_discarded_events() —
+ Sets whether or not a stream class's streams can have discarded
+ events.
+*/
+extern bt_bool bt_stream_class_discarded_events_have_default_clock_snapshots(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Sets whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} can have discarded packets and,
+ if so, if the \bt_p_disc_pkt_msg of those streams have
+ beginning and end default \bt_p_cs.
+
+See the
+\ref api-tir-stream-cls-prop-supports-disc-pkt "supports discarded packets?"
+and
+\ref api-tir-stream-cls-prop-disc-pkt-cs "discarded packets have default clock snapshots?"
+properties.
+
+\bt_p{stream_class} must support packets (see
+bt_stream_class_set_supports_packets()).
+
+@param[in] stream_class
+ Stream class of which to set whether or not its streams can have
+ discarded packets.
+@param[in] supports_discarded_packets
+ #BT_TRUE to make the streams of \bt_p{stream_class} be able to
+ have discarded packets.
+@param[in] with_default_clock_snapshots
+ #BT_TRUE to make the discarded packets messages the streams of
+ \bt_p{stream_class} have beginning and end default clock snapshots.
+
+@bt_pre_not_null{stream_class}
+@bt_pre_hot{stream_class}
+@pre
+ <code>bt_stream_class_supports_packets(stream_class)</code>
+ returns #BT_TRUE.
+@pre
+ <strong>If \bt_p{with_default_clock_snapshots} is #BT_TRUE</strong>,
+ \bt_p{supports_discarded_packets} is also #BT_TRUE.
+@pre
+ <strong>If \bt_p{with_default_clock_snapshots} is #BT_TRUE</strong>,
+ \bt_p{stream_class} has a
+ \ref api-tir-stream-cls-prop-def-clock-cls "default clock class".
+
+@sa bt_stream_class_supports_discarded_packets() —
+ Returns whether or not a stream class's streams can have
+ discarded packets.
+@sa bt_stream_class_discarded_packets_have_default_clock_snapshots() —
+ Returns whether or not the discarded packets messages of a
+ stream class's streams have beginning and end default clock
+ snapshots.
+*/
+extern void bt_stream_class_set_supports_discarded_packets(
+ bt_stream_class *stream_class,
+ bt_bool supports_discarded_packets,
+ bt_bool with_default_clock_snapshots);
+
+/*!
+@brief
+ Returns whether or not the instances (\bt_p_stream) of the
+ stream class \bt_p{stream_class} can have discarded packets.
+
+See the
+\ref api-tir-stream-cls-prop-supports-disc-pkt "supports discarded packets?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams can have
+ discarded packets.
+
+@returns
+ #BT_TRUE if the streams of \bt_p{stream_class} can have discarded
+ packets.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_discarded_packets() —
+ Sets whether or not a stream class's streams can have discarded
+ packets.
+*/
+extern bt_bool bt_stream_class_supports_discarded_packets(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Returns whether or not the \bt_p_disc_pkt_msg of the instances
+ (\bt_p_stream) of the stream class \bt_p{stream_class} have
+ beginning and end default \bt_p_cs.
+
+See the
+\ref api-tir-stream-cls-prop-disc-ev-cs "discarded packets have default clock snapshots?"
+property.
+
+@param[in] stream_class
+ Stream class of which to get whether or not its streams's discarded
+ packets messages have a beginning and end default clock snapshots.
+
+@returns
+ #BT_TRUE if the discarded packets messages of the streams of
+ \bt_p{stream_class} have beginning and end default clock snapshots.
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_supports_discarded_packets() —
+ Sets whether or not a stream class's streams can have discarded
+ packets.
+*/
+extern bt_bool bt_stream_class_discarded_packets_have_default_clock_snapshots(
+ const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Sets the user attributes of the stream class \bt_p{stream_class} to
+ \bt_p{user_attributes}.
+
+See the \ref api-tir-stream-cls-prop-user-attrs "user attributes"
+property.
+
+@note
+ When you create a default stream class with bt_stream_class_create()
+ or bt_stream_class_create_with_id(), the stream class's initial user
+ attributes is an empty \bt_map_val. Therefore you can borrow it with
+ bt_stream_class_borrow_user_attributes() and fill it directly
+ instead of setting a new one with this function.
+
+@param[in] stream_class
+ Stream class of which to set the user attributes to
+ \bt_p{user_attributes}.
+@param[in] user_attributes
+ New user attributes of \bt_p{stream_class}.
+
+@bt_pre_not_null{stream_class}
+@bt_pre_hot{stream_class}
+@bt_pre_not_null{user_attributes}
+@bt_pre_is_map_val{user_attributes}
+
+@sa bt_stream_class_borrow_user_attributes() —
+ Borrows the user attributes of a stream class.
+*/
+extern void bt_stream_class_set_user_attributes(
+ bt_stream_class *stream_class, const bt_value *user_attributes);
+
+/*!
+@brief
+ Borrows the user attributes of the stream class \bt_p{stream_class}.
+
+See the \ref api-tir-stream-cls-prop-user-attrs "user attributes"
+property.
+
+@note
+ When you create a default stream class with bt_stream_class_create()
+ or bt_stream_class_create_with_id(), the stream class's initial user
+ attributes is an empty \bt_map_val.
+
+@param[in] stream_class
+ Stream class from which to borrow the user attributes.
+
+@returns
+ User attributes of \bt_p{stream_class} (a \bt_map_val).
+
+@bt_pre_not_null{stream_class}
+
+@sa bt_stream_class_set_user_attributes() —
+ Sets the user attributes of a stream class.
+@sa bt_stream_class_borrow_user_attributes_const() —
+ \c const version of this function.
+*/
+extern bt_value *bt_stream_class_borrow_user_attributes(
+ bt_stream_class *stream_class);
+
+/*!
+@brief
+ Borrows the user attributes of the stream class \bt_p{stream_class}
+ (\c const version).
+
+See bt_stream_class_borrow_user_attributes().
+*/
+extern const bt_value *bt_stream_class_borrow_user_attributes_const(
+ const bt_stream_class *stream_class);
+
+/*! @} */
+
+/*!
+@name Reference count
+@{
+*/
+
+/*!
+@brief
+ Increments the \ref api-fund-shared-object "reference count" of
+ the stream class \bt_p{stream_class}.
+
+@param[in] stream_class
+ @parblock
+ Stream class of which to increment the reference count.
+
+ Can be \c NULL.
+ @endparblock
+
+@sa bt_stream_class_put_ref() —
+ Decrements the reference count of a stream class.
+*/
+extern void bt_stream_class_get_ref(const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Decrements the \ref api-fund-shared-object "reference count" of
+ the stream class \bt_p{stream_class}.
+
+@param[in] stream_class
+ @parblock
+ Stream class of which to decrement the reference count.
+
+ Can be \c NULL.
+ @endparblock
+
+@sa bt_stream_class_get_ref() —
+ Increments the reference count of a stream class.
+*/
+extern void bt_stream_class_put_ref(const bt_stream_class *stream_class);
+
+/*!
+@brief
+ Decrements the reference count of the stream class
+ \bt_p{_stream_class}, and then sets \bt_p{_stream_class} to \c NULL.
+
+@param _stream_class
+ @parblock
+ Stream class of which to decrement the reference count.
+
+ Can contain \c NULL.
+ @endparblock
+
+@bt_pre_assign_expr{_stream_class}
+*/
+#define BT_STREAM_CLASS_PUT_REF_AND_RESET(_stream_class) \
+ do { \
+ bt_stream_class_put_ref(_stream_class); \
+ (_stream_class) = NULL; \
+ } while (0)
+
+/*!
+@brief
+ Decrements the reference count of the stream class \bt_p{_dst}, sets
+ \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to \c NULL.
+
+This macro effectively moves a stream class reference from the expression
+\bt_p{_src} to the expression \bt_p{_dst}, putting the existing
+\bt_p{_dst} reference.
+
+@param _dst
+ @parblock
+ Destination expression.
+
+ Can contain \c NULL.
+ @endparblock
+@param _src
+ @parblock
+ Source expression.
+
+ Can contain \c NULL.
+ @endparblock
+
+@bt_pre_assign_expr{_dst}
+@bt_pre_assign_expr{_src}
+*/
+#define BT_STREAM_CLASS_MOVE_REF(_dst, _src) \
+ do { \
+ bt_stream_class_put_ref(_dst); \
+ (_dst) = (_src); \
+ (_src) = NULL; \
+ } while (0)
+
+/*! @} */
+
+/*! @} */