summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-06-02 16:54:07 +0200
committerJiri Moskovcak <jmoskovc@redhat.com>2009-06-02 16:54:07 +0200
commit8966e621a0809d2109133f180db6a23bb4335843 (patch)
tree811e1d2b94ab777c4e9d7c64b0b7834ca44c2840
parent012b25107c2b9cbc8d5ed37dd495d380bd74671f (diff)
downloadabrt-8966e621a0809d2109133f180db6a23bb4335843.tar.gz
abrt-8966e621a0809d2109133f180db6a23bb4335843.tar.xz
abrt-8966e621a0809d2109133f180db6a23bb4335843.zip
Python wrapper for libABRTUtils
-rw-r--r--configure.ac1
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/Python/Makefile.am5
-rw-r--r--lib/Python/PyABRTUtils.cpp247
-rw-r--r--lib/Python/PyBindingGenerator.py27
-rw-r--r--lib/Python/PyDebugDump.cpp247
6 files changed, 528 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index ff7da1be..bb016817 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,6 +55,7 @@ AC_CONFIG_FILES([
lib/MiddleWare/Makefile
lib/CommLayer/Makefile
lib/Plugins/Makefile
+ lib/Python/Makefile
src/Makefile
src/Daemon/Makefile
src/Hooks/Makefile
diff --git a/lib/Makefile.am b/lib/Makefile.am
index fede1867..012b8f03 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1 +1 @@
-SUBDIRS = Utils MiddleWare Plugins CommLayer \ No newline at end of file
+SUBDIRS = Utils MiddleWare Plugins CommLayer Python \ No newline at end of file
diff --git a/lib/Python/Makefile.am b/lib/Python/Makefile.am
new file mode 100644
index 00000000..61cc806e
--- /dev/null
+++ b/lib/Python/Makefile.am
@@ -0,0 +1,5 @@
+pyexec_LTLIBRARIES = ABRTUtils.la
+ABRTUtils_la_SOURCES = PyDebugDump.cpp
+ABRTUtils_la_LDFLAGS = -module -avoid-version
+ABRTUtils_la_LIBADD = -lABRTUtils
+ABRTUtils_la_CPPFLAGS = -fPIC -shared -I/usr/include/python2.5 -I../Utils
diff --git a/lib/Python/PyABRTUtils.cpp b/lib/Python/PyABRTUtils.cpp
new file mode 100644
index 00000000..9ce5a38f
--- /dev/null
+++ b/lib/Python/PyABRTUtils.cpp
@@ -0,0 +1,247 @@
+/* This file was generated by PyBindGen 0.10.0 */
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+#include <stddef.h>
+
+
+#if PY_VERSION_HEX < 0x020400F0
+
+#define PyEval_ThreadsInitialized() 1
+
+#define Py_CLEAR(op) \
+ do { \
+ if (op) { \
+ PyObject *tmp = (PyObject *)(op); \
+ (op) = NULL; \
+ Py_DECREF(tmp); \
+ } \
+ } while (0)
+
+
+#define Py_VISIT(op) \
+ do { \
+ if (op) { \
+ int vret = visit((PyObject *)(op), arg); \
+ if (vret) \
+ return vret; \
+ } \
+ } while (0)
+
+#endif
+
+
+
+#if PY_VERSION_HEX < 0x020500F0
+
+typedef int Py_ssize_t;
+# define PY_SSIZE_T_MAX INT_MAX
+# define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+typedef intobjargproc ssizeobjargproc;
+
+#endif
+
+
+#if __GNUC__ > 2
+# define PYBINDGEN_UNUSED(param) param __attribute__((__unused__))
+#elif __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+# define PYBINDGEN_UNUSED(param) __attribute__((__unused__)) param
+#else
+# define PYBINDGEN_UNUSED(param)
+#endif /* !__GNUC__ */
+
+#include "../Utils/DebugDump.h"
+/* --- forward declarations --- */
+
+
+typedef struct {
+ PyObject_HEAD
+ CDebugDump *obj;
+} PyCDebugDump;
+
+
+extern PyTypeObject PyCDebugDump_Type;
+
+static PyMethodDef ABRTUtils_functions[] = {
+ {NULL, NULL, 0, NULL}
+};
+/* --- classes --- */
+
+
+
+static int
+_wrap_PyCDebugDump__tp_init(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ const char *keywords[] = {NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "", (char **) keywords)) {
+ return -1;
+ }
+ self->obj = new CDebugDump();
+ return 0;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_Close(PyCDebugDump *self)
+{
+ PyObject *py_retval;
+
+ self->obj->Close();
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_Create(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ PyObject *py_retval;
+ char *pFilename2;
+ const char *keywords[] = {"pFilename", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s", (char **) keywords, &pFilename2)) {
+ return NULL;
+ }
+ self->obj->Create(pFilename2);
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_SaveText(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ PyObject *py_retval;
+ char *pName2;
+ char *pData2;
+ const char *keywords[] = {"pName", "pData", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss", (char **) keywords, &pName2, &pData2)) {
+ return NULL;
+ }
+ self->obj->SaveText(pName2, pData2);
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+static PyMethodDef PyCDebugDump_methods[] = {
+ {(char *) "Close", (PyCFunction) _wrap_PyCDebugDump_Close, METH_NOARGS, NULL },
+ {(char *) "Create", (PyCFunction) _wrap_PyCDebugDump_Create, METH_KEYWORDS|METH_VARARGS, NULL },
+ {(char *) "SaveText", (PyCFunction) _wrap_PyCDebugDump_SaveText, METH_KEYWORDS|METH_VARARGS, NULL },
+ {NULL, NULL, 0, NULL}
+};
+
+static void
+_wrap_PyCDebugDump__tp_dealloc(PyCDebugDump *self)
+{
+ CDebugDump *tmp = self->obj;
+ self->obj = NULL;
+ delete tmp;
+ self->ob_type->tp_free((PyObject*)self);
+}
+
+static PyObject*
+_wrap_PyCDebugDump__tp_richcompare (PyCDebugDump *self, PyCDebugDump *other, int opid)
+{
+
+ if (!PyObject_IsInstance((PyObject*) other, (PyObject*) &PyCDebugDump_Type)) {
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ }
+ switch (opid)
+ {
+ case Py_LT:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_LE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_EQ:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_NE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_GE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_GT:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ } /* closes switch (opid) */
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+}
+
+PyTypeObject PyCDebugDump_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ (char *) "ABRTUtils.CDebugDump", /* tp_name */
+ sizeof(PyCDebugDump), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)_wrap_PyCDebugDump__tp_dealloc, /* tp_dealloc */
+ (printfunc)0, /* tp_print */
+ (getattrfunc)NULL, /* tp_getattr */
+ (setattrfunc)NULL, /* tp_setattr */
+ (cmpfunc)NULL, /* tp_compare */
+ (reprfunc)NULL, /* tp_repr */
+ (PyNumberMethods*)NULL, /* tp_as_number */
+ (PySequenceMethods*)NULL, /* tp_as_sequence */
+ (PyMappingMethods*)NULL, /* tp_as_mapping */
+ (hashfunc)NULL, /* tp_hash */
+ (ternaryfunc)NULL, /* tp_call */
+ (reprfunc)NULL, /* tp_str */
+ (getattrofunc)NULL, /* tp_getattro */
+ (setattrofunc)NULL, /* tp_setattro */
+ (PyBufferProcs*)NULL, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc)NULL, /* tp_traverse */
+ (inquiry)NULL, /* tp_clear */
+ (richcmpfunc)_wrap_PyCDebugDump__tp_richcompare, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ (getiterfunc)NULL, /* tp_iter */
+ (iternextfunc)NULL, /* tp_iternext */
+ (struct PyMethodDef*)PyCDebugDump_methods, /* tp_methods */
+ (struct PyMemberDef*)0, /* tp_members */
+ 0, /* tp_getset */
+ NULL, /* tp_base */
+ NULL, /* tp_dict */
+ (descrgetfunc)NULL, /* tp_descr_get */
+ (descrsetfunc)NULL, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ (initproc)_wrap_PyCDebugDump__tp_init, /* tp_init */
+ (allocfunc)PyType_GenericAlloc, /* tp_alloc */
+ (newfunc)PyType_GenericNew, /* tp_new */
+ (freefunc)0, /* tp_free */
+ (inquiry)NULL, /* tp_is_gc */
+ NULL, /* tp_bases */
+ NULL, /* tp_mro */
+ NULL, /* tp_cache */
+ NULL, /* tp_subclasses */
+ NULL, /* tp_weaklist */
+ (destructor) NULL /* tp_del */
+};
+
+
+
+PyMODINIT_FUNC
+initABRTUtils(void)
+{
+ PyObject *m;
+ m = Py_InitModule3((char *) "ABRTUtils", ABRTUtils_functions, NULL);
+ if (m == NULL) {
+ return;
+ }
+ /* Register the 'CDebugDump' class */
+ if (PyType_Ready(&PyCDebugDump_Type)) {
+ return;
+ }
+ PyModule_AddObject(m, (char *) "CDebugDump", (PyObject *) &PyCDebugDump_Type);
+}
diff --git a/lib/Python/PyBindingGenerator.py b/lib/Python/PyBindingGenerator.py
new file mode 100644
index 00000000..a2d62d59
--- /dev/null
+++ b/lib/Python/PyBindingGenerator.py
@@ -0,0 +1,27 @@
+from pybindgen import *
+import sys
+"""
+ void Open(const std::string& pDir);
+ void Create(const std::string& pDir);
+ void Delete();
+ void Close();
+
+ bool Exist(const std::string& pFileName);
+
+ void LoadText(const std::string& pName, std::string& pData);
+ void LoadBinary(const std::string& pName, char** pData, unsigned int* pSize);
+
+ void SaveText(const std::string& pName, const std::string& pData);
+ void SaveBinary(const std::string& pName, const char* pData, const unsigned int pSize);
+
+ void InitGetNextFile();
+ bool GetNextFile(std::string& pFileName, std::string& pContent, bool& pIsTextFile);
+"""
+mod = Module('ABRTUtils')
+mod.add_include('"../Utils/DebugDump.h"')
+klass = mod.add_class('CDebugDump')
+klass.add_constructor([])
+klass.add_method('Create', None, [param('char*', 'pFilename')])
+klass.add_method('Close', None, [])
+klass.add_method('SaveText', None, [param('char*', 'pName'), param('char*', 'pData')])
+mod.generate(sys.stdout)
diff --git a/lib/Python/PyDebugDump.cpp b/lib/Python/PyDebugDump.cpp
new file mode 100644
index 00000000..9ce5a38f
--- /dev/null
+++ b/lib/Python/PyDebugDump.cpp
@@ -0,0 +1,247 @@
+/* This file was generated by PyBindGen 0.10.0 */
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+#include <stddef.h>
+
+
+#if PY_VERSION_HEX < 0x020400F0
+
+#define PyEval_ThreadsInitialized() 1
+
+#define Py_CLEAR(op) \
+ do { \
+ if (op) { \
+ PyObject *tmp = (PyObject *)(op); \
+ (op) = NULL; \
+ Py_DECREF(tmp); \
+ } \
+ } while (0)
+
+
+#define Py_VISIT(op) \
+ do { \
+ if (op) { \
+ int vret = visit((PyObject *)(op), arg); \
+ if (vret) \
+ return vret; \
+ } \
+ } while (0)
+
+#endif
+
+
+
+#if PY_VERSION_HEX < 0x020500F0
+
+typedef int Py_ssize_t;
+# define PY_SSIZE_T_MAX INT_MAX
+# define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+typedef intobjargproc ssizeobjargproc;
+
+#endif
+
+
+#if __GNUC__ > 2
+# define PYBINDGEN_UNUSED(param) param __attribute__((__unused__))
+#elif __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+# define PYBINDGEN_UNUSED(param) __attribute__((__unused__)) param
+#else
+# define PYBINDGEN_UNUSED(param)
+#endif /* !__GNUC__ */
+
+#include "../Utils/DebugDump.h"
+/* --- forward declarations --- */
+
+
+typedef struct {
+ PyObject_HEAD
+ CDebugDump *obj;
+} PyCDebugDump;
+
+
+extern PyTypeObject PyCDebugDump_Type;
+
+static PyMethodDef ABRTUtils_functions[] = {
+ {NULL, NULL, 0, NULL}
+};
+/* --- classes --- */
+
+
+
+static int
+_wrap_PyCDebugDump__tp_init(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ const char *keywords[] = {NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "", (char **) keywords)) {
+ return -1;
+ }
+ self->obj = new CDebugDump();
+ return 0;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_Close(PyCDebugDump *self)
+{
+ PyObject *py_retval;
+
+ self->obj->Close();
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_Create(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ PyObject *py_retval;
+ char *pFilename2;
+ const char *keywords[] = {"pFilename", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s", (char **) keywords, &pFilename2)) {
+ return NULL;
+ }
+ self->obj->Create(pFilename2);
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+
+PyObject *
+_wrap_PyCDebugDump_SaveText(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
+{
+ PyObject *py_retval;
+ char *pName2;
+ char *pData2;
+ const char *keywords[] = {"pName", "pData", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss", (char **) keywords, &pName2, &pData2)) {
+ return NULL;
+ }
+ self->obj->SaveText(pName2, pData2);
+ Py_INCREF(Py_None);
+ py_retval = Py_None;
+ return py_retval;
+}
+
+static PyMethodDef PyCDebugDump_methods[] = {
+ {(char *) "Close", (PyCFunction) _wrap_PyCDebugDump_Close, METH_NOARGS, NULL },
+ {(char *) "Create", (PyCFunction) _wrap_PyCDebugDump_Create, METH_KEYWORDS|METH_VARARGS, NULL },
+ {(char *) "SaveText", (PyCFunction) _wrap_PyCDebugDump_SaveText, METH_KEYWORDS|METH_VARARGS, NULL },
+ {NULL, NULL, 0, NULL}
+};
+
+static void
+_wrap_PyCDebugDump__tp_dealloc(PyCDebugDump *self)
+{
+ CDebugDump *tmp = self->obj;
+ self->obj = NULL;
+ delete tmp;
+ self->ob_type->tp_free((PyObject*)self);
+}
+
+static PyObject*
+_wrap_PyCDebugDump__tp_richcompare (PyCDebugDump *self, PyCDebugDump *other, int opid)
+{
+
+ if (!PyObject_IsInstance((PyObject*) other, (PyObject*) &PyCDebugDump_Type)) {
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ }
+ switch (opid)
+ {
+ case Py_LT:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_LE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_EQ:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_NE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_GE:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ case Py_GT:
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+ } /* closes switch (opid) */
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
+}
+
+PyTypeObject PyCDebugDump_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ (char *) "ABRTUtils.CDebugDump", /* tp_name */
+ sizeof(PyCDebugDump), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)_wrap_PyCDebugDump__tp_dealloc, /* tp_dealloc */
+ (printfunc)0, /* tp_print */
+ (getattrfunc)NULL, /* tp_getattr */
+ (setattrfunc)NULL, /* tp_setattr */
+ (cmpfunc)NULL, /* tp_compare */
+ (reprfunc)NULL, /* tp_repr */
+ (PyNumberMethods*)NULL, /* tp_as_number */
+ (PySequenceMethods*)NULL, /* tp_as_sequence */
+ (PyMappingMethods*)NULL, /* tp_as_mapping */
+ (hashfunc)NULL, /* tp_hash */
+ (ternaryfunc)NULL, /* tp_call */
+ (reprfunc)NULL, /* tp_str */
+ (getattrofunc)NULL, /* tp_getattro */
+ (setattrofunc)NULL, /* tp_setattro */
+ (PyBufferProcs*)NULL, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc)NULL, /* tp_traverse */
+ (inquiry)NULL, /* tp_clear */
+ (richcmpfunc)_wrap_PyCDebugDump__tp_richcompare, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ (getiterfunc)NULL, /* tp_iter */
+ (iternextfunc)NULL, /* tp_iternext */
+ (struct PyMethodDef*)PyCDebugDump_methods, /* tp_methods */
+ (struct PyMemberDef*)0, /* tp_members */
+ 0, /* tp_getset */
+ NULL, /* tp_base */
+ NULL, /* tp_dict */
+ (descrgetfunc)NULL, /* tp_descr_get */
+ (descrsetfunc)NULL, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ (initproc)_wrap_PyCDebugDump__tp_init, /* tp_init */
+ (allocfunc)PyType_GenericAlloc, /* tp_alloc */
+ (newfunc)PyType_GenericNew, /* tp_new */
+ (freefunc)0, /* tp_free */
+ (inquiry)NULL, /* tp_is_gc */
+ NULL, /* tp_bases */
+ NULL, /* tp_mro */
+ NULL, /* tp_cache */
+ NULL, /* tp_subclasses */
+ NULL, /* tp_weaklist */
+ (destructor) NULL /* tp_del */
+};
+
+
+
+PyMODINIT_FUNC
+initABRTUtils(void)
+{
+ PyObject *m;
+ m = Py_InitModule3((char *) "ABRTUtils", ABRTUtils_functions, NULL);
+ if (m == NULL) {
+ return;
+ }
+ /* Register the 'CDebugDump' class */
+ if (PyType_Ready(&PyCDebugDump_Type)) {
+ return;
+ }
+ PyModule_AddObject(m, (char *) "CDebugDump", (PyObject *) &PyCDebugDump_Type);
+}