#include <set>
#include <map>
+#include <list>
+#include <vector>
+
+#include "zypp/base/Iterator.h"
+#include "zypp/base/Tr1hash.h"
#include "zypp/PoolItem.h"
-#include "zypp/Capability.h"
-#include "zypp/Dep.h"
-#include "zypp/ResStatus.h"
+#include "zypp/pool/ByIdent.h"
+#include "zypp/sat/Pool.h"
///////////////////////////////////////////////////////////////////
namespace zypp
{ /////////////////////////////////////////////////////////////////
- class CapAndItem;
- class Repository;
+ class PoolQuery;
///////////////////////////////////////////////////////////////////
namespace pool
class PoolImpl;
- /** */
- struct PoolImplInserter
+ /** Pool internal filter skiping invalid/unwanted PoolItems. */
+ struct ByPoolItem
{
- void operator()( ResObject::constPtr ptr_r );
-
- PoolImplInserter( PoolImpl & poolImpl_r, bool installed_r )
- : _poolImpl( poolImpl_r )
- , _installed( installed_r )
- {}
- PoolImpl & _poolImpl;
- bool _installed;
+ bool operator()( const PoolItem & pi ) const
+ { return bool(pi); }
};
- /** */
- struct PoolImplDeleter
+ /** In CXX0X std::_Select2nd does no longer derive from std::unary_function
+ */
+ template<typename _Pair>
+ struct P_Select2nd : public std::unary_function<_Pair, typename _Pair::second_type>
{
- void operator()( ResObject::constPtr ptr_r );
+ typename _Pair::second_type&
+ operator()(_Pair& __x) const
+ { return __x.second; }
- PoolImplDeleter( PoolImpl & poolImpl_r )
- : _poolImpl( poolImpl_r )
- {}
- PoolImpl & _poolImpl;
+ const typename _Pair::second_type&
+ operator()(const _Pair& __x) const
+ { return __x.second; }
};
///////////////////////////////////////////////////////////////////
struct PoolTraits
{
public:
- /** */
- typedef PoolItem Item;
+ typedef sat::detail::SolvableIdType SolvableIdType;
/** pure items */
- typedef std::set<Item> ItemContainerT;
- typedef ItemContainerT::iterator iterator;
- typedef ItemContainerT::const_iterator const_iterator;
+ typedef std::vector<PoolItem> ItemContainerT;
+ typedef ItemContainerT::const_iterator item_iterator;
+ typedef filter_iterator<ByPoolItem,ItemContainerT::const_iterator>
+ const_iterator;
typedef ItemContainerT::size_type size_type;
- // internal organization
- typedef std::map<std::string,ItemContainerT> NameItemContainerT;
- /** hashed by name */
- typedef ItemContainerT::const_iterator byName_iterator;
-
- // internal organization
- typedef std::list<zypp::CapAndItem> CapItemContainerT; // (why,who) pairs
- typedef std::map<std::string,CapItemContainerT> CapItemStoreT; // capability.index -> (why,who) pairs
- typedef std::map<Dep,CapItemStoreT> DepCapItemContainerT; // Dep -> (capability.index -> (why,who) pairs)
+ /** ident index */
+ typedef std::tr1::unordered_multimap<sat::detail::IdType, PoolItem>
+ Id2ItemT;
+ typedef P_Select2nd<Id2ItemT::value_type> Id2ItemValueSelector;
+ typedef transform_iterator<Id2ItemValueSelector, Id2ItemT::const_iterator>
+ byIdent_iterator;
- typedef CapItemContainerT::iterator capitemiterator;
- typedef CapItemContainerT::const_iterator const_capitemiterator;
- typedef CapItemContainerT::size_type capitemsize_type;
- /** hashed by capability index */
- typedef const_capitemiterator byCapabilityIndex_iterator;
+ /** list of known Repositories */
+ typedef sat::Pool::RepositoryIterator repository_iterator;
- /* list of known Repositories */
- typedef std::set<Repository> RepoContainerT;
- typedef RepoContainerT::const_iterator repository_iterator;
+ /** hard locks from etc/zypp/locks */
+ typedef std::list<PoolQuery> HardLockQueries;
+ typedef HardLockQueries::const_iterator hardLockQueries_iterator;
typedef PoolImpl Impl;
typedef shared_ptr<PoolImpl> Impl_Ptr;
typedef shared_ptr<const PoolImpl> Impl_constPtr;
- typedef PoolImplInserter Inserter;
- typedef PoolImplDeleter Deleter;
-
- /** Map of Capabilities and "who" has set it*/
- typedef std::map<ResStatus::TransactByValue,Capabilities> AdditionalCapabilities;
-
};
///////////////////////////////////////////////////////////////////