]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Allow filtering in raw_decisions()
authorMichael Schroeder <mls@suse.de>
Wed, 14 Dec 2016 10:34:33 +0000 (11:34 +0100)
committerMichael Schroeder <mls@suse.de>
Wed, 14 Dec 2016 10:34:33 +0000 (11:34 +0100)
bindings/solv.i

index 0ab90d0052273ef43ba7a3082d85bdff33e3a82a..61dc640adb48915585b4b8e7fef8e63c9be1de7a 100644 (file)
@@ -2188,7 +2188,6 @@ rb_eval_string(
   }
 #endif
 
-  %newobject createshadow;
   Repo *createshadow(const char *name) {
     Repo *repo = repo_create($self->pool, name);
     if ($self->idarraysize) {
@@ -3489,10 +3488,18 @@ rb_eval_string(
     return testcase_write($self, dir, TESTCASE_RESULT_TRANSACTION | TESTCASE_RESULT_PROBLEMS, 0, 0);
   }
 
-  Queue raw_decisions() {
+  Queue raw_decisions(int filter=0) {
     Queue q;
     queue_init(&q);
     solver_get_decisionqueue($self, &q);
+    if (filter) {
+      int i, j;
+      for (i = j = 0; i < q.count; i++)
+        if ((filter > 0 && q.elements[i] > 1) ||
+            (filter < 0 && q.elements[i] < 0))
+          q.elements[j++] = q.elements[i];
+      queue_truncate(&q, j);
+    }
     return q;
   }
 }