X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fpython%2Fsigrok%2Fcore%2Flowlevel.i;h=f50d4d0f75d2f53038fde466333db5e9a4c3dcce;hb=660e398fe9f5fc608787f8fd75a9df8aac61026f;hp=28abd50d7850ee8cb280adf5c74ca93835910955;hpb=a25932e08c6b7424fec07bb2295fadd613294075;p=libsigrok.git diff --git a/bindings/python/sigrok/core/lowlevel.i b/bindings/python/sigrok/core/lowlevel.i index 28abd50d..f50d4d0f 100644 --- a/bindings/python/sigrok/core/lowlevel.i +++ b/bindings/python/sigrok/core/lowlevel.i @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the libsigrok project. * * Copyright (C) 2013 Martin Ling * @@ -69,6 +69,45 @@ int sr_session_datafeed_python_callback_add(PyObject *cb) } } +PyObject *cdata(const void *data, unsigned long size) +{ +#if PY_MAJOR_VERSION < 3 + return PyString_FromStringAndSize(data, size); +#else + return PyBytes_FromStringAndSize(data, size); +#endif +} + +GSList *python_to_gslist(PyObject *pylist) +{ + if (PyList_Check(pylist)) { + GSList *gslist = NULL; + int size = PyList_Size(pylist); + int i; + for (i = size - 1; i >= 0; i--) { + SwigPyObject *o = (SwigPyObject *)PyList_GetItem(pylist, i); + void *data = o->ptr; + gslist = g_slist_prepend(gslist, data); + } + return gslist; + } + return NULL; +} + +PyObject *gslist_to_python(GSList *gslist) +{ + PyObject *pylist = PyList_New(0); + GSList *l; + for (l = gslist; l; l = l->next) + PyList_Append(pylist, SWIG_NewPointerObj(l->data, SWIGTYPE_p_void, 0)); + return pylist; +} + %} int sr_session_datafeed_python_callback_add(PyObject *cb); + +PyObject *cdata(const void *data, unsigned long size); + +GSList *python_to_gslist(PyObject *pylist); +PyObject *gslist_to_python(GSList *gslist);