*/
#include <stdint.h>
+
+/* For bt_visitor */
#include <babeltrace/ctf-ir/visitor.h>
#ifdef __cplusplus
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:
@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
<a href="https://en.wikipedia.org/wiki/Reference_counting">reference
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
*/
/**
-@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;
/**
@name Creation and parent access functions
@{
*/
+/**
+@brief Creates an empty CTF IR stream class named \p name, or an
+ unnamed empty stream class if \p name is \c NULL.
+
+On success, the packet context, event header, and event context field
+types are empty structure field types. You can modify those default
+field types after the stream class is created with
+bt_stream_class_set_packet_context_type(),
+bt_stream_class_set_event_header_type(), and
+bt_stream_class_set_event_context_type().
+
+@param[in] name Name of the stream class to create (copied on success),
+ or \c NULL to create an unnamed stream class.
+@returns Created empty stream class, or \c NULL on error.
+
+@postsuccessrefcountret1
+
+@sa bt_stream_class_create(): Creates a default stream class.
+*/
+extern struct bt_stream_class *bt_stream_class_create_empty(
+ const char *name);
+
/**
@brief Creates a default CTF IR stream class named \p nameĀ, or a
default unnamed stream class if \p name is \c NULL.
- <code>timestamp</code>: 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_type() and
+bt_stream_class_set_event_header_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);
/**
@brief Returns the parent CTF IR trace class of the CTF IR stream
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.
@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);
+extern struct bt_trace *bt_stream_class_get_trace(
+ struct bt_stream_class *stream_class);
/** @} */
@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.
@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
@prenotnull{stream_class}
@prehot{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, uint32_t id);
+extern int bt_stream_class_set_id(
+ struct bt_stream_class *stream_class, uint64_t id);
/** @} */
@post <strong>On success, if the return value is a field type</strong>, its
reference count is incremented.
-@sa bt_ctf_stream_class_set_packet_context_type(): Sets the packet
+@sa bt_stream_class_set_packet_context_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);
+extern struct bt_field_type *bt_stream_class_get_packet_context_type(
+ struct bt_stream_class *stream_class);
/**
@brief Sets the packet context field type of the CTF IR stream class
@post <strong>On success, if \p packet_context_type is not \c NULL</strong>,
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_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_type(
+ struct bt_stream_class *stream_class,
+ struct bt_field_type *packet_context_type);
/**
@brief Returns the event header field type of the CTF IR stream class
@post <strong>On success, if the return value is a field type</strong>, its
reference count is incremented.
-@sa bt_ctf_stream_class_set_event_header_type(): Sets the event
+@sa bt_stream_class_set_event_header_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);
+extern struct bt_field_type *
+bt_stream_class_get_event_header_type(
+ struct bt_stream_class *stream_class);
/**
@brief Sets the event header field type of the CTF IR stream class
@post <strong>On success, if \p event_header_type is not \c NULL</strong>,
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_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_type(
+ struct bt_stream_class *stream_class,
+ struct bt_field_type *event_header_type);
/**
@brief Returns the event context field type of the CTF IR stream class
its reference count is incremented.
-@sa bt_ctf_stream_class_set_event_context_type(): Sets the event
+@sa bt_stream_class_set_event_context_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);
+extern struct bt_field_type *
+bt_stream_class_get_event_context_type(
+ struct bt_stream_class *stream_class);
/**
@brief Sets the event context field type of the CTF IR stream class
@post <strong>On success, if \p event_context_type is not \c NULL</strong>,
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_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_type(
+ struct bt_stream_class *stream_class,
+ struct bt_field_type *event_context_type);
/** @} */
@prenotnull{stream_class}
@postrefcountsame{stream_class}
*/
-extern int 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);
/**
@brief Returns the event class at index \p index in the CTF IR stream
@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.
-@sa bt_ctf_stream_class_get_event_class_by_name(): Finds an event class
- by name.
*/
-extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class(
- struct bt_ctf_stream_class *stream_class, int index);
-
-/**
-@brief Returns the event class named \c name found in the CTF IR stream
- class \p stream_class.
-
-@param[in] stream_class Stream class of which to get the event class.
-@param[in] name Name of the event class to find.
-@returns Event class named \p name, or \c NULL
- on error.
-
-@prenotnull{stream_class}
-@prenotnull{name}
-@postrefcountsame{stream_class}
-@postsuccessrefcountretinc
-
-@sa bt_ctf_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_name(
- struct bt_ctf_stream_class *stream_class, const char *name);
+extern struct bt_event_class *bt_stream_class_get_event_class_by_index(
+ struct bt_stream_class *stream_class, uint64_t index);
/**
@brief Returns the event class with ID \c id found in the CTF IR stream
@prenotnull{stream_class}
@postrefcountsame{stream_class}
@postsuccessrefcountretinc
-
-@sa bt_ctf_stream_class_get_event_class_by_name(): Finds an event class
- by name.
*/
-extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_id(
- struct bt_ctf_stream_class *stream_class, uint32_t id);
+extern struct bt_event_class *bt_stream_class_get_event_class_by_id(
+ struct bt_stream_class *stream_class, uint64_t id);
/**
@brief Adds the CTF IR event class \p event_class to the
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.
@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);
/** @} */
@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);
/** @} */
/** @} */
+/* Pre-2.0 CTF writer compatibility */
+#define bt_ctf_stream_class bt_stream_class
+#define bt_ctf_stream_class_create bt_stream_class_create
+#define bt_ctf_stream_class_add_event_class bt_stream_class_add_event_class
+#define bt_ctf_stream_class_get_packet_context_type bt_stream_class_get_packet_context_type
+
#ifdef __cplusplus
}
#endif