add pool_job2solvables and selection_solvables
[platform/upstream/libsolv.git] / bindings / solv.i
index 5bef32b..12df242 100644 (file)
@@ -688,30 +688,9 @@ typedef struct {
   %typemap(out) Queue solvables Queue2Array(XSolvable *, 1, new_XSolvable(arg1->pool, id));
   %newobject solvables;
   Queue solvables() {
-    Pool *pool = $self->pool;
-    Id p, pp, how;
     Queue q;
     queue_init(&q);
-    how = $self->how & SOLVER_SELECTMASK;
-    if (how == SOLVER_SOLVABLE_ALL)
-      {
-        for (p = 2; p < pool->nsolvables; p++)
-          if (pool->solvables[p].repo)
-            queue_push(&q, p);
-      }
-    else if (how == SOLVER_SOLVABLE_REPO)
-      {
-        Repo *repo = pool_id2repo(pool, $self->what);
-        Solvable *s;
-        if (repo)
-          FOR_REPO_SOLVABLES(repo, p, s)
-            queue_push(&q, p);
-      }
-    else
-      {
-        FOR_JOB_SELECT(p, pp, how, $self->what)
-          queue_push(&q, p);
-      }
+    pool_job2solvables($self->pool, &q, $self->how, $self->what);
     return q;
   }
 
@@ -792,6 +771,15 @@ typedef struct {
     return q;
   }
 
+  %typemap(out) Queue solvables Queue2Array(XSolvable *, 1, new_XSolvable(arg1->pool, id));
+  %newobject solvables;
+  Queue solvables() {
+    Queue q;
+    queue_init(&q);
+    selection_solvables($self->pool, &q, &$self->q);
+    return q;
+  }
+
 #if defined(SWIGPERL)
   %rename("str") __str__;
 #endif