X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bindings%2Fpython%2Fbt2%2Fbt2%2Fnative_bt.i;h=b1e2d27df70382341801768cd98dc0ab918401d8;hb=fdafa2c0ecb74b49e9e494bdcb8e96800497f127;hp=ad22797384b44c84e4683ec485f57d9dcfce5f6f;hpb=dc43190b29953dd4aa2bbcdc86b34fb47d76a62c;p=deliverable%2Fbabeltrace.git diff --git a/bindings/python/bt2/bt2/native_bt.i b/bindings/python/bt2/bt2/native_bt.i index ad2279738..b1e2d27df 100644 --- a/bindings/python/bt2/bt2/native_bt.i +++ b/bindings/python/bt2/bt2/native_bt.i @@ -33,8 +33,10 @@ #include "logging.h" #include +#include +#include -typedef const unsigned char *BTUUID; +typedef const uint8_t *bt_uuid; %} typedef int bt_bool; @@ -42,16 +44,20 @@ typedef int bt_bool; /* For uint*_t/int*_t */ %include "stdint.i" -/* Remove `bt_` and `BT_` prefixes from function names and enumeration items */ +/* + * Remove `bt_` and `BT_` prefixes from function names, global variables and + * enumeration items + */ %rename("%(strip:[bt_])s", %$isfunction) ""; +%rename("%(strip:[bt_])s", %$isvariable) ""; %rename("%(strip:[BT_])s", %$isenumitem) ""; /* Output argument typemap for string output (always appends) */ -%typemap(in, numinputs=0) const char **BTOUTSTR (char *temp_value = NULL) { +%typemap(in, numinputs=0) (const char **OUT) (char *temp_value) { $1 = &temp_value; } -%typemap(argout) const char **BTOUTSTR { +%typemap(argout) (const char **OUT) { if (*$1) { /* SWIG_Python_AppendOutput() steals the created object */ $result = SWIG_Python_AppendOutput($result, SWIG_Python_str_FromChar(*$1)); @@ -62,31 +68,17 @@ typedef int bt_bool; } } -/* Output argument typemap for field type output (always appends) */ -%typemap(in, numinputs=0) struct bt_ctf_field_type **BTOUTFT (struct bt_ctf_field_type *temp_ft = NULL) { - $1 = &temp_ft; -} - -%typemap(argout) struct bt_ctf_field_type **BTOUTFT { - if (*$1) { - /* SWIG_Python_AppendOutput() steals the created object */ - $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(*$1), SWIGTYPE_p_bt_ctf_field_type, 0)); - } else { - /* SWIG_Python_AppendOutput() steals Py_None */ - Py_INCREF(Py_None); - $result = SWIG_Python_AppendOutput($result, Py_None); - } -} - -/* Output argument typemap for component output (always appends) */ -%typemap(in, numinputs=0) struct bt_component **BTOUTCOMP (struct bt_component *temp_comp = NULL) { - $1 = &temp_comp; +/* Output argument typemap for value output (always appends) */ +%typemap(in, numinputs=0) (bt_value **OUT) (struct bt_value *temp_value = NULL) { + $1 = &temp_value; } -%typemap(argout) struct bt_component **BTOUTCOMP { +%typemap(argout) (bt_value **OUT) { if (*$1) { /* SWIG_Python_AppendOutput() steals the created object */ - $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(*$1), SWIGTYPE_p_bt_component, 0)); + $result = SWIG_Python_AppendOutput($result, + SWIG_NewPointerObj(SWIG_as_voidptr(*$1), + SWIGTYPE_p_bt_value, 0)); } else { /* SWIG_Python_AppendOutput() steals Py_None */ Py_INCREF(Py_None); @@ -94,79 +86,50 @@ typedef int bt_bool; } } -/* Output argument typemap for connection output (always appends) */ -%typemap(in, numinputs=0) struct bt_connection **BTOUTCONN (struct bt_connection *temp_conn = NULL) { - $1 = &temp_conn; -} - -%typemap(argout) struct bt_connection **BTOUTCONN { - if (*$1) { - /* SWIG_Python_AppendOutput() steals the created object */ - $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(*$1), SWIGTYPE_p_bt_connection, 0)); - } else { - /* SWIG_Python_AppendOutput() steals Py_None */ - Py_INCREF(Py_None); - $result = SWIG_Python_AppendOutput($result, Py_None); - } +/* Output argument typemap for initialized uint64_t output parameter (always appends) */ +%typemap(in, numinputs=0) (uint64_t *OUT) (uint64_t temp) { + $1 = &temp; } -/* Output argument typemap for private port output (always appends) */ -%typemap(in, numinputs=0) struct bt_private_port **BTOUTPRIVPORT (struct bt_private_port *temp_priv_port = NULL) { - $1 = &temp_priv_port; +%typemap(argout) uint64_t *OUT { + $result = SWIG_Python_AppendOutput(resultobj, + SWIG_From_unsigned_SS_long_SS_long((*$1))); } -%typemap(argout) struct bt_private_port **BTOUTPRIVPORT { - if (*$1) { - /* SWIG_Python_AppendOutput() steals the created object */ - $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(*$1), SWIGTYPE_p_bt_private_port, 0)); - } else { - /* SWIG_Python_AppendOutput() steals Py_None */ - Py_INCREF(Py_None); - $result = SWIG_Python_AppendOutput($result, Py_None); - } -} - -/* Output argument typemap for value output (always appends) */ -%typemap(in, numinputs=0) struct bt_value **BTOUTVALUE (struct bt_value *temp_value = NULL) { - $1 = &temp_value; +/* Output argument typemap for initialized int64_t output parameter (always appends) */ +%typemap(in, numinputs=0) (int64_t *OUT) (int64_t temp) { + $1 = &temp; } -%typemap(argout) struct bt_value **BTOUTVALUE { - if (*$1) { - /* SWIG_Python_AppendOutput() steals the created object */ - $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(*$1), SWIGTYPE_p_bt_value, 0)); - } else { - /* SWIG_Python_AppendOutput() steals Py_None */ - Py_INCREF(Py_None); - $result = SWIG_Python_AppendOutput($result, Py_None); - } +%typemap(argout) (int64_t *OUT) { + $result = SWIG_Python_AppendOutput(resultobj, SWIG_From_long_SS_long((*$1))); } -/* Output argument typemap for initialized uint64_t output parameter (always appends) */ -%typemap(in, numinputs=0) uint64_t *OUTPUTINIT (uint64_t temp = -1ULL) { +/* Output argument typemap for initialized unsigned int output parameter (always appends) */ +%typemap(in, numinputs=0) (unsigned int *OUT) (unsigned int temp) { $1 = &temp; } -%typemap(argout) uint64_t *OUTPUTINIT { - $result = SWIG_Python_AppendOutput(resultobj, SWIG_From_unsigned_SS_long_SS_long((*$1))); +%typemap(argout) (unsigned int *OUT) { + $result = SWIG_Python_AppendOutput(resultobj, + SWIG_From_unsigned_SS_long_SS_long((uint64_t) (*$1))); } - -/* Output argument typemap for initialized unsigned int output parameter (always appends) */ -%typemap(in, numinputs=0) unsigned int *OUTPUTINIT (unsigned int temp = -1) { +/* Output argument typemap for initialized double output parameter (always appends) */ +%typemap(in, numinputs=0) (double *OUT) (double temp) { $1 = &temp; } -%typemap(argout) unsigned int *OUTPUTINIT { - $result = SWIG_Python_AppendOutput(resultobj, SWIG_From_unsigned_SS_long_SS_long((uint64_t) (*$1))); +%typemap(argout) (double *OUT) { + $result = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*$1))); } /* Input argument typemap for UUID bytes */ -%typemap(in) BTUUID { +%typemap(in) bt_uuid { $1 = (unsigned char *) PyBytes_AsString($input); } /* Output argument typemap for UUID bytes */ -%typemap(out) BTUUID { +%typemap(out) bt_uuid { if (!$1) { Py_INCREF(Py_None); $result = Py_None; @@ -175,6 +138,22 @@ typedef int bt_bool; } } +/* Input argument typemap for bt_bool */ +%typemap(in) bt_bool { + $1 = PyObject_IsTrue($input); +} + +/* Output argument typemap for bt_bool */ +%typemap(out) bt_bool { + if ($1 > 0) { + $result = Py_True; + } else { + $result = Py_False; + } + Py_INCREF($result); + return $result; +} + /* * Input and output argument typemaps for raw Python objects (direct). * @@ -192,65 +171,35 @@ typedef int bt_bool; $result = $1; } -%{ -static enum bt_notification_type *bt_py3_notif_types_from_py_list( - PyObject *py_notif_types) -{ - enum bt_notification_type *notification_types = NULL; - size_t i; - - assert(!PyErr_Occurred()); +/* From property.h */ - if (py_notif_types == Py_None) { - goto end; - } - - assert(PyList_Check(py_notif_types)); - notification_types = g_new0(enum bt_notification_type, - PyList_Size(py_notif_types) + 1); - assert(notification_types); - notification_types[PyList_Size(py_notif_types)] = - BT_NOTIFICATION_TYPE_SENTINEL; - - for (i = 0; i < PyList_Size(py_notif_types); i++) { - PyObject *item = PyList_GetItem(py_notif_types, i); - long value; - int overflow; - - assert(item); - assert(PyLong_Check(item)); - value = PyLong_AsLongAndOverflow(item, &overflow); - assert(overflow == 0); - notification_types[i] = value; - } - -end: - return notification_types; -} -%} +typedef enum bt_property_availability { + BT_PROPERTY_AVAILABILITY_AVAILABLE, + BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE, +} bt_property_availability; /* Per-module interface files */ -%include "native_btccpriomap.i" -%include "native_btclockclass.i" -%include "native_btcomponent.i" -%include "native_btcomponentclass.i" -%include "native_btconnection.i" -%include "native_btctfwriter.i" -%include "native_btevent.i" -%include "native_bteventclass.i" -%include "native_btfields.i" -%include "native_btft.i" -%include "native_btgraph.i" -%include "native_btlogging.i" -%include "native_btnotification.i" -%include "native_btnotifiter.i" -%include "native_btpacket.i" -%include "native_btplugin.i" -%include "native_btport.i" -%include "native_btqueryexec.i" -%include "native_btref.i" -%include "native_btstream.i" -%include "native_btstreamclass.i" -%include "native_bttrace.i" -%include "native_btvalues.i" -%include "native_btversion.i" +%include "native_bt_clock_class.i" +%include "native_bt_clock_snapshot.i" +%include "native_bt_component.i" +%include "native_bt_component_class.i" +%include "native_bt_connection.i" +%include "native_bt_event.i" +%include "native_bt_event_class.i" +%include "native_bt_field.i" +%include "native_bt_field_class.i" +%include "native_bt_field_path.i" +%include "native_bt_graph.i" +%include "native_bt_logging.i" +%include "native_bt_message.i" +%include "native_bt_notifier.i" +%include "native_bt_packet.i" +%include "native_bt_plugin.i" +%include "native_bt_port.i" +%include "native_bt_query_exec.i" +%include "native_bt_stream.i" +%include "native_bt_stream_class.i" +%include "native_bt_trace.i" +%include "native_bt_trace_class.i" +%include "native_bt_value.i" +%include "native_bt_version.i"