Это простой пример из документации по 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(), чтобы убедиться, что это логическое значение
- возможно, есть способ получить переменную любого типа и получить ее истинное значение (т. е. пустой массив будет ложным и т. д.), что обычно делает функция python.
Что-то из этого предпочтительнее? Другие опции?