Imported Upstream version 15.0.0
[platform/upstream/libzypp.git] / zypp / solver / detail / Resolver.h
index 77a0969..10f140a 100644 (file)
 /////////////////////////////////////////////////////////////////////////
 namespace zypp
 { ///////////////////////////////////////////////////////////////////////
+
+  namespace sat
+  {
+    class Transaction;
+  }
+
   ///////////////////////////////////////////////////////////////////////
   namespace solver
   { /////////////////////////////////////////////////////////////////////
@@ -85,7 +91,13 @@ namespace zypp
 ///////////////////////////////////////////////////////////////////
 //
 //     CLASS NAME : Resolver
-
+/** A mid layer class we should remove
+ * \todo Merge this and class SATResolver. Logic and date are horribly
+ * distributed between this and SATResolver. Either SATResolver becomes
+ * a pure wrapper adapting the libsolv C interface to fit our needs, and
+ * all the solver logic and problem handling goes here; or completely merge
+ * both classes.
+ */
 class Resolver : public base::ReferenceCounted, private base::NonCopyable {
 
   private:
@@ -194,6 +206,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     void setForceResolve( TriBool state_r )    { _forceResolve = indeterminate(state_r) ? false : bool(state_r); }
 
     bool isUpgradeMode() const                         { return _upgradeMode; }// Resolver has been called with doUpgrade
+    void setUpgradeMode( bool yesno_r )                { _upgradeMode = yesno_r; }
 
     bool isUpdateMode() const                  { return _updateMode; } // Resolver has been called with doUpdate
 
@@ -213,6 +226,9 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     ResolverProblemList problems() const;
     void applySolutions( const ProblemSolutionList & solutions );
 
+    // Return the Transaction computed by the last solver run.
+    sat::Transaction getTransaction();
+
     // reset all SOLVER transaction in pool
     void undo();