/*** c4py.c ***/
#include <python/Python.h>

//реализация функции hipot() для Python
//val - тьюпл с аргументами вызова функции
static PyObject *HipotCmd(PyObject *self,PyObject *val)
{
    double a,b,c;
    //получаем переданные в функцию аргументы (определены два аргумента типа double)
    if(!PyArg_ParseTuple(val,"dd",&a,&b))
        return NULL;
    //вычисляем результат - длину гипотенузы 
    c = sqrt(a*a+b*b);
    //преобразуем результат в объект Python и возвращаем результат преобразования интерпретатору
    return Py_BuildValue("d",c);
}

//таблица методов модуля для интерпретатора
static PyMethodDef threeMethods[] = {
    {"hipot",HipotCmd,METH_VARARGS,"Calc hipotenuse"},
    {NULL,NULL,0,NULL}
};

//инициализация модуля three
void initthree(void)
{
    Py_InitModule("three",threeMethods);
}
