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); }
+
/////////////////////////////////////////////////////////////////
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;
};
_isInstalledBy.clear();
_installs.clear();
- _satifiedByInstalled.clear();
+ _satifiedByInstalled.clear();
+ _installedSatisfied.clear();
}
void
// Resetting additional solver information
_isInstalledBy.clear();
_installs.clear();
- _satifiedByInstalled.clear();
+ _satifiedByInstalled.clear();
+ _installedSatisfied.clear();
}
bool
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));
}
}
}
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));
}
}
}
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));
}
}
}
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;
+}
///////////////////////////////////////////////////////////////////
// Additional information about the solverrun
ItemCapKindMap _isInstalledBy;
ItemCapKindMap _installs;
- ItemCapKindMap _satifiedByInstalled;
+ ItemCapKindMap _satifiedByInstalled;
+ ItemCapKindMap _installedSatisfied;
// Ignore Obsoletes
const ItemCapKindList isInstalledBy (const PoolItem item);
const ItemCapKindList installs (const PoolItem item);
const ItemCapKindList satifiedByInstalled (const PoolItem item);
-
+ const ItemCapKindList installedSatisfied (const PoolItem item);
};