1 #include "rpmsystem-py.h"
5 struct rpmProblemObject_s {
11 static char rpmprob_doc[] =
14 static PyObject *rpmprob_get_type(rpmProblemObject *s, void *closure)
16 return Py_BuildValue("i", rpmProblemGetType(s->prob));
19 static PyObject *rpmprob_get_pkgnevr(rpmProblemObject *s, void *closure)
21 return Py_BuildValue("s", rpmProblemGetPkgNEVR(s->prob));
24 static PyObject *rpmprob_get_altnevr(rpmProblemObject *s, void *closure)
26 return Py_BuildValue("s", rpmProblemGetAltNEVR(s->prob));
29 static PyObject *rpmprob_get_key(rpmProblemObject *s, void *closure)
31 fnpyKey key = rpmProblemGetKey(s->prob);
33 return Py_BuildValue("O", rpmProblemGetKey(s->prob));
39 static PyObject *rpmprob_get_str(rpmProblemObject *s, void *closure)
41 return Py_BuildValue("s", rpmProblemGetStr(s->prob));
44 static PyObject *rpmprob_get_num(rpmProblemObject *s, void *closure)
46 return Py_BuildValue("L", rpmProblemGetDiskNeed(s->prob));
49 static PyGetSetDef rpmprob_getseters[] = {
50 { "type", (getter)rpmprob_get_type, NULL, NULL },
51 { "pkgNEVR", (getter)rpmprob_get_pkgnevr, NULL, NULL },
52 { "altNEVR", (getter)rpmprob_get_altnevr, NULL, NULL },
53 { "key", (getter)rpmprob_get_key, NULL, NULL },
54 { "_str", (getter)rpmprob_get_str, NULL, NULL },
55 { "_num", (getter)rpmprob_get_num, NULL, NULL },
59 static PyObject *rpmprob_str(rpmProblemObject *s)
61 char *str = rpmProblemString(s->prob);
62 PyObject *res = Py_BuildValue("s", str);
67 static void rpmprob_dealloc(rpmProblemObject *s)
69 s->prob = rpmProblemFree(s->prob);
70 Py_TYPE(s)->tp_free((PyObject *)s);
73 PyTypeObject rpmProblem_Type = {
74 PyVarObject_HEAD_INIT(&PyType_Type, 0)
75 "rpm.prob", /* tp_name */
76 sizeof(rpmProblemObject), /* tp_basicsize */
79 (destructor)rpmprob_dealloc, /* tp_dealloc */
81 (getattrfunc)0, /* tp_getattr */
82 (setattrfunc)0, /* tp_setattr */
84 (reprfunc)0, /* tp_repr */
86 0, /* tp_as_sequence */
87 0, /* tp_as_mapping */
88 (hashfunc)0, /* tp_hash */
89 (ternaryfunc)0, /* tp_call */
90 (reprfunc)rpmprob_str, /* tp_str */
91 PyObject_GenericGetAttr, /* tp_getattro */
92 PyObject_GenericSetAttr, /* tp_setattro */
94 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
95 rpmprob_doc, /* tp_doc */
98 (richcmpfunc)0, /* tp_richcompare */
99 0, /* tp_weaklistoffset */
104 rpmprob_getseters, /* tp_getset */
107 0, /* tp_descr_get */
108 0, /* tp_descr_set */
109 0, /* tp_dictoffset */
112 (newfunc)0, /* tp_new */
117 PyObject *rpmprob_Wrap(PyTypeObject *subtype, rpmProblem prob)
119 rpmProblemObject * s = (rpmProblemObject *)subtype->tp_alloc(subtype, 0);
120 if (s == NULL) return NULL;
122 s->prob = rpmProblemLink(prob);
123 return (PyObject *) s;
126 PyObject *rpmps_AsList(rpmps ps)
132 problems = PyList_New(0);
137 psi = rpmpsInitIterator(ps);
139 while ((prob = rpmpsiNext(psi))) {
140 PyObject *pyprob = rpmprob_Wrap(&rpmProblem_Type, prob);
143 rpmpsFreeIterator(psi);
146 PyList_Append(problems, pyprob);
149 rpmpsFreeIterator(psi);