Add rpmtdGetIndex() + rpmtdSetIndex() methods
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 23 May 2008 08:49:56 +0000 (11:49 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 23 May 2008 14:07:34 +0000 (17:07 +0300)
lib/rpmtd.c
lib/rpmtd.h

index 9114059..e1d2408 100644 (file)
@@ -71,6 +71,23 @@ rpmTagType rpmtdType(rpmtd td)
     return td->type;
 }
 
+int rpmtdGetIndex(rpmtd td)
+{
+    assert(td != NULL);
+    return td->ix;
+}
+
+int rpmtdSetIndex(rpmtd td, int index)
+{
+    assert(td != NULL);
+
+    if (index < 0 || index >= rpmtdCount(td)) {
+       return -1;
+    }
+    td->ix = index;
+    return td->ix;
+}
+
 int rpmtdInit(rpmtd td)
 {
     assert(td != NULL);
index bc368fa..6da2482 100644 (file)
@@ -73,6 +73,23 @@ rpmTag rpmtdTag(rpmtd td);
 rpmTagType rpmtdType(rpmtd td);
 
 /** \ingroup rpmtd
+ * Retrieve current iteration index of the container.
+ * @param td           Tag data container
+ * @return             Iteration index (or -1 if not iterating)
+ */
+int rpmtdGetIndex(rpmtd td);
+
+/** \ingroup rpmtd
+ * Set iteration index of the container.
+ * If new index is out of bounds for the container, -1 is returned and
+ * iteration index is left untouched. 
+ * @param td           Tag data container
+ * @param index                New index
+ * @return             New index, or -1 if index out of bounds
+ */
+int rpmtdSetIndex(rpmtd td, int index);
+
+/** \ingroup rpmtd
  * Initialize tag container for iteration
  * @param td           Tag data container
  * @return             0 on success