]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
bindings: implement set/get_considered_list
authorMichael Schroeder <mls@suse.de>
Wed, 14 Nov 2018 15:39:36 +0000 (16:39 +0100)
committerMichael Schroeder <mls@suse.de>
Wed, 14 Nov 2018 15:39:36 +0000 (16:39 +0100)
This is just a first version to play with. It's based
on pull request #288 from milan. Thanks!

bindings/solv.i

index 1a88917a36d431765a0aeb5d5b81b3444f51f54a..1f7a60d858bc0d436557b52f3a3875aa460b8297 100644 (file)
@@ -1963,6 +1963,35 @@ typedef struct {
     return sel;
   }
 
+  Queue get_considered_list() {
+    Queue q;
+    queue_init(&q);
+    int i;
+    for (i = 2; i < $self->nsolvables; i++) {
+      if (!$self->solvables[i].repo)
+        continue;
+      if (!$self->considered || MAPTST($self->considered, i))
+        queue_push(&q, i);
+    }
+    return q;
+  }
+
+  void set_considered_list(Queue q) {
+    int i;
+    Id p;
+    if (!$self->considered) {
+      $self->considered = solv_calloc(1, sizeof(Map));
+      map_init($self->considered, $self->nsolvables);
+    }
+    map_empty($self->considered);
+    MAPSET($self->considered, 1);
+    for (i = 0; i < q.count; i++) {
+      p = q.elements[i];
+      if (p > 0 && p < $self->nsolvables)
+        MAPSET($self->considered, p);
+    }
+  }
+
   void setpooljobs_helper(Queue jobs) {
     queue_free(&$self->pooljobs);
     queue_init_clone(&$self->pooljobs, &jobs);