Make API CTF-agnostic
[babeltrace.git] / include / babeltrace / ctf-ir / stream-class.h
index 71b10679ceac550ed0a1f4f197489daf7300cf3d..ca0b9ef954581a4b8a53b30b2675f68cae6f23ed 100644 (file)
  * http://www.efficios.com/ctf
  */
 
+#include <stdint.h>
+
+/* For bt_bool */
+#include <babeltrace/types.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-struct bt_ctf_event_class;
-struct bt_ctf_stream_class;
-struct bt_ctf_clock;
+struct bt_trace;
+struct bt_stream_class;
+struct bt_event_class;
+struct bt_clock_class;
+struct bt_event_header_field;
+struct bt_packet_context_field;
 
-/*
- * bt_ctf_stream_class_create: create a stream class.
- *
- * Allocate a new stream class of the given name. The creation of an event class
- * sets its reference count to 1.
- *
- * A stream class' packet context is a structure initialized with the following
- * fields:
- *     - uint64_t timestamp_begin
- *     - uint64_t timestamp_end
- *     - uint64_t content_size
- *     - uint64_t packet_size
- *     - uint64_t events_discarded
- *
- * @param name Stream name.
- *
- * Returns an allocated stream class on success, NULL on error.
- */
-extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name);
+extern struct bt_stream_class *bt_stream_class_create(struct bt_trace *trace);
 
-/*
- * bt_ctf_stream_class_get_name: Get a stream class' name.
- *
- * @param stream_class Stream class.
- *
- * Returns the stream class' name, NULL on error.
- */
-extern const char *bt_ctf_stream_class_get_name(
-               struct bt_ctf_stream_class *stream_class);
+extern struct bt_stream_class *bt_stream_class_create_with_id(
+               struct bt_trace *trace, uint64_t id);
 
-/*
- * bt_ctf_stream_class_get_clock: get the clock associated with a stream class.
- *
- * @param stream_class Stream class.
- *
- * Returns a clock instance, NULL on error.
- */
-extern struct bt_ctf_clock *bt_ctf_stream_class_get_clock(
-               struct bt_ctf_stream_class *stream_class);
+extern struct bt_trace *bt_stream_class_borrow_trace(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_set_clock: assign a clock to a stream class.
- *
- * Assign a clock to a stream class. This clock will be sampled each time an
- * event is appended to an instance of this stream class.
- *
- * @param stream_class Stream class.
- * @param clock Clock to assign to the provided stream class.
- *
- * Returns 0 on success, a negative value on error.
- */
-extern int bt_ctf_stream_class_set_clock(
-               struct bt_ctf_stream_class *stream_class,
-               struct bt_ctf_clock *clock);
+extern const char *bt_stream_class_get_name(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_get_id: Get a stream class' id.
- *
- * @param stream_class Stream class.
- *
- * Returns the stream class' id, a negative value on error.
- */
-extern int64_t bt_ctf_stream_class_get_id(
-               struct bt_ctf_stream_class *stream_class);
+extern int bt_stream_class_set_name(struct bt_stream_class *stream_class,
+               const char *name);
 
-/*
- * bt_ctf_stream_class_set_id: Set a stream class' id.
- *
- * Set a stream class' id. Must be unique trace-wise.
- * Note that stream classes are assigned a unique id when a stream instance
- * is created for the first time from a trace or writer.
- *
- * @param stream_class Stream class.
- * @param id Stream class id.
- *
- * Returns 0 on success, a negative value on error.
- */
-extern int bt_ctf_stream_class_set_id(
-               struct bt_ctf_stream_class *stream_class, uint32_t id);
+extern bt_bool bt_stream_class_assigns_automatic_event_class_id(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_set_clock: assign a clock to a stream class.
- *
- * Add an event class to a stream class. New events can be added even after a
- * stream has beem instanciated and events have been appended. However, a stream
- * will not accept events of a class that has not been registered beforehand.
- * The stream class will share the ownership of "event_class" by incrementing
- * its reference count.
- *
- * @param stream_class Stream class.
- * @param event_class Event class to add to the provided stream class.
- *
- * Returns 0 on success, a negative value on error.
- */
-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_set_assigns_automatic_event_class_id(
+               struct bt_stream_class *stream_class, bt_bool value);
 
-/*
- * bt_ctf_stream_class_get_event_class_count: Get a stream class' event class
- * count.
- *
- * @param stream_class Stream class.
- *
- * Returns the stream class' event count, a negative value on error.
- */
-extern int bt_ctf_stream_class_get_event_class_count(
-               struct bt_ctf_stream_class *stream_class);
+extern bt_bool bt_stream_class_assigns_automatic_stream_id(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_get_event_class: Get stream class event class by index.
- *
- * @param stream_class Stream class.
- * @param index Index of field.
- *
- * Returns event class, NULL on error.
- */
-extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class(
-               struct bt_ctf_stream_class *stream_class, int index);
+extern int bt_stream_class_set_assigns_automatic_stream_id(
+               struct bt_stream_class *stream_class, bt_bool value);
 
-/*
- * bt_ctf_stream_class_get_event_class_by_name: Get stream class event class by
- * name.
- *
- * @param stream_class Stream class.
- * @param name Event name.
- *
- * Returns event class, NULL on error.
- */
-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 uint64_t bt_stream_class_get_id(struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_get_packet_context_type: get the stream class' packet
- * context type.
- *
- * @param stream_class Stream class.
- *
- * Returns the packet context's type (a structure), NULL on error.
- */
-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_borrow_packet_context_field_type(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_set_packet_context_type: set the stream class' packet
- * context type.
- *
- * @param stream_class Stream class.
- * @param packet_context_type Packet context type (must be a structure).
- *
- * Returns 0 on success, a negative value on error.
- */
-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_field_type(
+               struct bt_stream_class *stream_class,
+               struct bt_field_type *field_type);
 
-/*
- * bt_ctf_stream_class_get_event_context_type: get the stream class'
- * event context type.
- *
- * @param stream_class Stream class.
- *
- * Returns the stream event context's type (a structure), NULL on error.
- */
-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_borrow_event_header_field_type(
+               struct bt_stream_class *stream_class);
 
-/*
- * bt_ctf_stream_class_set_event_context_type: set the stream class'
- * event context type.
- *
- * @param stream_class Stream class.
- * @param event_context_type Event context type (must be a structure).
- *
- * Returns 0 on success, a negative value on error.
- */
-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_header_field_type(
+               struct bt_stream_class *stream_class,
+               struct bt_field_type *field_type);
 
-/*
- * bt_ctf_stream_class_get and bt_ctf_stream_class_put: increment and
- * decrement the stream class' reference count.
- *
- * These functions ensure that the stream class won't be destroyed while it
- * is in use. The same number of get and put (plus one extra put to
- * release the initial reference done at creation) have to be done to
- * destroy a stream class.
- *
- * When the stream class' reference count is decremented to 0 by a
- * bt_ctf_stream_class_put, the stream class is freed.
- *
- * @param stream_class Stream class.
- */
-extern void bt_ctf_stream_class_get(struct bt_ctf_stream_class *stream_class);
-extern void bt_ctf_stream_class_put(struct bt_ctf_stream_class *stream_class);
+extern struct bt_field_type *
+bt_stream_class_borrow_event_common_context_field_type(
+               struct bt_stream_class *stream_class);
+
+extern int bt_stream_class_set_event_common_context_field_type(
+               struct bt_stream_class *stream_class,
+               struct bt_field_type *field_type);
+
+extern uint64_t bt_stream_class_get_event_class_count(
+               struct bt_stream_class *stream_class);
+
+extern struct bt_event_class *bt_stream_class_borrow_event_class_by_index(
+               struct bt_stream_class *stream_class, uint64_t index);
+
+extern struct bt_event_class *bt_stream_class_borrow_event_class_by_id(
+               struct bt_stream_class *stream_class, uint64_t id);
+
+extern int bt_stream_class_set_default_clock_class(
+               struct bt_stream_class *stream_class,
+               struct bt_clock_class *clock_class);
+
+extern struct bt_clock_class *bt_stream_class_borrow_default_clock_class(
+               struct bt_stream_class *stream_class);
+
+extern bt_bool bt_stream_class_default_clock_is_always_known(
+               struct bt_stream_class *stream_class);
+
+extern bt_bool bt_stream_class_packets_have_discarded_event_counter_snapshot(
+               struct bt_stream_class *stream_class);
+
+extern int bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
+               struct bt_stream_class *stream_class, bt_bool value);
+
+extern bt_bool bt_stream_class_packets_have_packet_counter_snapshot(
+               struct bt_stream_class *stream_class);
+
+extern int bt_stream_class_set_packets_have_packet_counter_snapshot(
+               struct bt_stream_class *stream_class, bt_bool value);
+
+extern bt_bool bt_stream_class_packets_have_default_beginning_clock_value(
+               struct bt_stream_class *stream_class);
+
+extern int bt_stream_class_set_packets_have_default_beginning_clock_value(
+               struct bt_stream_class *stream_class, bt_bool value);
+
+extern bt_bool bt_stream_class_packets_have_default_end_clock_value(
+               struct bt_stream_class *stream_class);
+
+extern int bt_stream_class_set_packets_have_default_end_clock_value(
+               struct bt_stream_class *stream_class, bt_bool value);
 
 #ifdef __cplusplus
 }
This page took 0.028046 seconds and 4 git commands to generate.