#define ZYPP_POOL_POOLTRAITS_H
#include <set>
+#include <map>
+#include <list>
+#include <vector>
+
+#include "zypp/base/Iterator.h"
+#include "zypp/base/Hash.h"
#include "zypp/PoolItem.h"
+#include "zypp/pool/ByIdent.h"
+#include "zypp/sat/Pool.h"
///////////////////////////////////////////////////////////////////
namespace zypp
{ /////////////////////////////////////////////////////////////////
+
+ 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 )
- : _poolImpl( poolImpl_r )
- {}
- PoolImpl & _poolImpl;
+ 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 TPair>
+ struct P_Select2nd : public std::unary_function<TPair, typename TPair::second_type>
{
- void operator()( ResObject::constPtr ptr_r );
+ typename TPair::second_type&
+ operator()(TPair& __x) const
+ { return __x.second; }
- PoolImplDeleter( PoolImpl & poolImpl_r )
- : _poolImpl( poolImpl_r )
- {}
- PoolImpl & _poolImpl;
+ const typename TPair::second_type&
+ operator()(const TPair& __x) const
+ { return __x.second; }
};
///////////////////////////////////////////////////////////////////
struct PoolTraits
{
public:
- /** */
- typedef PoolItem Item;
- typedef std::set<Item> ContainerT;
- typedef ContainerT::size_type size_type;
- typedef ContainerT::iterator iterator;
- typedef ContainerT::const_iterator const_iterator;
+ typedef sat::detail::SolvableIdType SolvableIdType;
+
+ /** pure items */
+ 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;
+
+ /** ident index */
+ typedef std::unordered_multimap<sat::detail::IdType, PoolItem>
+ Id2ItemT;
+ typedef P_Select2nd<Id2ItemT::value_type> Id2ItemValueSelector;
+ typedef transform_iterator<Id2ItemValueSelector, Id2ItemT::const_iterator>
+ byIdent_iterator;
+
+ /** list of known Repositories */
+ typedef sat::Pool::RepositoryIterator 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;
};
///////////////////////////////////////////////////////////////////