summaryrefslogtreecommitdiffstats
path: root/src/pythonize.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
commita7af74e75730559f7f9661e449eb269e356d9907 (patch)
tree72026b40b3a513aa21d630fb09ae10edab7f9e18 /src/pythonize.h
downloadpytdeextensions-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.h104
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