From e77e5ef2af7f0cb667c32f59bc7cb1c88aac8697 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Fri, 12 Apr 2002 19:04:17 +0000 Subject: Change example of retrieving & calling a Python function to not use PyModule_GetDict(), which is also more flexible: it does not assume that the "module" is a real module. --- Doc/ext/embedding.tex | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Doc/ext/embedding.tex b/Doc/ext/embedding.tex index a44b89c..77fd451 100644 --- a/Doc/ext/embedding.tex +++ b/Doc/ext/embedding.tex @@ -178,24 +178,21 @@ as its argument, which is constructed using the \cfunction{PyString_FromString()} data conversion routine. \begin{verbatim} - pDict = PyModule_GetDict(pModule); - /* pDict is a borrowed reference */ - - pFunc = PyDict_GetItemString(pDict, argv[2]); - /* pFun is a borrowed reference */ + pFunc = PyObject_GetAttrString(pModule, argv[2]); + /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { ... } + Py_XDECREF(pFunc); \end{verbatim} -Once the script is loaded, its dictionary is retrieved with -\cfunction{PyModule_GetDict()}. The dictionary is then searched using -the normal dictionary access routines for the function name. If the -name exists, and the object retunred is callable, you can safely -assume that it is a function. The program then proceeds by -constructing a tuple of arguments as normal. The call to the python -function is then made with: +Once the script is loaded, the name we're looking for is retrieved +using \cfunction{PyObject_GetAttrString()}. If the name exists, and +the object retunred is callable, you can safely assume that it is a +function. The program then proceeds by constructing a tuple of +arguments as normal. The call to the Python function is then made +with: \begin{verbatim} pValue = PyObject_CallObject(pFunc, pArgs); -- cgit v0.12