12 #define _RPMPS_INTERNAL
14 #include "rpmdebug-py.c"
29 fprintf(stderr,
"*** rpmps_iter(%p)\n", s);
40 PyObject * result = NULL;
43 fprintf(stderr,
"*** rpmps_iternext(%p) ps %p psi %p\n", s, s->
ps, s->
psi);
72 char * kwlist[] = {
"debugLevel", NULL};
74 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmps_debug))
84 char *pkgNEVR, *altNEVR, *str1;
90 if (!PyArg_ParseTuple(value,
"ssOiisN:rpmps value tuple",
91 &pkgNEVR, &altNEVR, &key,
92 &type, &ignoreProblem, &str1,
97 rpmpsAppend(s->
ps, type, pkgNEVR, key, str1, NULL, altNEVR, ulong1);
106 {
"Debug", (PyCFunction)
rpmps_Debug, METH_VARARGS|METH_KEYWORDS,
108 {
"Append", (PyCFunction)
rpmps_Append, METH_VARARGS|METH_KEYWORDS,
121 fprintf(stderr,
"*** rpmps_dealloc(%p)\n", s);
134 fprintf(stderr,
"*** rpmps_print(%p,%p,%x)\n", s, (
void *)fp, flags);
144 fprintf(stderr,
"*** rpmps_getattro(%p,%p)\n", o, n);
145 return PyObject_GenericGetAttr(o, n);
152 fprintf(stderr,
"*** rpmps_setattro(%p,%p,%p)\n", o, n, v);
153 return PyObject_GenericSetAttr(o, n, v);
163 fprintf(stderr,
"*** rpmps_length(%p) rc %d\n", s, rc);
172 PyObject * result = NULL;
177 if (!PyInt_Check(key)) {
179 fprintf(stderr,
"*** rpmps_subscript(%p[%s],%p[%s])\n", s, lbl(s), key, lbl(key));
180 PyErr_SetString(PyExc_TypeError,
"integer expected");
184 ix = (int) PyInt_AsLong(key);
193 fprintf(stderr,
"*** rpmps_subscript(%p,%p) %s\n", s, key, PyString_AsString(result));
201 #define PERMIT_RPMPS_SUBSCRIPT
202 #if defined(PERMIT_RPMPS_SUBSCRIPT)
210 if (!PyArg_Parse(key,
"i:ass_sub", &ix)) {
211 PyErr_SetString(PyExc_TypeError,
"rpmps key type must be integer");
216 if (ix < 0) ix = -ix;
221 fprintf(stderr,
"*** rpmps_ass_sub(%p[%s],%p[%s],%p[%s]) ps %p[%d:%d:%d]\n", s, lbl(s), key, lbl(key), value, lbl(value), ps, ix, ps->numProblems, ps->numProblemsAlloced);
224 if (ix < ps->numProblems) {
227 op->pkgNEVR =
_free(op->pkgNEVR);
228 op->altNEVR =
_free(op->altNEVR);
229 op->str1 =
_free(op->str1);
231 if ((ix+1) == ps->numProblems)
232 memset(op, 0,
sizeof(*op));
234 memmove(op, op+1, (ps->numProblems - ix) *
sizeof(*op));
235 if (ps->numProblems > 0)
240 unsigned long ulong1 = p->ulong1;
242 if (!PyArg_ParseTuple(value,
"ssOiisN:rpmps value tuple",
243 &p->pkgNEVR, &p->altNEVR, &p->key,
244 &p->type, &p->ignoreProblem, &p->str1,
251 if (ix >= ps->numProblems) {
254 p->str1, NULL, p->altNEVR, ulong1);
258 op->pkgNEVR =
_free(op->pkgNEVR);
259 op->altNEVR =
_free(op->altNEVR);
260 op->str1 =
_free(op->str1);
262 p->pkgNEVR = (p->pkgNEVR && *p->pkgNEVR ?
xstrdup(p->pkgNEVR) : NULL);
263 p->altNEVR = (p->altNEVR && *p->altNEVR ?
xstrdup(p->altNEVR) : NULL);
264 p->str1 = (p->str1 && *p->str1 ?
xstrdup(p->str1) : NULL);
278 #if defined(PERMIT_RPMPS_SUBSCRIPT)
288 char * kwlist[] = {NULL};
291 fprintf(stderr,
"*** rpmps_init(%p,%p,%p)\n", s, args, kwds);
293 if (!PyArg_ParseTupleAndKeywords(args, kwds,
":rpmps_init", kwlist))
308 fprintf(stderr,
"%p -- ps %p\n", s, s->
ps);
311 PyObject_Del((PyObject *)s);
319 PyObject * s = PyType_GenericAlloc(subtype, nitems);
322 fprintf(stderr,
"*** rpmps_alloc(%p,%d) ret %p\n", subtype, nitems, s);
329 static PyObject *
rpmps_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
341 fprintf(stderr,
"%p ++ ps %p\n", s, s->
ps);
343 return (PyObject *)s;
354 PyObject_HEAD_INIT(&PyType_Type)
377 #if Py_TPFLAGS_HAVE_ITER