lasso/python/wrap_objs.c

205 lines
4.9 KiB
C

#include "wrap_objs.h"
/*****************************************************************************/
/* Functions to wrap Python objects -> C objects */
/*****************************************************************************/
xmlChar** PythonStringList_get(PyObject *list_obj) {
int i;
xmlChar **list = NULL;
if (list_obj == Py_None) return NULL;
/* convert Python list into a NULL terminated C list */
list = (xmlChar **) xmlMalloc ((PyList_Size(list_obj)+1)*sizeof (xmlChar *));
for (i=0; i<PyList_Size(list_obj); i++)
list[i] = PyString_AsString(PyList_GetItem(list_obj, i));
list[i] = NULL;
return list;
}
GPtrArray* GPtrArray_get(PyObject *list_obj) {
int i;
GPtrArray *list = NULL;
if (list_obj == Py_None) return NULL;
/* convert Python list into a GLib GPtrArray */
list = g_ptr_array_new();
for (i=0; i<PyList_Size(list_obj); i++) {
g_ptr_array_add(list, PyString_AsString(PyList_GetItem(list_obj, i)));
}
return list;
}
/*****************************************************************************/
/* Functions to wrap C objects -> Python objects */
/*****************************************************************************/
PyObject *int_wrap(int val) {
return (Py_BuildValue("i", val));
}
PyObject *charPtr_wrap(char *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString(str);
/* deallocation */
free (str);
return (ret);
}
PyObject *charPtrConst_wrap(const char *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString(str);
return (ret);
}
/*****************************************************************************/
/* Functions to wrap GLib objects -> Python objects */
/*****************************************************************************/
PyObject* GPtrArray_wrap(GPtrArray *array) {
PyObject *list;
int i;
list = PyList_New(array->len);
for (i=0; i<array->len; i++) {
/* PyList_SetItem(list, i, */
/* PyString_FromString((char *) g_ptr_array_index(array, i))); */
PyList_SET_ITEM(list, i,
PyString_FromString((char *) g_ptr_array_index(array, i)));
}
/* free array */
/* for (i=0; i<array->len; i++) { */
/* xmlFree(array->pdata[i]); */
/* } */
/* g_ptr_array_free(array, TRUE); */
return (list);
}
/*****************************************************************************/
/* Functions to wrap LibXML objects -> Python objects */
/*****************************************************************************/
PyObject* xmlCharPtr_wrap(xmlChar *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString((char *) str);
/* deallocation */
xmlFree(str);
return (ret);
}
PyObject *xmlCharPtrConst_wrap(const xmlChar *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString((char *) str);
return (ret);
}
PyObject *wrap_xmlDocPtr(xmlDocPtr doc) {
PyObject *ret;
if (doc == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyCObject_FromVoidPtrAndDesc((void *) doc, (char *) "xmlDocPtr", NULL);
return (ret);
}
PyObject *wrap_xmlNodePtr(xmlNodePtr node) {
PyObject *ret;
if (node == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyCObject_FromVoidPtrAndDesc((void *) node, (char *) "xmlNodePtr", NULL);
return (ret);
}
PyObject *wrap_xmlNodeSetPtr(xmlNodeSetPtr nset) {
PyObject *ret;
if (nset == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyCObject_FromVoidPtrAndDesc((void *) nset, (char *) "xmlNodeSetPtr", NULL);
return (ret);
}
PyObject *wrap_xmlOutputBufferPtr(xmlOutputBufferPtr buf) {
PyObject *ret;
if (buf == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyCObject_FromVoidPtrAndDesc((void *) buf,
(char *) "xmlOutputBufferPtr", NULL);
return (ret);
}
/*****************************************************************************/
/* Functions to wrap XMLSec objects -> Python objects */
/*****************************************************************************/
PyObject *wrap_xmlSecPtr(xmlSecPtr ptr) {
PyObject *ret;
if (ptr == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = (PyCObject_FromVoidPtr((void *) ptr, NULL));
return (ret);
}
PyObject *wrap_xmlSecBytePtr(xmlSecByte *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString(str);
xmlFree(str);
return (ret);
}
PyObject *wrap_xmlSecBytePtrConst(const xmlSecByte *str) {
PyObject *ret;
if (str == NULL) {
Py_INCREF(Py_None);
return (Py_None);
}
ret = PyString_FromString(str);
return (ret);
}