diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 18:16:46 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 18:16:46 +0000 |
commit | a7af74e75730559f7f9661e449eb269e356d9907 (patch) | |
tree | 72026b40b3a513aa21d630fb09ae10edab7f9e18 /src/pythonize.h | |
download | pytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.tar.gz pytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.zip |
Added KDE3 version of pykdeextensions
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/pykdeextensions@1097589 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/pythonize.h')
-rw-r--r-- | src/pythonize.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/pythonize.h b/src/pythonize.h new file mode 100644 index 0000000..6db64d2 --- /dev/null +++ b/src/pythonize.h @@ -0,0 +1,104 @@ +/* copyright 2003 Jim Bublitz <jbublitz@nwinternet.com> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __pythonize_h__ +#define __pythonize_h__ + +// Pythonize is a general purpose library that wraps the Python +// interpreter with an interface to a set of common operations +// used when embedding the interpreter. + +#include <Python.h> + +struct ObjectRef +{ + ObjectRef (ObjectRef *oi, PyObject *o); + ~ObjectRef () { Py_XDECREF (object); } + + PyObject *object; // pointer to an object we created + ObjectRef *prevObject; // pointer to next object on the stack +}; + +class Pythonize +{ +public: + Pythonize (); + ~Pythonize (); + + // adds a path to sys.path + bool appendToSysPath (const char* newPath); + + // imports a module into the interpreter + // or gets a PyObject for an already loaded module + PyObject *importModule (char *moduleName); + + // returns an object from a loaded module + // you must decref the object returned when done with it (new reference returned) + PyObject *getNewObjectRef (PyObject *module, char *object) { return PyObject_GetAttrString (module, object); } + + int getPythonInit () { return pythonInit; } + + // decrements the ref count of an object + void decref (PyObject *object) { Py_XDECREF (object); } + + // runs a script on the current sys.path + bool runScript (char *scriptPath); + + // executes a string of Python in the interpreter + bool runString (char *str); + + // runs a callable Python object + PyObject *runFunction(PyObject *object, PyObject *args); + void *runFunctionVoid(PyObject *object, PyObject *args); + +private: + int pythonInit; // status of Py_Initialize + ObjectRef *objects; // a stack of PyObjects (used in destructor) +}; + +extern "C" { + Pythonize *initialize(); + void finalize(); + + // adds a path to sys.path + bool appendToSysPath (const char* newPath); + + // imports a module into the interpreter + // or gets a PyObject for an already loaded module + PyObject *importModule (char *moduleName); + + // returns an object from a loaded module + // you must decref the object returned when done with it (new reference returned) + PyObject *getNewObjectRef (PyObject *module, char *object); + + bool getPythonInit(); + + // decrements the ref count of an object + void decref (PyObject *object); + + // runs a script on the current sys.path + bool runScript (char *scriptPath); + + // executes a string of Python in the interpreter + bool runString (char *str); + + // runs a callable Python object + PyObject *runFunction (PyObject *object, PyObject *args); +} + +#endif |