4358b5a
From 8bb3b58fcc63fce73f6d3f3cd09e793fa3903ec2 Mon Sep 17 00:00:00 2001
4358b5a
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
4358b5a
Date: Sat, 9 Feb 2019 21:51:32 +0100
4358b5a
Subject: [PATCH 2/2] bindings: Add pool.whatmatchessolvable()
4358b5a
4358b5a
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
4358b5a
---
4358b5a
 bindings/solv.i            | 17 +++++++++++++++++
4358b5a
 doc/gen/libsolv-bindings.3 | 15 +++++++++++++++
4358b5a
 doc/libsolv-bindings.txt   |  8 ++++++++
4358b5a
 3 files changed, 40 insertions(+)
4358b5a
4358b5a
diff --git a/bindings/solv.i b/bindings/solv.i
4358b5a
index cbfddb73..b5074497 100644
4358b5a
--- a/bindings/solv.i
4358b5a
+++ b/bindings/solv.i
4358b5a
@@ -663,6 +663,12 @@ SWIG_AsValDepId(void *obj, int *val) {
4358b5a
 %typemaps_asval(%checkcode(POINTER), SWIG_AsValSolvFpPtr, "SWIG_AsValSolvFpPtr", FILE*);
4358b5a
 %typemaps_asval(%checkcode(INT32), SWIG_AsValDepId, "SWIG_AsValDepId", DepId);
4358b5a
 
4358b5a
+%define SamePool(pool1,pool2) %{ {
4358b5a
+  if (pool1 != pool2)
4358b5a
+    SWIG_exception_fail(SWIG_ArgError(EINVAL), "pool of argument $argnum must be same as pool in method's object");
4358b5a
+}
4358b5a
+%}
4358b5a
+%enddef
4358b5a
 
4358b5a
 /**
4358b5a
  ** the C declarations
4358b5a
@@ -1067,10 +1073,12 @@ typedef struct {
4358b5a
   Id what;
4358b5a
 } Job;
4358b5a
 
4358b5a
+%typemap(check) XSolvable *pool_solvable SamePool($1->pool, arg1)
4358b5a
 %nodefaultctor Pool;
4358b5a
 %nodefaultdtor Pool;
4358b5a
 typedef struct {
4358b5a
 } Pool;
4358b5a
+%typemap(check) XSolvable *pool_solvable;
4358b5a
 
4358b5a
 %nodefaultctor Repo;
4358b5a
 %nodefaultdtor Repo;
4358b5a
@@ -1978,6 +1986,15 @@ typedef struct {
4358b5a
     return q;
4358b5a
   }
4358b5a
 
4358b5a
+  %typemap(out) Queue whatmatchessolvable Queue2Array(XSolvable *, 1, new_XSolvable(arg1, id));
4358b5a
+  %newobject whatmatchessolvable;
4358b5a
+  Queue whatmatchessolvable(Id keyname, XSolvable *pool_solvable, Id marker = -1) {
4358b5a
+    Queue q;
4358b5a
+    queue_init(&q);
4358b5a
+    pool_whatmatchessolvable($self, keyname, pool_solvable->id, &q, marker);
4358b5a
+    return q;
4358b5a
+  }
4358b5a
+
4358b5a
 #ifdef SWIGRUBY
4358b5a
   %rename("isknownarch?") isknownarch;
4358b5a
 #endif
4358b5a
diff --git a/doc/gen/libsolv-bindings.3 b/doc/gen/libsolv-bindings.3
4358b5a
index a6cf3588..47bf7dd7 100644
4358b5a
--- a/doc/gen/libsolv-bindings.3
4358b5a
+++ b/doc/gen/libsolv-bindings.3
4358b5a
@@ -866,6 +866,21 @@ Filter list of solvables by repo priority, architecture and version\&.
4358b5a
 .RS 4
4358b5a
 .\}
4358b5a
 .nf
4358b5a
+\fBSolvable *whatmatchessolvable(Id\fR \fIkeyname\fR\fB, Solvable\fR \fIsolvable\fR\fB, Id\fR \fImarker\fR \fB= \-1)\fR
4358b5a
+my \fI@solvables\fR \fB=\fR \fI$pool\fR\fB\->whatmatchessolvable(\fR\fI$keyname\fR\fB,\fR \fI$solvable\fR\fB)\fR
4358b5a
+\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatmatchessolvable(\fR\fIkeyname\fR\fB,\fR \fIsolvable\fR\fB)\fR
4358b5a
+\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatmatchessolvable(\fR\fIkeyname\fR\fB,\fR \fIsolvable\fR\fB)\fR
4358b5a
+.fi
4358b5a
+.if n \{\
4358b5a
+.RE
4358b5a
+.\}
4358b5a
+.sp
4358b5a
+Return all solvables that match package dependencies in against solvable\(cqs provides\&.
4358b5a
+.sp
4358b5a
+.if n \{\
4358b5a
+.RS 4
4358b5a
+.\}
4358b5a
+.nf
4358b5a
 \fBId *matchprovidingids(const char *\fR\fImatch\fR\fB, int\fR \fIflags\fR\fB)\fR
4358b5a
 my \fI@ids\fR \fB=\fR \fI$pool\fR\fB\->matchprovidingids(\fR\fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR;
4358b5a
 \fIids\fR \fB=\fR \fIpool\fR\fB\&.matchprovidingids(\fR\fImatch\fR\fB,\fR \fIflags\fR\fB)\fR
4358b5a
diff --git a/doc/libsolv-bindings.txt b/doc/libsolv-bindings.txt
4358b5a
index 450ed41c..f3020c54 100644
4358b5a
--- a/doc/libsolv-bindings.txt
4358b5a
+++ b/doc/libsolv-bindings.txt
4358b5a
@@ -495,6 +495,14 @@ a Dep object or a simple Id as argument.
4358b5a
 
4358b5a
 Filter list of solvables by repo priority, architecture and version.
4358b5a
 
4358b5a
+	Solvable *whatmatchessolvable(Id keyname, Solvable solvable, Id marker = -1)
4358b5a
+	my @solvables = $pool->whatmatchessolvable($keyname, $solvable)
4358b5a
+	solvables = pool.whatmatchessolvable(keyname, solvable)
4358b5a
+	solvables = pool.whatmatchessolvable(keyname, solvable)
4358b5a
+
4358b5a
+Return all solvables that match package dependencies in against solvable's
4358b5a
+provides.
4358b5a
+
4358b5a
 	Id *matchprovidingids(const char *match, int flags)
4358b5a
 	my @ids = $pool->matchprovidingids($match, $flags);
4358b5a
 	ids = pool.matchprovidingids(match, flags)
4358b5a
-- 
4358b5a
2.20.1
4358b5a