- simply return the actual problem objects from the iterator instead
of "index" which is not usable for anything outside rpmps.c
- implement rpmpsNexIterator() on top of the new rpmpsiNext() as
backwards compatibility for now
return NULL;
}
-int rpmpsNextIterator(rpmpsi psi)
+rpmProblem rpmpsiNext(rpmpsi psi)
{
- int i = -1;
-
- if (psi != NULL && ++psi->ix >= 0) {
- if (psi->ix < rpmpsNumProblems(psi->ps)) {
- i = psi->ix;
+ rpmProblem p = NULL;
+ if (psi != NULL && psi->ps != NULL && ++psi->ix >= 0) {
+ rpmps ps = psi->ps;
+ if (psi->ix < ps->numProblems) {
+ p = ps->probs[psi->ix];
} else {
psi->ix = -1;
- }
+ }
}
- return i;
+ return p;
+}
+
+int rpmpsNextIterator(rpmpsi psi)
+{
+ return (rpmpsiNext(psi) != NULL) ? psi->ix : -1;
}
rpmProblem rpmpsGetProblem(rpmpsi psi)
rpmpsi rpmpsFreeIterator(rpmpsi psi);
/** \ingroup rpmps
+ * Return next problem from iterator
+ * @param psi problem set iterator
+ * @return next problem (weak ref), NULL on termination
+ */
+rpmProblem rpmpsiNext(rpmpsi psi);
+
+/** \ingroup rpmps
* Return next problem set iterator index
* @param psi problem set iterator
* @return iterator index, -1 on termination