C Extension, Optional Args?
Alex
cut_me_out at hotmail.com
Wed Sep 13 03:45:00 EDT 2000
Pete's code, with a comment from me:
> static PyObject* simple_func(PyObject* self, PyObject* args)
> {
> MyRect r;
> int val;
> char* nonecatch;
>
> if(PyArg_ParseTuple(args, "(hhhh)i", &r.x, &r.y, &r.w, &r.h, &val))
> return PyInt_FromLong(workrect(&r, val));
>
> if(PyArg_ParseTuple(args, "zi", &nonecatch, &color))
>
> /* Why call with val, here? */
>
> return PyInt_FromLong(workrect(NULL, val));
>
> return NULL;
> }
> i'm trying to figure out a way to change one of the arguments to allow
> "None" to be passed and get some default behaviour
I would use the "O" option. Something like
z_coord = h_coord = val = NULL;
if (!PyArg_ParseTuple(args, "OO|OOO",
&x_coord, &y_coord, &z_coord, &h_coord, &val)) {
return NULL;
}
if (x_coord == NULL) {
/* Convert val to a short int, return workrect(NULL, val) */
}
/* Convert everything to a short int, plug values into r, call
workrect(&r, val) */
It's tedious, though, I suppose.
Alex.
--
Speak softly but carry a big carrot.
More information about the Python-list
mailing list