00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #include <iostream> 00013 00014 #include "zypp/Resolver.h" 00015 #include "zypp/ZConfig.h" 00016 #include "zypp/TriBool.h" 00017 #include "zypp/solver/detail/Resolver.h" 00018 #include "zypp/solver/detail/Testcase.h" 00019 00020 using namespace std; 00021 00023 namespace zypp 00024 { 00025 00026 using namespace solver; 00027 00028 IMPL_PTR_TYPE(Resolver); 00029 00031 // 00032 // METHOD NAME : Resolver::Resolver 00033 // METHOD TYPE : Ctor 00034 // 00035 Resolver::Resolver( const ResPool & pool ) 00036 { 00037 _pimpl = new solver::detail::Resolver(pool); 00038 } 00039 00041 // 00042 // METHOD NAME : Resolver::~Resolver 00043 // METHOD TYPE : Dtor 00044 // 00045 Resolver::~Resolver() 00046 {} 00047 00049 // 00050 // Resolver interface forwarded to implementation 00051 // 00053 bool Resolver::verifySystem () 00054 { return _pimpl->verifySystem(); } 00055 00056 bool Resolver::resolvePool () 00057 { return _pimpl->resolvePool(); } 00058 00059 bool Resolver::resolveQueue( solver::detail::SolverQueueItemList & queue ) 00060 { return _pimpl->resolveQueue(queue); } 00061 00062 void Resolver::undo() 00063 { _pimpl->undo(); } 00064 00065 ResolverProblemList Resolver::problems () 00066 { return _pimpl->problems (); } 00067 00068 void Resolver::applySolutions( const ProblemSolutionList & solutions ) 00069 { _pimpl->applySolutions (solutions); } 00070 00071 bool Resolver::doUpgrade() 00072 { return _pimpl->doUpgrade(); } 00073 00074 void Resolver::doUpdate() 00075 { _pimpl->doUpdate(); } 00076 00077 void Resolver::setForceResolve( bool yesno_r ) { _pimpl->setForceResolve( yesno_r ); } 00078 bool Resolver::forceResolve() { return _pimpl->forceResolve(); } 00079 00080 void Resolver::setIgnoreAlreadyRecommended( bool yesno_r) { _pimpl->setIgnoreAlreadyRecommended( yesno_r ); } 00081 bool Resolver::ignoreAlreadyRecommended() { return _pimpl->ignoreAlreadyRecommended(); } 00082 00083 void Resolver::setOnlyRequires( bool yesno_r ) { _pimpl->setOnlyRequires( yesno_r ); } 00084 void Resolver::resetOnlyRequires() { _pimpl->setOnlyRequires( indeterminate ); } 00085 bool Resolver::onlyRequires() { return _pimpl->onlyRequires(); } 00086 00087 void Resolver::setUpgradeMode( bool yesno_r ) { return _pimpl->setUpgradeMode( yesno_r ); } 00088 bool Resolver::upgradeMode() const { return _pimpl->isUpgradeMode(); } 00089 00090 void Resolver::setAllowVendorChange( bool yesno_r ) { _pimpl->setAllowVendorChange( yesno_r ); } 00091 void Resolver::setDefaultAllowVendorChange() { _pimpl->setAllowVendorChange( indeterminate ); } 00092 bool Resolver::allowVendorChange() const { return _pimpl->allowVendorChange(); } 00093 00094 void Resolver::setSystemVerification( bool yesno_r ) { _pimpl->setVerifyingMode( yesno_r ); } 00095 void Resolver::setDefaultSystemVerification() { _pimpl->setVerifyingMode( indeterminate ); } 00096 bool Resolver::systemVerification() const { return _pimpl->isVerifyingMode(); } 00097 00098 void Resolver::setSolveSrcPackages( bool yesno_r ) { _pimpl->setSolveSrcPackages( yesno_r ); } 00099 void Resolver::setDefaultSolveSrcPackages() { _pimpl->setSolveSrcPackages( indeterminate ); } 00100 bool Resolver::solveSrcPackages() const { return _pimpl->solveSrcPackages(); } 00101 00102 void Resolver::addUpgradeRepo( Repository repo_r ) { _pimpl->addUpgradeRepo( repo_r ); } 00103 bool Resolver::upgradingRepo( Repository repo_r ) const { return _pimpl->upgradingRepo( repo_r ); } 00104 void Resolver::removeUpgradeRepo( Repository repo_r ) { _pimpl->removeUpgradeRepo( repo_r ); } 00105 void Resolver::removeUpgradeRepos() { _pimpl->removeUpgradeRepos(); } 00106 00107 void Resolver::addRequire( const Capability & capability ) { _pimpl->addExtraRequire( capability ); } 00108 void Resolver::addConflict( const Capability & capability ) { _pimpl->addExtraConflict( capability ); } 00109 void Resolver::removeRequire( const Capability & capability ) { _pimpl->removeExtraRequire( capability ); } 00110 void Resolver::removeConflict( const Capability & capability ){ _pimpl->removeExtraConflict( capability ); } 00111 00112 CapabilitySet Resolver::getRequire() { return _pimpl->extraRequires(); } 00113 CapabilitySet Resolver::getConflict() { return _pimpl->extraConflicts(); } 00114 00115 std::list<PoolItem> Resolver::problematicUpdateItems() const 00116 { return _pimpl->problematicUpdateItems(); } 00117 00118 bool Resolver::createSolverTestcase( const std::string & dumpPath, bool runSolver ) 00119 { 00120 solver::detail::Testcase testcase (dumpPath); 00121 return testcase.createTestcase(*_pimpl, true, runSolver); 00122 } 00123 00124 solver::detail::ItemCapKindList Resolver::isInstalledBy( const PoolItem & item ) 00125 { return _pimpl->isInstalledBy (item); } 00126 00127 solver::detail::ItemCapKindList Resolver::installs( const PoolItem & item ) 00128 { return _pimpl->installs (item); } 00129 00130 solver::detail::ItemCapKindList Resolver::satifiedByInstalled( const PoolItem & item ) 00131 { return _pimpl->satifiedByInstalled (item); } 00132 00133 solver::detail::ItemCapKindList Resolver::installedSatisfied( const PoolItem & item ) 00134 { return _pimpl->installedSatisfied (item); } 00135 00136 void Resolver::reset() 00137 { _pimpl->reset( false ); /* Do not keep extra requires/conflicts */ } 00138 00139 00140 00142 } // namespace zypp