44 Py_XINCREF (
function);
45 Py_XINCREF (arguments);
51 Py_XDECREF (
function);
52 Py_XDECREF (arguments);
58 PyObject *py_arg = arguments ? Py_BuildValue (
"(O)",arguments) : NULL;
59 PyObject* val = make_call (py_arg);
68 PyObject *py_arg = arguments ? Py_BuildValue (
"(O)",arguments) : NULL;
69 PyObject* val = make_call (py_arg);
71 if (val) retval = PyInt_AsLong (val);
82 if (arguments) py_arg = Py_BuildValue (
"(i,O)", arg, arguments);
83 else py_arg = Py_BuildValue (
"(i)", arg);
85 PyObject * val = make_call (py_arg);
92 std::string name =
"";
96 PyObject *p_name = PyObject_GetAttrString (
function,
"__name__");
97 if (PyString_Check (p_name)) name = PyString_AsString (p_name);
98 else fprintf (stderr,
"*** error: py_callback::put_state: Failed to retrieve callback name!");
107 if (arguments != NULL)
130 fprintf (stderr,
"*** error: py_callback::get_state: Invalid instance!\n");
136 function = PyObject_GetAttrString (
instance, (
char *) name.c_str ());
139 if (!PyCallable_Check (
function))
141 fprintf (stderr,
"*** error: py_callback::get_state: Setting callback '%s' failed!\n", name.c_str ());
149 PyObject *py_callback::make_call (PyObject *args)
151 if (
function == NULL)
return NULL;
153 PyObject * val = PyObject_CallObject (
function, args);