From f8507034753eca08c6f5dcab3e515a72d48e6aa0 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 20 May 2011 09:46:20 -0600 Subject: Improve dmnsn_py_Vector_args() API. --- libdimension-python/Vector.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'libdimension-python/Vector.c') diff --git a/libdimension-python/Vector.c b/libdimension-python/Vector.c index 8cd7f05..3fdc90c 100644 --- a/libdimension-python/Vector.c +++ b/libdimension-python/Vector.c @@ -24,8 +24,22 @@ bool dmnsn_py_Vector_args(dmnsn_vector *v, PyObject *args, PyObject *kwds) { static char *kwlist[] = { "x", "y", "z", NULL }; - return PyArg_ParseTupleAndKeywords(args, kwds, "ddd", kwlist, - &v->x, &v->y, &v->z); + if (PyArg_ParseTupleAndKeywords(args, kwds, "ddd", kwlist, + &v->x, &v->y, &v->z)) { + return true; + } else { + if (kwds) + return false; + + PyErr_Clear(); + + dmnsn_py_Vector *vec; + if (!PyArg_ParseTuple(args, "O!", &dmnsn_py_VectorType, &vec)) + return false; + + *v = vec->v; + return true; + } } static int -- cgit v1.2.3