22#ifndef ZYPP_SOLVER_DETAIL_RESOLVER_H 
   23#define ZYPP_SOLVER_DETAIL_RESOLVER_H 
   24#ifndef ZYPP_USE_RESOLVER_INTERNALS 
   25#error Do not directly include this file! 
   51      typedef std::list<PoolItem> PoolItemList;
 
   52      typedef std::set<PoolItem> PoolItemSet;
 
   66  typedef std::multimap<PoolItem,ItemCapKind> ItemCapKindMap;
 
   69    SATResolver *_satResolver;
 
   70    SerialNumberWatcher _poolchanged;
 
   74    std::set<Repository> _upgradeRepos;
 
   77    PoolItemList _addWeak;
 
   84    bool _solveSrcPackages:1;         
 
   85    bool _ignoreAlreadyRecommended:1; 
 
   93    bool _applyDefault_focus:1;
 
   94    bool _applyDefault_forceResolve:1;
 
   95    bool _applyDefault_cleandepsOnRemove:1;
 
   96    bool _applyDefault_onlyRequires:1;
 
   97    bool _applyDefault_allowDowngrade:1;
 
   98    bool _applyDefault_allowNameChange:1;
 
   99    bool _applyDefault_allowArchChange:1;
 
  100    bool _applyDefault_allowVendorChange:1;
 
  101    bool _applyDefault_dupAllowDowngrade:1;
 
  102    bool _applyDefault_dupAllowNameChange:1;
 
  103    bool _applyDefault_dupAllowArchChange:1;
 
  104    bool _applyDefault_dupAllowVendorChange:1;
 
  109    solver::detail::SolverQueueItemList _removed_queue_items;
 
  110    solver::detail::SolverQueueItemList _added_queue_items;
 
  113    ItemCapKindMap _isInstalledBy;
 
  114    ItemCapKindMap _installs;
 
  115    ItemCapKindMap _satifiedByInstalled;
 
  116    ItemCapKindMap _installedSatisfied;
 
  119    void collectResolverInfo();
 
  124    bool checkUnmaintainedItems ();
 
  130    Resolver( ResPool  pool );
 
  135    std::ostream & 
dumpOn( std::ostream & str ) 
const;
 
  137    friend std::ostream& 
operator<<( std::ostream& str, 
const Resolver & obj )
 
  138    { 
return obj.dumpOn (str); }
 
  142    ResPool pool() 
const;
 
  143    void setPool( 
const ResPool & pool ) { _pool = pool; }
 
  154    void setDefaultSolverFlags( 
bool all_r );
 
  156    void addUpgradeRepo( Repository repo_r )            { 
if ( repo_r && ! repo_r.isSystemRepo() ) _upgradeRepos.insert( repo_r ); }
 
  157    bool upgradingRepo( Repository repo_r )
 const       { 
return( _upgradeRepos.find( repo_r ) != _upgradeRepos.end() ); }
 
  158    void removeUpgradeRepo( Repository repo_r )         { _upgradeRepos.erase( repo_r ); }
 
  159    void removeUpgradeRepos()                           { _upgradeRepos.clear(); }
 
  160    const std::set<Repository> & upgradeRepos()
 const   { 
return _upgradeRepos; }
 
  162    void addExtraRequire( 
const Capability & capability );
 
  163    void removeExtraRequire( 
const Capability & capability );
 
  164    void addExtraConflict( 
const Capability & capability );
 
  165    void removeExtraConflict( 
const Capability & capability );
 
  167    void removeQueueItem( 
const SolverQueueItem_Ptr& item );
 
  168    void addQueueItem( 
const SolverQueueItem_Ptr& item );
 
  170    CapabilitySet extraRequires()
 const            { 
return _extra_requires; }
 
  171    CapabilitySet extraConflicts()
 const   { 
return _extra_conflicts; }
 
  173    void addWeak( 
const PoolItem & item );
 
  177    bool resolveQueue( SolverQueueItemList & queue );
 
  181    PoolItemList problematicUpdateItems() 
const;
 
  185    bool ignoreAlreadyRecommended()
 const       { 
return _ignoreAlreadyRecommended; }
 
  186    void setIgnoreAlreadyRecommended( 
bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; }
 
  188    bool isUpgradeMode()
 const                  { 
return _upgradeMode; }
 
  189    void setUpgradeMode( 
bool yesno_r )         { _upgradeMode = yesno_r; }
 
  191    bool isUpdateMode()
 const                   { 
return _updateMode; } 
 
  192    void setUpdateMode( 
bool yesno_r )          { _updateMode = yesno_r; }
 
  194    bool isVerifyingMode()
 const                { 
return _verifying; }  
 
  195    void setVerifyingMode( TriBool state_r )    { _verifying = indeterminate(state_r) ? false : bool(state_r); }
 
  197    bool solveSrcPackages()
 const               { 
return _solveSrcPackages; }
 
  198    void setSolveSrcPackages( TriBool state_r ) { _solveSrcPackages = indeterminate(state_r) ? false : bool(state_r); }
 
  201    void setRemoveOrphaned( 
bool yesno_r );
 
  202    bool removeOrphaned() 
const;
 
  204    void setRemoveUnneeded( 
bool yesno_r );
 
  205    bool removeUnneeded() 
const;
 
  207    void setFocus( ResolverFocus focus_r );
 
  210#define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER )   \ 
  211    void ZSETTER( TriBool state_r );            \ 
  212    bool ZGETTER() const;                       \ 
  225#undef ZOLV_FLAG_TRIBOOL 
  229    void applySolutions( 
const ProblemSolutionList & solutions );
 
  230    bool applySolution( 
const ProblemSolution & solution );
 
  233    sat::Transaction getTransaction();
 
  238    void reset( 
bool keepExtras = 
false );
 
  250    sat::detail::CSolver * get() 
const;
 
std::ostream & operator<<(std::ostream &str, const zypp::sat::detail::CDataiterator *obj)
#define ZOLV_FLAG_TRIBOOL(ZSETTER, ZDEFAULT, ZGETTER)
Common types used in the Resolver public API and need to be passed down to the details tree.
Libsolv transaction wrapper.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
std::list< ItemCapKind > ItemCapKindList
Easy-to use interface to the ZYPP dependency resolver.
ResolverFocus
The resolver's general attitude.
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
std::list< ResolverProblem_Ptr > ResolverProblemList
std::unordered_set< Capability > CapabilitySet
#define ZYPP_API_DEPTESTOMATIC