X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Ftrace-ir%2Ftrace-const.h;h=15031029d9836a55e0e98da8f61f8bd620459727;hb=7e69c04f557e46fb50e5a888a3bc3451afbd3b8e;hp=d5987801147823d4b0de8aadd81ff6052f647366;hpb=e2f7325d1e58710ee928373592adcee466f93d06;p=babeltrace.git diff --git a/include/babeltrace/trace-ir/trace-const.h b/include/babeltrace/trace-ir/trace-const.h index d5987801..15031029 100644 --- a/include/babeltrace/trace-ir/trace-const.h +++ b/include/babeltrace/trace-ir/trace-const.h @@ -27,7 +27,10 @@ * http://www.efficios.com/ctf */ -/* For bt_bool, bt_uuid */ +/* + * For bt_bool, bt_uuid, bt_trace, bt_stream, bt_stream_class, + * bt_field_class, bt_value + */ #include #include @@ -36,40 +39,51 @@ extern "C" { #endif -struct bt_trace; -struct bt_stream; -struct bt_stream_class; -struct bt_field_class; -struct bt_value; +typedef enum bt_trace_status { + BT_TRACE_STATUS_OK = 0, + BT_TRACE_STATUS_NOMEM = -12, +} bt_trace_status; + +typedef void (* bt_trace_destruction_listener_func)( + const bt_trace *trace, void *data); + +extern const bt_trace_class *bt_trace_borrow_class_const( + const bt_trace *trace); -typedef void (* bt_trace_is_static_listener_func)(const struct bt_trace *trace, - void *data); +extern const char *bt_trace_get_name(const bt_trace *trace); -typedef void (* bt_trace_listener_removed_func)(const struct bt_trace *trace, - void *data); +extern uint64_t bt_trace_get_stream_count(const bt_trace *trace); -extern const struct bt_trace_class *bt_trace_borrow_class_const( - const struct bt_trace *trace); +extern const bt_stream *bt_trace_borrow_stream_by_index_const( + const bt_trace *trace, uint64_t index); -extern const char *bt_trace_get_name(const struct bt_trace *trace); +extern const bt_stream *bt_trace_borrow_stream_by_id_const( + const bt_trace *trace, uint64_t id); -extern uint64_t bt_trace_get_stream_count(const struct bt_trace *trace); +extern bt_trace_status bt_trace_add_destruction_listener( + const bt_trace *trace, + bt_trace_destruction_listener_func listener, + void *data, uint64_t *listener_id); -extern const struct bt_stream *bt_trace_borrow_stream_by_index_const( - const struct bt_trace *trace, uint64_t index); +extern bt_trace_status bt_trace_remove_destruction_listener( + const bt_trace *trace, uint64_t listener_id); -extern const struct bt_stream *bt_trace_borrow_stream_by_id_const( - const struct bt_trace *trace, uint64_t id); +extern void bt_trace_get_ref(const bt_trace *trace); -extern bt_bool bt_trace_is_static(const struct bt_trace *trace); +extern void bt_trace_put_ref(const bt_trace *trace); -extern int bt_trace_add_is_static_listener(const struct bt_trace *trace, - bt_trace_is_static_listener_func listener, - bt_trace_listener_removed_func listener_removed, void *data, - uint64_t *listener_id); +#define BT_TRACE_PUT_REF_AND_RESET(_var) \ + do { \ + bt_trace_put_ref(_var); \ + (_var) = NULL; \ + } while (0) -extern int bt_trace_remove_is_static_listener(const struct bt_trace *trace, - uint64_t listener_id); +#define BT_TRACE_MOVE_REF(_var_dst, _var_src) \ + do { \ + bt_trace_put_ref(_var_dst); \ + (_var_dst) = (_var_src); \ + (_var_src) = NULL; \ + } while (0) #ifdef __cplusplus }