Author: matz
Date: Wed Nov 28 04:15:12 2007
New Revision: 7947
URL: http://svn.opensuse.org/viewcvs/zypp?rev=7947&view=rev
Log:
Add back a simple CapFactory::slow_parse function, and use it where
possible. The other places are either going to be removed or need
CapSet::insert, which we don't yet have.
Modified:
branches/use-solv/libzypp/zypp/CapFactory.cc
branches/use-solv/libzypp/zypp/CapFactory.h
branches/use-solv/libzypp/zypp/solver/detail/QueueItemConflict.cc
branches/use-solv/libzypp/zypp/solver/detail/QueueItemRequire.cc
branches/use-solv/libzypp/zypp/solver/detail/QueueItemUninstall.cc
branches/use-solv/libzypp/zypp/solver/detail/ResolverUpgrade.cc
Modified: branches/use-solv/libzypp/zypp/CapFactory.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/use-solv/libzypp/zypp/CapFactory.cc?rev=7947&r1=7946&r2=7947&view=diff
==============================================================================
--- branches/use-solv/libzypp/zypp/CapFactory.cc (original)
+++ branches/use-solv/libzypp/zypp/CapFactory.cc Wed Nov 28 04:15:12 2007
@@ -127,6 +127,8 @@
namespace zypp
{ /////////////////////////////////////////////////////////////////
+ extern Pool *the_pool;
+
///////////////////////////////////////////////////////////////////
//
// CLASS NAME : CapFactoryImpl
@@ -253,6 +255,40 @@
}
#endif
+ Capability CapFactory::slow_parse(
+ const Resolvable::Kind & refers_r,
+ const std::string & name_r,
+ Rel op_r,
+ const Edition & edition_r ) const
+ {
+ Id id = str2id (the_pool, name_r.c_str(), 1);
+ if (op_r == Rel::ANY || op_r == Rel::NONE)
+ return Capability(id);
+ int flags;
+ switch (op_r.inSwitch())
+ {
+ /* We shouldn't be called with Rel::NONE. But accept it, and silently
+ generate an ANY relation. */
+ case Rel::ANY_e:
+ case Rel::NONE_e:
+ return Capability(id);
+ case Rel::EQ_e:
+ flags = 2;
+ case Rel::NE_e:
+ flags = 5;
+ case Rel::LT_e:
+ flags = 4;
+ case Rel::LE_e:
+ flags = 6;
+ case Rel::GT_e:
+ flags = 1;
+ case Rel::GE_e:
+ flags = 3;
+ }
+ id = rel2id (the_pool, id, edition_r.get_id(), flags, 1);
+ return Capability(id);
+ }
+
#if 0
///////////////////////////////////////////////////////////////////
//
Modified: branches/use-solv/libzypp/zypp/CapFactory.h
URL: http://svn.opensuse.org/viewcvs/zypp/branches/use-solv/libzypp/zypp/CapFactory.h?rev=7947&r1=7946&r2=7947&view=diff
==============================================================================
--- branches/use-solv/libzypp/zypp/CapFactory.h (original)
+++ branches/use-solv/libzypp/zypp/CapFactory.h Wed Nov 28 04:15:12 2007
@@ -60,6 +60,11 @@
return Capability (id);
}
+ Capability slow_parse( const Resolvable::Kind & refers_r,
+ const std::string & name_r,
+ Rel op_r,
+ const Edition & edition_r ) const;
+
#if 0
/** Parse Capability from string providing Resolvable::Kind.
* \a strval_r is expected to define a valid Capability.
Modified: branches/use-solv/libzypp/zypp/solver/detail/QueueItemConflict.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/use-solv/libzypp/zypp/solver/detail/QueueItemConflict.cc?rev=7947&r1=7946&r2=7947&view=diff
==============================================================================
--- branches/use-solv/libzypp/zypp/solver/detail/QueueItemConflict.cc (original)
+++ branches/use-solv/libzypp/zypp/solver/detail/QueueItemConflict.cc Wed Nov 28 04:15:12 2007
@@ -227,9 +227,7 @@
UpgradeCandidate upgrade_info (provider, context);
- //Capability maybe_upgrade_cap = factory.parse ( provider->kind(), provider->name(), Rel::ANY, Edition::noedition );
- // XXX
- Capability maybe_upgrade_cap;
+ Capability maybe_upgrade_cap = factory.slow_parse ( provider->kind(), provider->name(), Rel::ANY, Edition::noedition );
// pool->foreachProvidingResItem (maybe_upgrade_dep, upgrade_candidates_cb, (void *)&upgrade_info);
Dep dep( Dep::PROVIDES );
Modified: branches/use-solv/libzypp/zypp/solver/detail/QueueItemRequire.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/use-solv/libzypp/zypp/solver/detail/QueueItemRequire.cc?rev=7947&r1=7946&r2=7947&view=diff
==============================================================================
--- branches/use-solv/libzypp/zypp/solver/detail/QueueItemRequire.cc (original)
+++ branches/use-solv/libzypp/zypp/solver/detail/QueueItemRequire.cc Wed Nov 28 04:15:12 2007
@@ -736,16 +736,14 @@
bool nameFit = false;
CapFactory factory;
-#if 0
if (isKindcapability::NamedCap( _capability ) ) {
- Capability capTest = factory.parse ( (*it)->kind(), (*it)->name(), Rel::ANY, Edition::noedition );
+ Capability capTest = factory.slow_parse ( (*it)->kind(), (*it)->name(), Rel::ANY, Edition::noedition );
if (capTest.matches (_capability) == CapMatch::yes) {
nameFit = true;
_XDEBUG("Required Capability " << _capability << " has the same name as the provider:" << *it);
_XDEBUG(" --> do not trow away althout it could have the wrong architecture");
}
}
-#endif
next = it; ++next;
if ((*it)->arch() != bestArch
Modified: branches/use-solv/libzypp/zypp/solver/detail/QueueItemUninstall.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/use-solv/libzypp/zypp/solver/detail/QueueItemUninstall.cc?rev=7947&r1=7946&r2=7947&view=diff
==============================================================================
--- branches/use-solv/libzypp/zypp/solver/detail/QueueItemUninstall.cc (original)
+++ branches/use-solv/libzypp/zypp/solver/detail/QueueItemUninstall.cc Wed Nov 28 04:15:12 2007
@@ -457,12 +457,11 @@
for (Patch::AtomList::const_iterator it = atoms.begin(); it != atoms.end(); ++it) {
Resolvable::constPtr res = *it;
- // XXX
- /*Capability capAtom = factory.parse ( res->kind(), res->name(), Rel::EQ, res->edition());
+ Capability capAtom = factory.slow_parse ( res->kind(), res->name(), Rel::EQ, res->edition());
invokeOnEach( pool().byCapabilityIndexBegin( capAtom.index(), dep ),
pool().byCapabilityIndexEnd( capAtom.index(), dep ),
functor::chain( resfilter::ByCaIInstalled(), resfilter::ByCapMatch( capAtom ) ),
- functor::functorRef