X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin-const.h;h=fe581f4edc3e208510ca93301260e18c9dc77eef;hb=b19ff26f04df428047676dd736bd7cc9473906fe;hp=906bf062ac848d6f9e19584a34238a40cc09a256;hpb=92fed4e1f98f18e4edbfdf5adfe57741a3260b5d;p=babeltrace.git diff --git a/include/babeltrace/plugin/plugin-const.h b/include/babeltrace/plugin/plugin-const.h index 906bf062..fe581f4e 100644 --- a/include/babeltrace/plugin/plugin-const.h +++ b/include/babeltrace/plugin/plugin-const.h @@ -2,8 +2,8 @@ #define BABELTRACE_PLUGIN_PLUGIN_CONST_H /* + * Copyright 2017-2018 Philippe Proulx * Copyright 2016 Jérémie Galarneau - * Copyright 2017 Philippe Proulx * * Author: Jérémie Galarneau * @@ -29,7 +29,11 @@ #include #include -/* For bt_bool */ +/* + * For bt_bool, bt_plugin, bt_plugin_set, bt_component_class, + * bt_component_class_source, bt_component_class_filter, + * bt_component_class_sink + */ #include /* For enum bt_component_class_type */ @@ -51,75 +55,85 @@ extern "C" { #endif -struct bt_plugin; -struct bt_plugin_set; -struct bt_component_class; -struct bt_component_class_source; -struct bt_component_class_filter; -struct bt_component_class_sink; - enum bt_plugin_status { BT_PLUGIN_STATUS_OK = 0, BT_PLUGIN_STATUS_ERROR = -1, BT_PLUGIN_STATUS_NOMEM = -12, }; -extern const struct bt_plugin *bt_plugin_find(const char *plugin_name); +extern const bt_plugin *bt_plugin_find(const char *plugin_name); -extern const struct bt_plugin_set *bt_plugin_create_all_from_file( +extern const bt_plugin_set *bt_plugin_create_all_from_file( const char *path); -extern const struct bt_plugin_set *bt_plugin_create_all_from_dir( +extern const bt_plugin_set *bt_plugin_create_all_from_dir( const char *path, bt_bool recurse); -extern const struct bt_plugin_set *bt_plugin_create_all_from_static(void); +extern const bt_plugin_set *bt_plugin_create_all_from_static(void); -extern const char *bt_plugin_get_name(const struct bt_plugin *plugin); +extern const char *bt_plugin_get_name(const bt_plugin *plugin); -extern const char *bt_plugin_get_author(const struct bt_plugin *plugin); +extern const char *bt_plugin_get_author(const bt_plugin *plugin); -extern const char *bt_plugin_get_license(const struct bt_plugin *plugin); +extern const char *bt_plugin_get_license(const bt_plugin *plugin); -extern const char *bt_plugin_get_description(const struct bt_plugin *plugin); +extern const char *bt_plugin_get_description(const bt_plugin *plugin); -extern const char *bt_plugin_get_path(const struct bt_plugin *plugin); +extern const char *bt_plugin_get_path(const bt_plugin *plugin); extern enum bt_property_availability bt_plugin_get_version( - const struct bt_plugin *plugin, unsigned int *major, + const bt_plugin *plugin, unsigned int *major, unsigned int *minor, unsigned int *patch, const char **extra); extern uint64_t bt_plugin_get_source_component_class_count( - const struct bt_plugin *plugin); + const bt_plugin *plugin); extern uint64_t bt_plugin_get_filter_component_class_count( - const struct bt_plugin *plugin); + const bt_plugin *plugin); extern uint64_t bt_plugin_get_sink_component_class_count( - const struct bt_plugin *plugin); + const bt_plugin *plugin); -extern struct bt_component_class_source * +extern const bt_component_class_source * bt_plugin_borrow_source_component_class_by_index_const_const( - const struct bt_plugin *plugin, uint64_t index); + const bt_plugin *plugin, uint64_t index); -extern struct bt_component_class_filter * +extern const bt_component_class_filter * bt_plugin_borrow_filter_component_class_by_index_const( - const struct bt_plugin *plugin, uint64_t index); + const bt_plugin *plugin, uint64_t index); -extern struct bt_component_class_sink * +extern const bt_component_class_sink * bt_plugin_borrow_sink_component_class_by_index_const( - const struct bt_plugin *plugin, uint64_t index); + const bt_plugin *plugin, uint64_t index); + +extern const bt_component_class_source * +bt_plugin_borrow_source_component_class_by_name_const( + const bt_plugin *plugin, const char *name); + +extern const bt_component_class_filter * +bt_plugin_borrow_filter_component_class_by_name_const( + const bt_plugin *plugin, const char *name); + +extern const bt_component_class_sink * +bt_plugin_borrow_sink_component_class_by_name_const( + const bt_plugin *plugin, const char *name); + +extern void bt_plugin_get_ref(const bt_plugin *plugin); -extern struct bt_component_class_source * -bt_plugin_borrow_source_component_class_by_name_const(const struct bt_plugin *plugin, - const char *name); +extern void bt_plugin_put_ref(const bt_plugin *plugin); -extern struct bt_component_class_filter * -bt_plugin_borrow_filter_component_class_by_name_const(const struct bt_plugin *plugin, - const char *name); +#define BT_PLUGIN_PUT_REF_AND_RESET(_var) \ + do { \ + bt_plugin_put_ref(_var); \ + (_var) = NULL; \ + } while (0) -extern struct bt_component_class_sink * -bt_plugin_borrow_sink_component_class_by_name_const(const struct bt_plugin *plugin, - const char *name); +#define BT_PLUGIN_MOVE_REF(_var_dst, _var_src) \ + do { \ + bt_plugin_put_ref(_var_dst); \ + (_var_dst) = (_var_src); \ + (_var_src) = NULL; \ + } while (0) #ifdef __cplusplus }