diff --git a/src/libdap-python.c b/src/libdap-python.c index e477e23753704d160c9769628858351448b1ada8..dbe6ac15d29a723ea66e20b07b79c92ea88d4e42 100644 --- a/src/libdap-python.c +++ b/src/libdap-python.c @@ -120,3 +120,25 @@ PyObject* py_m_dap_config_get_item_default(PyObject *self, PyObject *args){ const char *res = dap_config_get_item_str_default(g_config, section_path, item_name, def); return Py_BuildValue("s", res); } + +PyObject *dapListToPyList(dap_list_t *list ){ + unsigned int len = dap_list_length(list); + PyObject *obj = PyList_New((Py_ssize_t)len); + for (unsigned int l = 0; l <len; l++){ + void *data = dap_list_nth_data(list, l); + PyObject *obj_data = PyBytes_FromString((const char*)data); + PyList_Append(obj, obj_data); + } + return obj; +} + +dap_list_t *pyListToDapList(PyObject *list ){ + Py_ssize_t len = PyList_Size(list); + dap_list_t *dap_list = dap_list_alloc(); + for (Py_ssize_t i = 0; i < len; i++){ + PyObject *obj = PyList_GetItem(list, i); + void *data = PyBytes_AsString(obj); + dap_list = dap_list_append(dap_list, data); + } + return dap_list; +} diff --git a/src/libdap-python.h b/src/libdap-python.h index b64b47c4666bffc2d85d7cf8547334f28425a4ae..8e10eba87f554b80c9faf472cb78d5fd9ee50385 100644 --- a/src/libdap-python.h +++ b/src/libdap-python.h @@ -3,6 +3,7 @@ #include <Python.h> #include "dap_config.h" #include "dap_common.h" +#include "dap_list.h" #ifdef __cplusplus extern "C" { @@ -78,6 +79,10 @@ static PyTypeObject DapObject_DapObjectType = { PyType_GenericNew, /* tp_new */ }; +PyObject *dapListToPyList(dap_list_t *list); + +dap_list_t *pyListToDapList(PyObject *list); + #ifdef __cplusplus } #endif