Author: schubi2
Date: Mon Feb 18 18:26:19 2008
New Revision: 8785
URL: http://svn.opensuse.org/viewcvs/zypp?rev=8785&view=rev
Log:
byCapabilityIndexBegin replaced by satsolver call
Modified:
trunk/libzypp/zypp/solver/detail/InstallOrder.cc
Modified: trunk/libzypp/zypp/solver/detail/InstallOrder.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/InstallOrder.cc?rev=8785&r1=8784&r2=8785&view=diff
==============================================================================
--- trunk/libzypp/zypp/solver/detail/InstallOrder.cc (original)
+++ trunk/libzypp/zypp/solver/detail/InstallOrder.cc Mon Feb 18 18:26:19 2008
@@ -36,6 +36,8 @@
#include "zypp/ResStatus.h"
#include "zypp/CapAndItem.h"
#include "zypp/NameKindProxy.h"
+#include "zypp/sat/SATResolver.h"
+#include "zypp/sat/Pool.h"
/////////////////////////////////////////////////////////////////////////
namespace zypp
@@ -175,37 +177,6 @@
return PoolItem();
}
-struct CollectProviders
-{
- const PoolItem requestor;
- PoolItemList result;
- const PoolItemSet & limitto; // limit search to members of this set
-
- CollectProviders (const PoolItem pi, const PoolItemSet & limit)
- : requestor (pi)
- , limitto (limit)
- { }
-
-
- bool operator()( const CapAndItem & c_and_i )
- {
- // item provides cap which matches a requirement from info->requestor
- // this function gets _all_ providers and filter out those which are
- // either installed or in our toinstall input list
- //
-XXX << "info(" << c_and_i.item <<")"<< endl;
- if ((c_and_i.item.resolvable() != requestor.resolvable()) // resolvable could provide its own requirement
- && (limitto.find( c_and_i.item ) != limitto.end())) // limit to members of 'limitto' set
- {
- XXX << "tovisit " << ITEMNAME(c_and_i.item) << endl;
- result.push_back (c_and_i.item);
- }
-
- return true;
- }
-
-};
-
//-----------------------------------------------------------------------------
@@ -252,31 +223,36 @@
for (CapList::const_iterator iter = requires.begin(); iter != requires.end(); ++iter)
{
const Capability requirement = *iter;
+ PoolItemList providers;
+
XXX << "check requirement " << requirement << " of " << ITEMNAME(item) << endl;
+ SATResolver satResolver(_pool, sat::Pool::instance().get());
PoolItemList tovisit;
+ PoolItemList possibleProviders = satResolver.whoProvides (requirement);
- // _world->foreachProvidingResItem (requirement, collect_providers, &info);
- Dep dep (Dep::PROVIDES);
-
- // first, look in _installed
- CollectProviders info ( item, _installed );
-
- invokeOnEach( _pool.byCapabilityIndexBegin( requirement.index(), dep ),
- _pool.byCapabilityIndexEnd( requirement.index(), dep ),
- resfilter::ByCapMatch( requirement ),
- functor::functorRef