#include static char cc_doc[] = "This module demonstrates the various calling conventions that the\n\ Python/C API offers."; static PyObject* cc_varargs(PyObject *self, PyObject *args) { return PyString_FromFormat("received %d arguments", PyTuple_Size(args)); } static char cc_varargs_doc[] = "varargs(*args) -> string"; static PyObject* cc_o(PyObject *self, PyObject *arg) { return PyString_FromFormat("received 1 arguments of type %.500s", arg->ob_type->tp_name); } static char cc_o_doc[] = ""; static PyObject* cc_noargs(PyObject *self, PyObject *noarg) { return PyString_FromFormat("received no arguments, noarg is %p", noarg); } static char cc_noargs_doc[] = ""; static PyObject* cc_keywords(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *arg; static char* kwlist[] = {"arg", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:keywords", kwlist, &arg)) return NULL; Py_INCREF(Py_None); return Py_None; } static char cc_keywords_doc[] = ""; static PyMethodDef cc_methods[] = { {"varargs", cc_varargs, METH_VARARGS, cc_varargs_doc}, {"o", cc_o, METH_O, cc_o_doc}, {"noargs", cc_noargs, METH_NOARGS, cc_noargs_doc}, {"keywords", (PyCFunction)cc_keywords, METH_KEYWORDS, cc_keywords_doc}, {NULL, NULL} }; PyMODINIT_FUNC initcallingconventions(void) { Py_InitModule3("callingconventions", cc_methods, cc_doc); }