X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/9e103619134c8839d143951c5b814bab500fcdcf..efe7abf81717b6bf1f0e6d66352a4c3615538789:/pypol/_isl.c diff --git a/pypol/_isl.c b/pypol/_isl.c index 974b0c0..7441d46 100644 --- a/pypol/_isl.c +++ b/pypol/_isl.c @@ -1,7 +1,48 @@ +#include + #include -#include +#include +#include + +struct _isl_constraint_list { + int cursor; + PyObject *constraints; +}; +typedef struct _isl_constraint_list _isl_constraint_list; + +int _isl_isl_basic_set_add_constraint_list(__isl_take isl_constraint *c, + void *user) { + _isl_constraint_list *list; + + list = (_isl_constraint_list *) user; + return PyList_SetItem(list->constraints, list->cursor++, + PyLong_FromVoidPtr(c)); +} + +static PyObject * _isl_isl_basic_set_constraints(PyObject *self, + PyObject* args) { + long ptr; + isl_basic_set *bset; + int n; + PyObject *constraints; + _isl_constraint_list *list; + + if (!PyArg_ParseTuple(args, "l", &ptr)) + return NULL; + bset = (isl_basic_set*) ptr; + n = isl_basic_set_n_constraint(bset); + constraints = PyList_New(n); + list = malloc(sizeof(_isl_constraint_list)); + list->cursor = 0; + list->constraints = constraints; + isl_basic_set_foreach_constraint(bset, + _isl_isl_basic_set_add_constraint_list, list); + free(list); + return constraints; +} static PyMethodDef _isl_methods[] = { + {"isl_basic_set_constraints", _isl_isl_basic_set_constraints, METH_VARARGS, NULL}, {NULL, NULL, 0, NULL} };