* http://www.efficios.com/ctf
*/
-#include <babeltrace/ctf-ir/event-types.h>
+#include <babeltrace/ctf-ir/field-types.h>
+#include <babeltrace/values.h>
#include <stdint.h>
#ifdef __cplusplus
struct bt_ctf_stream_class;
struct bt_ctf_clock;
-enum bt_environment_field_type {
- BT_ENVIRONMENT_FIELD_TYPE_UNKNOWN = -1,
- BT_ENVIRONMENT_FIELD_TYPE_STRING = 0,
- BT_ENVIRONMENT_FIELD_TYPE_INTEGER = 1,
-};
-
/*
* bt_ctf_trace_create: create a trace instance.
*
extern struct bt_ctf_trace *bt_ctf_trace_create(void);
/*
- * bt_ctf_trace_create_stream: create a stream instance.
+ * bt_ctf_trace_set_environment_field: sets an environment field to the
+ * trace.
+ *
+ * Sets an environment field to the trace. The name parameter is
+ * copied, whereas the value parameter's reference count is incremented
+ * (if the function succeeds).
*
- * Allocate a new stream instance and register it to the trace. The creation of
- * a stream sets its reference count to 1.
+ * If a value exists in the environment for the specified name, it is
+ * replaced by the new value.
+ *
+ * The value parameter _must_ be either an integer value object or a
+ * string value object. Other object types are not supported.
*
* @param trace Trace instance.
- * @param stream_class Stream class to instantiate.
+ * @param name Name of the environment field (will be copied).
+ * @param value Value of the environment field.
*
- * Returns a new stream on success, NULL on error.
+ * Returns 0 on success, a negative value on error.
*/
-extern struct bt_ctf_stream *bt_ctf_trace_create_stream(
- struct bt_ctf_trace *trace,
- struct bt_ctf_stream_class *stream_class);
+extern int bt_ctf_trace_set_environment_field(
+ struct bt_ctf_trace *trace, const char *name,
+ struct bt_value *value);
/*
- * bt_ctf_trace_add_environment_field: add a string environment field to the
- * trace.
+ * bt_ctf_trace_set_environment_field_string: sets a string environment
+ * field to the trace.
*
- * Add a string environment field to the trace. The name and value parameters
- * are copied.
+ * Sets a string environment field to the trace. This is a helper
+ * function which corresponds to calling
+ * bt_ctf_trace_set_environment_field() with a string object.
*
* @param trace Trace instance.
* @param name Name of the environment field (will be copied).
*
* Returns 0 on success, a negative value on error.
*/
-extern int bt_ctf_trace_add_environment_field(struct bt_ctf_trace *trace,
- const char *name,
+extern int bt_ctf_trace_set_environment_field_string(
+ struct bt_ctf_trace *trace, const char *name,
const char *value);
/*
- * bt_ctf_trace_add_environment_field_integer: add an integer environment
+ * bt_ctf_trace_set_environment_field_integer: sets an integer environment
* field to the trace.
*
- * Add an integer environment field to the trace. The name parameter is
- * copied.
+ * Sets an integer environment field to the trace. This is a helper
+ * function which corresponds to calling
+ * bt_ctf_trace_set_environment_field() with an integer object.
*
* @param trace Trace instance.
* @param name Name of the environment field (will be copied).
*
* Returns 0 on success, a negative value on error.
*/
-extern int bt_ctf_trace_add_environment_field_integer(
+extern int bt_ctf_trace_set_environment_field_integer(
struct bt_ctf_trace *trace, const char *name,
int64_t value);
extern int bt_ctf_trace_get_environment_field_count(
struct bt_ctf_trace *trace);
-/*
- * bt_ctf_trace_get_environment_field_type: get environment field type.
- *
- * Get an environment field's type.
- *
- * @param trace Trace instance.
- * @param index Index of the environment field.
- *
- * Returns the environment field count, a negative value on error.
- */
-extern enum bt_environment_field_type
-bt_ctf_trace_get_environment_field_type(struct bt_ctf_trace *trace,
- int index);
-
/*
* bt_ctf_trace_get_environment_field_name: get environment field name.
*
* Get an environment field's name. The string's ownership is not
- * transferred to the caller.
+ * transferred to the caller. The string data is valid as long as
+ * this trace's environment is not modified.
*
* @param trace Trace instance.
* @param index Index of the environment field.
int index);
/*
- * bt_ctf_trace_get_environment_field_value_string: get environment field
- * string value.
+ * bt_ctf_trace_get_environment_field_value: get environment
+ * field value (an object).
*
- * Get an environment field's string value. The string's ownership is not
- * transferred to the caller.
+ * Get an environment field's value (an object). The returned object's
+ * reference count is incremented. When done with the object, the caller
+ * must call bt_value_put() on it.
*
* @param trace Trace instance.
* @param index Index of the environment field.
*
- * Returns the environment field's string value, NULL on error.
+ * Returns the environment field's object value, NULL on error.
*/
-extern const char *
-bt_ctf_trace_get_environment_field_value_string(struct bt_ctf_trace *trace,
+extern struct bt_value *
+bt_ctf_trace_get_environment_field_value(struct bt_ctf_trace *trace,
int index);
/*
- * bt_ctf_trace_get_environment_field_value_integer: get environment field
- * integer value.
+ * bt_ctf_trace_get_environment_field_value_by_name: get environment
+ * field value (an object) by name.
*
- * Get an environment field's integer value.
+ * Get an environment field's value (an object) by its field name. The
+ * returned object's reference count is incremented. When done with the
+ * object, the caller must call bt_value_put() on it.
*
* @param trace Trace instance.
- * @param index Index of the environment field.
+ * @param name Environment field's name
*
- * Returns the environment field's integer value, a negative value on error.
+ * Returns the environment field's object value, NULL on error.
*/
-extern int
-bt_ctf_trace_get_environment_field_value_integer(struct bt_ctf_trace *trace,
- int index, int64_t *value);
+extern struct bt_value *
+bt_ctf_trace_get_environment_field_value_by_name(struct bt_ctf_trace *trace,
+ const char *name);
/*
* bt_ctf_trace_add_clock: add a clock to the trace.
/*
* bt_ctf_trace_get_clock_count: get the number of clocks
- * associated to the trace.
+ * associated with the trace.
*
* @param trace Trace instance.
*
extern struct bt_ctf_clock *bt_ctf_trace_get_clock(
struct bt_ctf_trace *trace, int index);
+/*
+ * bt_ctf_trace_add_stream_class: add a stream_class to the trace.
+ *
+ * Add a stream class to the trace.
+ *
+ * @param trace Trace instance.
+ * @param stream_class Stream class to add to the trace.
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_ctf_trace_add_stream_class(struct bt_ctf_trace *trace,
+ struct bt_ctf_stream_class *stream_class);
+
+/*
+ * bt_ctf_trace_get_stream_class_count: get the number of stream classes
+ * associated with the trace.
+ *
+ * @param trace Trace instance.
+ *
+ * Returns the stream class count on success, a negative value on error.
+ */
+extern int bt_ctf_trace_get_stream_class_count(struct bt_ctf_trace *trace);
+
+/*
+ * bt_ctf_trace_get_stream_class: get a trace's stream class at index.
+ *
+ * @param trace Trace instance.
+ * @param index Index of the stream class in the given trace.
+ *
+ * Return a stream class on success, NULL on error.
+ */
+extern struct bt_ctf_stream_class *bt_ctf_trace_get_stream_class(
+ struct bt_ctf_trace *trace, int index);
+
+/*
+ * bt_ctf_trace_get_stream_class_by_id: get a trace's stream class by ID.
+ *
+ * @param trace Trace instance.
+ * @param index ID of the stream class in the given trace.
+ *
+ * Return a stream class on success, NULL on error.
+ */
+extern struct bt_ctf_stream_class *bt_ctf_trace_get_stream_class_by_id(
+ struct bt_ctf_trace *trace, uint32_t id);
+
+/*
+ * bt_ctf_trace_get_clock_by_name: get a trace's clock by name
+ *
+ * @param trace Trace instance.
+ * @param name Name of the clock in the given trace.
+ *
+ * Return a clock instance on success, NULL on error.
+ */
+extern struct bt_ctf_clock *bt_ctf_trace_get_clock_by_name(
+ struct bt_ctf_trace *trace, const char *name);
+
/*
* bt_ctf_trace_get_metadata_string: get metadata string.
*
extern int bt_ctf_trace_set_packet_header_type(struct bt_ctf_trace *trace,
struct bt_ctf_field_type *packet_header_type);
-/*
- * bt_ctf_trace_get and bt_ctf_trace_put: increment and decrement the
- * trace's reference count.
- *
- * These functions ensure that the trace 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 trace.
- *
- * When the trace's reference count is decremented to 0 by a
- * bt_ctf_trace_put, the trace is freed.
- *
- * @param trace Trace instance.
- */
-extern void bt_ctf_trace_get(struct bt_ctf_trace *trace);
-extern void bt_ctf_trace_put(struct bt_ctf_trace *trace);
-
#ifdef __cplusplus
}
#endif