- update transaction ordering code
[platform/upstream/libsolv.git] / src / solvable.c
index 68a3855..6f6f590 100644 (file)
@@ -42,6 +42,29 @@ solvable_lookup_id(Solvable *s, Id keyname)
   return repo_lookup_id(s->repo, s - s->repo->pool->solvables, keyname);
 }
 
+int
+solvable_lookup_idarray(Solvable *s, Id keyname, Queue *q)
+{
+  Dataiterator di;
+  int found = 0;
+
+  queue_empty(q);
+  if (!s->repo)
+    return 0;
+  dataiterator_init(&di, s->repo->pool, s->repo, s - s->repo->pool->solvables, keyname, 0, SEARCH_ARRAYSENTINEL);
+  while (dataiterator_step(&di))
+    {
+      if (di.key->type != REPOKEY_TYPE_IDARRAY && di.key->type != REPOKEY_TYPE_REL_IDARRAY)
+       continue;
+      found = 1;
+      if (di.kv.eof)
+       break;
+      queue_push(q, di.kv.id);
+    }
+  dataiterator_free(&di);
+  return found;
+}
+
 const char *
 solvable_lookup_str(Solvable *s, Id keyname)
 {