On 2019-11-18 07:52, R.Wieser wrote:
Hello all,
I'm trying to edit a binary extension to Python, and have a situation where
I would like to create method which adds a single argument, and than jumps
to / calls another method. Like this:
static PyObject *py_proc1(PyObject *self, PyObject *args)
{
....
Py_RETURN_NONE
}
static PyObject *py_proc2(PyObject *self, PyObject *args)
{
// call py_proc1 to with "foo" prepended to "args"
}
I have no idea how I should do either the call or the adding of that
argument (and going to a few examples I've found googeling didn't show me
the answer either).
Than again, I'm not even sure if the "foo" needs to be prepended, or if that
"py_proc1" method can receive more than a single "args" argument ... Like
this perhaps:
static PyObject *py_proc1(PyObject *self, int MyNewArgument, PyObject *args)
{
....
}
I've also tried to go the C way (just calling, from "py_proc2", a C function
containing "py_proc1"s code), but I got lots of errors, most of them in the
realm of the different returns not being of the same type (no idea why it
doesn't complain about it in the origional "py_proc1" code itself though).
tl;dr:
I could use some examples that show how to work withl PyObject subfunctions.
Regards,
Rudy Wieser
P.s.
Yes, this is related to my earlier questions and problems.
One possibility is to refactor the code so that py_proc1 and py_proc2
themselves just handle their arguments and then call the function that
does the actual work.
A clunkier way would be to make a new tuple that consists of the
prepended item and the items of args and pass that to py_proc1 as its
args. When py_proc1 returns its result object, DECREF the new tuple to
clean up and then return the result object.
--
https://mail.python.org/mailman/listinfo/python-list