Passing Named Paramater To A C Func?
John Abel
john.abel at pa.press.net
Tue Apr 29 08:50:05 EDT 2003
Hi,
Thanks for that, its pointed me in the right direction.
Regards
John
Fredrik Lundh wrote:
>John Abel wrote:
>
>
>
>>I'm writing a C function, which will have a Python wrapper, and I wish
>>to be able to pass it an optional, named parameter. For example:
>>
>>def funcName( dirName, fileName=None ):
>>
>> if fileName is None:
>> Some Other Stuff
>>
>> cCall( dirName, fileName )
>>
>>Is the best to handle this in the Python wrapper, or is there a way of
>>handling these via C. None of the extending documents seem to mention
>>anything about this.
>>
>>
>
>to handle named arguments on the C level, use ParseTupleAndKeywords.
>here's an example, taken from the regular expression engine:
>
>static PyObject*
>pattern_match(PatternObject* self, PyObject* args, PyObject* kw)
>{
> ...
>
> PyObject* string;
> int start = 0;
> int end = INT_MAX;
> static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
> if (!PyArg_ParseTupleAndKeywords(args, kw, "O|ii:match", kwlist,
> &string, &start, &end))
> return NULL;
>
>you also have to set the METH_KEYWORDS flag in the PyMethodDef
>table:
>
>static PyMethodDef pattern_methods[] = {
> {"match", (PyCFunction) pattern_match, METH_VARARGS|METH_KEYWORDS},
> ...
>
>:::
>
>in your case, I'm not sure it's really worth the effort, since you
>need to look at the argument at the Python level anyway.
>
></F>
>
>
>
>
>
>
More information about the Python-list
mailing list