Author: schubi2 Date: Mon Jun 23 15:29:01 2008 New Revision: 10445 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10445&view=rev Log: * Gives information about WHICH items require an already installed item. * * \param item Evaluate additional information for this resolvable. * \return A list of structures which contains: * item Item which requires this capability. * cap Capability which is needed * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) * * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. * */ const solver::detail::ItemCapKindList installedSatisfied(const PoolItem item); Modified: trunk/libzypp/zypp/Resolver.cc trunk/libzypp/zypp/Resolver.h trunk/libzypp/zypp/solver/detail/Resolver.cc trunk/libzypp/zypp/solver/detail/Resolver.h Modified: trunk/libzypp/zypp/Resolver.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Resolver.cc?rev=1044... ============================================================================== --- trunk/libzypp/zypp/Resolver.cc (original) +++ trunk/libzypp/zypp/Resolver.cc Mon Jun 23 15:29:01 2008 @@ -138,7 +138,10 @@ const solver::detail::ItemCapKindList Resolver::installs (const PoolItem item) { return _pimpl->installs (item); } const solver::detail::ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item) - { return _pimpl->satifiedByInstalled (item); } + { return _pimpl->satifiedByInstalled (item); } + const solver::detail::ItemCapKindList Resolver::installedSatisfied (const PoolItem item) + { return _pimpl->installedSatisfied (item); } + ///////////////////////////////////////////////////////////////// Modified: trunk/libzypp/zypp/Resolver.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Resolver.h?rev=10445... ============================================================================== --- trunk/libzypp/zypp/Resolver.h (original) +++ trunk/libzypp/zypp/Resolver.h Mon Jun 23 15:29:01 2008 @@ -285,6 +285,22 @@ const solver::detail::ItemCapKindList satifiedByInstalled(const PoolItem item); + /** + * Gives information about WHICH items require an already installed item. + * + * \param item Evaluate additional information for this resolvable. + * \return A list of structures which contains: + * item Item which requires this capability. + * cap Capability which is needed + * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) + * + * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. + * + */ + const solver::detail::ItemCapKindList installedSatisfied(const PoolItem item); + + + private: solver::detail::Resolver_Ptr _pimpl; }; Modified: trunk/libzypp/zypp/solver/detail/Resolver.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/Resolv... ============================================================================== --- trunk/libzypp/zypp/solver/detail/Resolver.cc (original) +++ trunk/libzypp/zypp/solver/detail/Resolver.cc Mon Jun 23 15:29:01 2008 @@ -106,7 +106,8 @@ _isInstalledBy.clear(); _installs.clear(); - _satifiedByInstalled.clear(); + _satifiedByInstalled.clear(); + _installedSatisfied.clear(); } void @@ -305,7 +306,8 @@ // Resetting additional solver information _isInstalledBy.clear(); _installs.clear(); - _satifiedByInstalled.clear(); + _satifiedByInstalled.clear(); + _installedSatisfied.clear(); } bool @@ -493,7 +495,10 @@ if (provider.status().staysInstalled()) { // Is already satisfied by an item which is installed ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::REQUIRES, false ); - _satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy)); + _satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy)); + + ItemCapKind installedSatisfied( *instIter, *capIt, Dep::REQUIRES, false ); + _installedSatisfied.insert (make_pair( provider, installedSatisfied)); } } } @@ -535,7 +540,10 @@ if (provider.status().staysInstalled()) { // Is already satisfied by an item which is installed ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::RECOMMENDS, false ); - _satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy)); + _satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy)); + + ItemCapKind installedSatisfied( *instIter, *capIt, Dep::RECOMMENDS, false ); + _installedSatisfied.insert (make_pair( provider, installedSatisfied)); } } } @@ -576,6 +584,9 @@ if (instIter->status().staysInstalled()) { // Is already satisfied by an item which is installed ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::SUPPLEMENTS, !alreadySetForInstallation ); _satifiedByInstalled.insert (make_pair( provider, capKindisInstalledBy)); + + ItemCapKind installedSatisfied( provider, *capIt, Dep::SUPPLEMENTS, false ); + _installedSatisfied.insert (make_pair( *instIter, installedSatisfied)); } } } @@ -639,8 +650,23 @@ return ret; } +const ItemCapKindList Resolver::installedSatisfied (const PoolItem item) { + ItemCapKindList ret; + collectResolverInfo(); - + for (ItemCapKindMap::const_iterator iter = _installedSatisfied.find(item); iter != _installedSatisfied.end();) { + ItemCapKind info = iter->second; + PoolItem iterItem = iter->first; + if (iterItem == item) { + ret.push_back(info); + iter++; + } else { + // exit + iter = _installedSatisfied.end(); + } + } + return ret; +} /////////////////////////////////////////////////////////////////// Modified: trunk/libzypp/zypp/solver/detail/Resolver.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/Resolv... ============================================================================== --- trunk/libzypp/zypp/solver/detail/Resolver.h (original) +++ trunk/libzypp/zypp/solver/detail/Resolver.h Mon Jun 23 15:29:01 2008 @@ -129,7 +129,8 @@ // Additional information about the solverrun ItemCapKindMap _isInstalledBy; ItemCapKindMap _installs; - ItemCapKindMap _satifiedByInstalled; + ItemCapKindMap _satifiedByInstalled; + ItemCapKindMap _installedSatisfied; // Ignore Obsoletes @@ -240,7 +241,7 @@ const ItemCapKindList isInstalledBy (const PoolItem item); const ItemCapKindList installs (const PoolItem item); const ItemCapKindList satifiedByInstalled (const PoolItem item); - + const ItemCapKindList installedSatisfied (const PoolItem item); }; -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org