Author: schubi2 Date: Thu Jun 19 15:32:54 2008 New Revision: 10403 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10403&view=rev Log: new call :const solver::detail::ItemCapKindList satifiedByInstalled(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=10403&r1=10402&r2=10403&view=diff ============================================================================== --- trunk/libzypp/zypp/Resolver.cc (original) +++ trunk/libzypp/zypp/Resolver.cc Thu Jun 19 15:32:54 2008 @@ -137,6 +137,8 @@ { return _pimpl->isInstalledBy (item); } 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); } ///////////////////////////////////////////////////////////////// Modified: trunk/libzypp/zypp/Resolver.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Resolver.h?rev=10403&r1=10402&r2=10403&view=diff ============================================================================== --- trunk/libzypp/zypp/Resolver.h (original) +++ trunk/libzypp/zypp/Resolver.h Thu Jun 19 15:32:54 2008 @@ -270,6 +270,21 @@ */ const solver::detail::ItemCapKindList installs (const PoolItem item); + /** + * Gives information about WHICH installed items are requested by the installation of an item. + * + * \param item Evaluate additional information for this resolvable. + * \return A list of structures which contains: + * item installed Item which provide the requested 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 satifiedByInstalled(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/Resolver.cc?rev=10403&r1=10402&r2=10403&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/Resolver.cc (original) +++ trunk/libzypp/zypp/solver/detail/Resolver.cc Thu Jun 19 15:32:54 2008 @@ -106,6 +106,7 @@ _isInstalledBy.clear(); _installs.clear(); + _satifiedByInstalled.clear(); } void @@ -304,7 +305,7 @@ // Resetting additional solver information _isInstalledBy.clear(); _installs.clear(); - + _satifiedByInstalled.clear(); } bool @@ -489,6 +490,11 @@ ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::REQUIRES, !alreadySetForInstallation ); _installs.insert (make_pair( *instIter, capKindisInstalledBy)); } + + 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)); + } } } @@ -525,6 +531,11 @@ ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::RECOMMENDS, !alreadySetForInstallation ); _installs.insert (make_pair( *instIter, capKindisInstalledBy)); } + + 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)); + } } } @@ -560,6 +571,11 @@ ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::SUPPLEMENTS, !alreadySetForInstallation ); _installs.insert (make_pair( provider, capKindisInstalledBy)); } + + 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)); + } } } } @@ -603,6 +619,25 @@ return ret; } +const ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item) { + ItemCapKindList ret; + collectResolverInfo(); + + for (ItemCapKindMap::const_iterator iter = _satifiedByInstalled.find(item); iter != _satifiedByInstalled.end();) { + ItemCapKind info = iter->second; + PoolItem iterItem = iter->first; + if (iterItem == item) { + ret.push_back(info); + iter++; + } else { + // exit + iter = _satifiedByInstalled.end(); + } + } + return ret; +} + + Modified: trunk/libzypp/zypp/solver/detail/Resolver.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/Resolver.h?rev=10403&r1=10402&r2=10403&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/Resolver.h (original) +++ trunk/libzypp/zypp/solver/detail/Resolver.h Thu Jun 19 15:32:54 2008 @@ -129,6 +129,7 @@ // Additional information about the solverrun ItemCapKindMap _isInstalledBy; ItemCapKindMap _installs; + ItemCapKindMap _satifiedByInstalled; // Ignore Obsoletes @@ -238,6 +239,7 @@ // installation const ItemCapKindList isInstalledBy (const PoolItem item); const ItemCapKindList installs (const PoolItem item); + const ItemCapKindList satifiedByInstalled (const PoolItem item); }; -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org