add PoolQuery interface and loadSolvFile
authorGui Chen <gui.chen@intel.com>
Wed, 26 Jun 2013 02:57:26 +0000 (22:57 -0400)
committerChanho Park <chanho61.park@samsung.com>
Mon, 11 Aug 2014 11:47:09 +0000 (20:47 +0900)
PoolQuery exists in zypp but libzypp-bindings, import it
loadSolvFile is a help function to extend solv file

Signed-off-by: Gui Chen <gui.chen@intel.com>
swig/PoolQuery.i [new file with mode: 0644]
swig/RepoManager.i
swig/RepoType.i
swig/zypp.i

diff --git a/swig/PoolQuery.i b/swig/PoolQuery.i
new file mode 100644 (file)
index 0000000..05ff584
--- /dev/null
@@ -0,0 +1,39 @@
+%ignore zypp::PoolQuery::operator<<;
+%ignore zypp::detail::operator<<;
+%ignore zypp::dumpOn;
+%ignore zypp::detail::dumpOn;
+%ignore operator<<;
+%include <zypp/PoolQuery.h>
+%include "std_vector.i"
+namespace std {
+       %template(PoolItemVector) vector<zypp::PoolItem>;
+}
+namespace zypp
+{
+    namespace detail
+    {
+        %ignore operator<<;
+    }
+}
+%{
+#include <vector>
+using std::vector;
+%}
+
+#ifdef SWIGPYTHON
+%extend  zypp::PoolQuery {
+std::vector<zypp::PoolItem>  queryResults (zypp::ResPool pool)
+{
+#define for_(IT,BEG,END) for ( decltype(BEG) IT = BEG; IT != END; ++IT )
+    std::vector<zypp::PoolItem> items;
+    for_(it, self->begin(), self->end())
+    {
+        PoolItem pi(*it);
+        items.push_back(pi);
+    }
+
+    return items;
+}
+}
+#endif
+
index 8f7870d..a150d32 100644 (file)
@@ -1 +1,19 @@
 %include <zypp/RepoManager.h>
+
+#ifdef SWIGPYTHON
+%extend  zypp::RepoManager{
+    std::string loadSolvFile(std::string _solv, std::string _alias)
+    {
+        RepoInfo tmpRepo; 
+        tmpRepo.setAlias(_alias);
+        try {
+            sat::Pool::instance().addRepoSolv(_solv, tmpRepo);
+        } catch ( const Exception & e ){
+            return e.msg();
+        }
+
+        return std::string();
+    }
+}
+#endif
+
index d9f1164..3907371 100644 (file)
@@ -1 +1,2 @@
-%include <zypp/repo/RepoType.h>
\ No newline at end of file
+%ignore zypp::operator<<;
+%include <zypp/repo/RepoType.h>
index 53b781d..1ed3a7c 100644 (file)
@@ -139,6 +139,8 @@ SWIGINTERNINLINE SV *SWIG_From_double  SWIG_PERL_DECL_ARGS_1(double value);
 #include "zypp/Resolver.h"
 #include "legacy/GetResolvablesToInsDel.h"
 
+#include "zypp/sat/SolvAttr.h"
+#include "zypp/PoolQuery.h"
 #include "zypp/Product.h"
 
 using namespace boost;
@@ -233,6 +235,7 @@ namespace zypp {
 %include "OnMediaLocation.i"
 %include "Resolvable.i"
 %include "RepoType.i"
+%include "TmpPath.i"
 %include "RepoInfo.i"
 %include "Repository.i"
 %include "ServiceInfo.i"
@@ -256,9 +259,9 @@ namespace zypp {
 %include "ResPool.i"
 %include "ZYppCommitPolicy.i"
 %include "ZYppCommitResult.i"
-%include "TmpPath.i"
 %include "Resolver.i"
 %include "ZConfig.i"
+%include "PoolQuery.i"
 
 //just simple files, where we need default ctor
 %include <zypp/repo/RepoProvideFile.h>