X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fpython%2Fsigrok%2Fcore%2Flowlevel.i;h=f50d4d0f75d2f53038fde466333db5e9a4c3dcce;hb=115f82939661da6ad2d26d5ceca709bbc0ad25b5;hp=576af5cbd42d5a8e01f5464ba6ae9cf9296d1788;hpb=50985c2019b2b5a6ce394589d89ee925b4f5e3a9;p=libsigrok.git diff --git a/bindings/python/sigrok/core/lowlevel.i b/bindings/python/sigrok/core/lowlevel.i index 576af5cb..f50d4d0f 100644 --- a/bindings/python/sigrok/core/lowlevel.i +++ b/bindings/python/sigrok/core/lowlevel.i @@ -78,8 +78,36 @@ PyObject *cdata(const void *data, unsigned long 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);