1 #ifndef __lib_python_python_h
2 #define __lib_python_python_h
5 #include <lib/base/object.h>
8 // useable for debugging python refcounting
13 #define Py_XDECREF(obj) Impl_Py_XDECREF(__FILE__, __LINE__, obj)
14 #define Py_DECREF(obj) Impl_Py_DECREF(__FILE__, __LINE__, obj)
15 #define Py_XINCREF(obj) Impl_Py_XINCREF(__FILE__, __LINE__, obj)
16 #define Py_INCREF(obj) Impl_Py_INCREF(__FILE__, __LINE__, obj)
18 void Impl_Py_DECREF(const char* file, int line, PyObject *obj);
20 inline void Impl_Py_XDECREF(const char* file, int line, PyObject *obj)
23 Impl_Py_DECREF(file, line, obj);
26 void Impl_Py_INCREF(const char* file, int line, PyObject *obj);
28 inline void Impl_Py_XINCREF(const char* file, int line, PyObject *obj)
31 Impl_Py_INCREF(file, line, obj);
34 extern PyObject *New_TestObj();
43 TEMPLATE_TYPEDEF(ePtr<TestObj>, TestObjPtr);
51 ePyObject(ePyObject &p);
53 ePyObject &operator=(ePyObject &p);
54 ePyObject &operator=(void *p);
56 void *get() { return m_object; }
64 int execute(const std::string &pythonfile, const std::string &funcname);
65 static int call(PyObject *pFunc, PyObject *args);
66 static PyObject *resolve(const std::string &pythonfile, const std::string &funcname);