Move to kernel style SPDX license identifiers
[babeltrace.git] / src / bindings / python / bt2 / bt2 / native_bt_trace.i.h
CommitLineData
4212232c 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
4212232c
PP
3 *
4 * Copyright (c) 2016 Philippe Proulx <pproulx@efficios.com>
4212232c
PP
5 */
6
7static void
8trace_destroyed_listener(const bt_trace *trace, void *py_callable)
9{
10 PyObject *py_trace_ptr = NULL;
11 PyObject *py_res = NULL;
12
13 py_trace_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(trace),
14 SWIGTYPE_p_bt_trace, 0);
15 if (!py_trace_ptr) {
16 BT_LOGF_STR("Failed to create a SWIG pointer object.");
498e7994 17 bt_common_abort();
4212232c
PP
18 }
19
20 py_res = PyObject_CallFunction(py_callable, "(O)", py_trace_ptr);
6dbc1938 21 if (!py_res) {
981f33dd 22 logw_exception_clear(BT_LOG_OUTPUT_LEVEL);
6dbc1938 23 goto end;
4212232c
PP
24 }
25
6dbc1938
SM
26 BT_ASSERT(py_res == Py_None);
27
28end:
4212232c
PP
29 Py_DECREF(py_trace_ptr);
30 Py_XDECREF(py_res);
31}
32
33static
34int bt_bt2_trace_add_destruction_listener(bt_trace *trace,
35 PyObject *py_callable, bt_listener_id *id)
36{
37 bt_trace_add_listener_status status;
38
39 BT_ASSERT(trace);
40 BT_ASSERT(py_callable);
41 status = bt_trace_add_destruction_listener(
42 trace, trace_destroyed_listener, py_callable, id);
43 if (status == __BT_FUNC_STATUS_OK) {
44 Py_INCREF(py_callable);
45 }
46
47 return status;
48}
This page took 0.042941 seconds and 4 git commands to generate.