#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/compiler-internal.h>
-#include <babeltrace/ref.h>
-#include <babeltrace/plugin/plugin.h>
+#include <babeltrace/plugin/plugin-const.h>
#include <babeltrace/plugin/plugin-internal.h>
#include <babeltrace/graph/component-class.h>
#include <babeltrace/graph/component-class-internal.h>
{
PyObject *py_bt2_py_plugin_mod = NULL;
const char *dis_python_env;
+#ifndef __MINGW32__
sighandler_t old_sigint = signal(SIGINT, SIG_DFL);
+#endif
if (python_state != PYTHON_STATE_NOT_INITED) {
goto end;
python_state = PYTHON_STATE_FULLY_INITIALIZED;
end:
+#ifndef __MINGW32__
if (old_sigint != SIG_ERR) {
(void) signal(SIGINT, old_sigint);
}
+#endif
print_python_traceback_warn();
pyerr_clear();
}
static
-struct bt_plugin *bt_plugin_from_python_plugin_info(PyObject *plugin_info)
+const bt_plugin *bt_plugin_from_python_plugin_info(PyObject *plugin_info)
{
- struct bt_plugin *plugin = NULL;
+ const bt_plugin *plugin = NULL;
PyObject *py_name = NULL;
PyObject *py_author = NULL;
PyObject *py_description = NULL;
const char *version_extra = NULL;
int ret;
- assert(plugin_info);
- assert(python_state == PYTHON_STATE_FULLY_INITIALIZED);
+ BT_ASSERT(plugin_info);
+ BT_ASSERT(python_state == PYTHON_STATE_FULLY_INITIALIZED);
py_name = PyObject_GetAttrString(plugin_info, "name");
if (!py_name) {
BT_LOGW("Cannot find `name` attribute in Python plugin info object: "
PyObject *py_minor = PyTuple_GetItem(py_version, 1);
PyObject *py_patch = PyTuple_GetItem(py_version, 2);
- assert(py_major);
- assert(py_minor);
- assert(py_patch);
+ BT_ASSERT(py_major);
+ BT_ASSERT(py_minor);
+ BT_ASSERT(py_patch);
if (PyLong_Check(py_major)) {
major = PyLong_AsUnsignedLong(py_major);
if (PyTuple_Size(py_version) >= 4) {
PyObject *py_extra = PyTuple_GetItem(py_version, 3);
- assert(py_extra);
+ BT_ASSERT(py_extra);
if (PyUnicode_Check(py_extra)) {
version_extra = PyUnicode_AsUTF8(py_extra);
size_t i;
for (i = 0; i < PyList_Size(py_comp_class_addrs); i++) {
- struct bt_component_class *comp_class;
+ bt_component_class *comp_class;
PyObject *py_comp_class_addr;
py_comp_class_addr =
PyList_GetItem(py_comp_class_addrs, i);
- assert(py_comp_class_addr);
+ BT_ASSERT(py_comp_class_addr);
if (PyLong_Check(py_comp_class_addr)) {
- comp_class = (struct bt_component_class *)
+ comp_class = (bt_component_class *)
PyLong_AsUnsignedLongLong(py_comp_class_addr);
} else {
BT_LOGW("Component class address is not an integer in Python plugin info object: "
error:
print_python_traceback_warn();
pyerr_clear();
- BT_PUT(plugin);
+ BT_OBJECT_PUT_REF_AND_RESET(plugin);
end:
Py_XDECREF(py_name);
}
G_MODULE_EXPORT
-struct bt_plugin_set *bt_plugin_python_create_all_from_file(const char *path)
+bt_plugin_set *bt_plugin_python_create_all_from_file(const char *path)
{
- struct bt_plugin_set *plugin_set = NULL;
- struct bt_plugin *plugin = NULL;
+ bt_plugin_set *plugin_set = NULL;
+ const bt_plugin *plugin = NULL;
PyObject *py_plugin_info = NULL;
gchar *basename = NULL;
size_t path_len;
- assert(path);
+ BT_ASSERT(path);
if (python_state == PYTHON_STATE_CANNOT_INITIALIZE) {
/*
goto end;
error:
- BT_PUT(plugin_set);
+ BT_OBJECT_PUT_REF_AND_RESET(plugin_set);
end:
- bt_put(plugin);
+ bt_plugin_put_ref(plugin);
Py_XDECREF(py_plugin_info);
g_free(basename);
return plugin_set;