From a7af74e75730559f7f9661e449eb269e356d9907 Mon Sep 17 00:00:00 2001 From: tpearson Date: Mon, 1 Mar 2010 18:16:46 +0000 Subject: Added KDE3 version of pykdeextensions git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/pykdeextensions@1097589 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- src/pythonize.h | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/pythonize.h (limited to 'src/pythonize.h') 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 + + 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 + +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 -- cgit v1.2.1