You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#include <Python.h>
|
|
|
|
static int numargs=0;
|
|
|
|
static PyObject* emb_numargs(PyObject *self, PyObject *args)
|
|
{
|
|
if(!PyArg_ParseTuple(args, ":numargs"))
|
|
return NULL;
|
|
return Py_BuildValue("i", numargs);
|
|
}
|
|
|
|
static PyMethodDef EmbMethods[] = {
|
|
{"numargs", emb_numargs, METH_VARARGS,
|
|
"Return the number of arguments received by the process."},
|
|
{NULL, NULL, 0, NULL}
|
|
};
|
|
|
|
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
|
|
/* Python 3.x code */
|
|
|
|
static struct PyModuleDef embmodule = {
|
|
PyModuleDef_HEAD_INIT,
|
|
"emb", /* name of module */
|
|
"emb_doc", /* module documentation, may be NULL */
|
|
-1, /* size of per-interpreter state of the module,
|
|
or -1 if the module keeps state in global variables. */
|
|
EmbMethods
|
|
};
|
|
|
|
PyMODINIT_FUNC
|
|
PyInit_emb(void)
|
|
{
|
|
(void) PyModule_Create(&embmodule);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
PyImport_AppendInittab("emb", PyInit_emb);
|
|
#endif
|
|
|
|
Py_Initialize();
|
|
numargs = argc;
|
|
|
|
#if PY_VERSION_HEX < 0x03000000
|
|
Py_InitModule("emb", EmbMethods);
|
|
#endif
|
|
|
|
PyRun_SimpleString("import emb; print('Number of arguments', emb.numargs())");
|
|
Py_Finalize();
|
|
return 0;
|
|
}
|