Add public rpmdsCurrent() function for creating a single ds from iteration
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 26 Mar 2010 14:54:16 +0000 (16:54 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 26 Mar 2010 15:11:12 +0000 (17:11 +0200)
- Permits extracting single dependencies from a set with instance
  number inherited without exposing rpmdsSetInstance() kind of thing
- Also faster than calling rpmdsSingle(rpmdsTagN(ds), rpmdsN(ds)....)
  where each call re-re-re-re-validates the indexes

lib/rpmds.c
lib/rpmds.h

index b3dd0f6..faf0ba5 100644 (file)
@@ -252,6 +252,16 @@ rpmds rpmdsSingle(rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags F
     return singleDS(tagN, N, EVR, Flags, 0);
 }
 
+rpmds rpmdsCurrent(rpmds ds)
+{
+    rpmds cds = NULL;
+    if (ds != NULL && ds->i >= 0 && ds->i < ds->Count) {
+       cds = singleDS(ds->tagN, ds->N[ds->i], ds->EVR[ds->i],
+                      ds->Flags[ds->i], ds->instance);
+    }
+    return cds;
+}
+
 int rpmdsCount(const rpmds ds)
 {
     return (ds != NULL ? ds->Count : 0);
index 714d266..d4bbf21 100644 (file)
@@ -144,6 +144,13 @@ rpmds rpmdsThis(Header h, rpmTag tagN, rpmsenseFlags Flags);
 rpmds rpmdsSingle(rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
 
 /** \ingroup rpmds
+ * Return a new dependency set of size 1 from the current iteration index
+ * @param ds           dependency set
+ * @return             new dependency set
+ */
+rpmds rpmdsCurrent(rpmds ds);
+
+/** \ingroup rpmds
  * Return dependency set count.
  * @param ds           dependency set
  * @return             current count