X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Fnative_bt_plugin.i;h=e96ea6ed77a23e19deb12426a063469b870ec648;hb=0530003ff4f693e0a582a0ed4a15245455398b4a;hp=435d40f2ed7de5b86243d5e26d18bf6710d72baa;hpb=57952005b6a6a0aeb1e4ecb0d7ac0c6786d23dba;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/native_bt_plugin.i b/src/bindings/python/bt2/bt2/native_bt_plugin.i index 435d40f2..e96ea6ed 100644 --- a/src/bindings/python/bt2/bt2/native_bt_plugin.i +++ b/src/bindings/python/bt2/bt2/native_bt_plugin.i @@ -22,110 +22,75 @@ * THE SOFTWARE. */ -/* From plugin-const.h */ - -extern const bt_plugin *bt_plugin_find(const char *plugin_name); - -extern const bt_plugin_set *bt_plugin_find_all_from_file( - const char *path); - -extern const bt_plugin_set *bt_plugin_find_all_from_dir( - const char *path, bt_bool recurse); - -extern const bt_plugin_set *bt_plugin_find_all_from_static(void); - -extern const char *bt_plugin_get_name(const bt_plugin *plugin); - -extern const char *bt_plugin_get_author(const bt_plugin *plugin); - -extern const char *bt_plugin_get_license(const bt_plugin *plugin); - -extern const char *bt_plugin_get_description(const bt_plugin *plugin); - -extern const char *bt_plugin_get_path(const bt_plugin *plugin); - -extern bt_property_availability bt_plugin_get_version( - const bt_plugin *plugin, unsigned int *OUT, - unsigned int *OUT, unsigned int *OUT, const char **OUT); - -extern uint64_t bt_plugin_get_source_component_class_count( - const bt_plugin *plugin); - -extern uint64_t bt_plugin_get_filter_component_class_count( - const bt_plugin *plugin); - -extern uint64_t bt_plugin_get_sink_component_class_count( - const bt_plugin *plugin); - -extern const bt_component_class_source * -bt_plugin_borrow_source_component_class_by_index_const( - const bt_plugin *plugin, uint64_t index); - -extern const bt_component_class_filter * -bt_plugin_borrow_filter_component_class_by_index_const( - const bt_plugin *plugin, uint64_t index); - -extern const bt_component_class_sink * -bt_plugin_borrow_sink_component_class_by_index_const( - 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 void bt_plugin_put_ref(const bt_plugin *plugin); - -/* From plugin-set-const.h */ +/* Output argument typemap for plugin output (always appends) */ +%typemap(in, numinputs=0) + (const bt_plugin **) + (bt_plugin *temp_plugin = NULL) { + $1 = &temp_plugin; +} -extern uint64_t bt_plugin_set_get_plugin_count( - const bt_plugin_set *plugin_set); +%typemap(argout) + (const bt_plugin **) { + if (*$1) { + /* SWIG_Python_AppendOutput() steals the created object */ + $result = SWIG_Python_AppendOutput($result, + SWIG_NewPointerObj(SWIG_as_voidptr(*$1), + SWIGTYPE_p_bt_plugin, 0)); + } else { + /* SWIG_Python_AppendOutput() steals Py_None */ + Py_INCREF(Py_None); + $result = SWIG_Python_AppendOutput($result, Py_None); + } +} -extern const bt_plugin *bt_plugin_set_borrow_plugin_by_index_const( - const bt_plugin_set *plugin_set, uint64_t index); +/* Output argument typemap for plugin set output (always appends) */ +%typemap(in, numinputs=0) + (const bt_plugin_set **) + (bt_plugin_set *temp_plugin_set = NULL) { + $1 = &temp_plugin_set; +} -extern void bt_plugin_set_get_ref(const bt_plugin_set *plugin_set); +%typemap(argout) + (const bt_plugin_set **) { + if (*$1) { + /* SWIG_Python_AppendOutput() steals the created object */ + $result = SWIG_Python_AppendOutput($result, + SWIG_NewPointerObj(SWIG_as_voidptr(*$1), + SWIGTYPE_p_bt_plugin_set, 0)); + } else { + /* SWIG_Python_AppendOutput() steals Py_None */ + Py_INCREF(Py_None); + $result = SWIG_Python_AppendOutput($result, Py_None); + } +} -extern void bt_plugin_set_put_ref(const bt_plugin_set *plugin_set); +%include +%include /* Helpers */ -bt_property_availability bt_plugin_get_version_wrapper( - const bt_plugin *plugin, unsigned int *OUT, - unsigned int *OUT, unsigned int *OUT, const char **OUT); - %{ +#include "native_bt_plugin.i.h" +%} -/* - * This wrapper ensures that when the API function fails, the `*extra` output - * parameter is set to NULL. This is necessary because the epilogue of the - * "char **OUT" typemap will use that value to make a Python str object. We - * can't rely on the initial value of `*extra`, it could point to unreadable - * memory. - */ - -bt_property_availability bt_plugin_get_version_wrapper( +bt_property_availability bt_bt2_plugin_get_version( const bt_plugin *plugin, unsigned int *major, - unsigned int *minor, unsigned int *patch, const char **extra) -{ - bt_property_availability ret; + unsigned int *minor, unsigned int *patch, const char **extra); - ret = bt_plugin_get_version(plugin, major, minor, patch, extra); +bt_plugin_find_status bt_bt2_plugin_find(const char *plugin_name, + bt_bool find_in_std_env_var, bt_bool find_in_user_dir, + bt_bool find_in_sys_dir, bt_bool find_in_static, + bt_bool fail_on_load_error, const bt_plugin **plugin); - if (ret == BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE) { - *extra = NULL; - } +bt_plugin_find_all_status bt_bt2_plugin_find_all(bt_bool find_in_std_env_var, + bt_bool find_in_user_dir, bt_bool find_in_sys_dir, + bt_bool find_in_static, bt_bool fail_on_load_error, + const bt_plugin_set **plugin_set); - return ret; -} +bt_plugin_find_all_from_file_status bt_bt2_plugin_find_all_from_file( + const char *path, bt_bool fail_on_load_error, + const bt_plugin_set **plugin_set); -%} +bt_plugin_find_all_from_dir_status bt_bt2_plugin_find_all_from_dir( + const char *path, bt_bool recurse, bt_bool fail_on_load_error, + const bt_plugin_set **plugin_set);