Это простой пример из документации python (http://docs.python.org/extending/extending.html):
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
return Py_BuildValue("i", sts);
}
Если я хочу передать дополнительный логический параметр функции - какой "правильный" способ сделать это?
Кажется, что нет опции bool для перехода к PyArg_ParseTuple(). Поэтому я подумал о следующем:
- прочитайте целое число и просто используйте значение (поскольку bool является подклассом int)
- вызов PyBool_FromLong() для целого числа
- прочитать и объект и вызвать PyBool_Check(), чтобы убедиться, что это bool
- возможно, есть способ получить любой тип переменной и получить ее значение истинности (т.е. пустой массив будет ложным и т.д.), что обычно делает функция python.
Любое из этих предпочтительных? Другие варианты?