Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / zypp / pool / PoolTraits.h
index c4f0be9..5b2770b 100644 (file)
 
 #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
@@ -33,28 +36,25 @@ namespace zypp
 
     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; }
     };
 
     ///////////////////////////////////////////////////////////////////
@@ -65,44 +65,32 @@ namespace zypp
     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;
-
     };
     ///////////////////////////////////////////////////////////////////