1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/ResPoolManager.h
12 #ifndef ZYPP_RESPOOLMANAGER_H
13 #define ZYPP_RESPOOLMANAGER_H
17 #include <zypp/ResPool.h>
18 #include <zypp/ResPoolProxy.h>
20 ///////////////////////////////////////////////////////////////////
22 { /////////////////////////////////////////////////////////////////
24 ///////////////////////////////////////////////////////////////////
26 // CLASS NAME : ResPoolManager
28 /** Manage a ResObject pool. */
31 friend std::ostream & operator<<( std::ostream & str, const ResPoolManager & obj );
35 typedef pool::PoolTraits::Item Item;
36 typedef pool::PoolTraits::size_type size_type;
37 typedef pool::PoolTraits::iterator iterator;
38 typedef pool::PoolTraits::const_iterator const_iterator;
46 ResPool accessor() const
47 { return ResPool( _pimpl.getPtr() ); }
49 /** \todo Speedup by using a data mamaber invaidated only
50 * whenever the pool content changes */
51 ResPoolProxy proxy() const;
55 void insert( ResObject::constPtr ptr_r, bool installed = false )
56 { inserter(installed)( ptr_r ); }
59 template <class _InputIterator>
60 void insert( _InputIterator first_r, _InputIterator last_r, bool installed = false )
61 { std::for_each( first_r, last_r, inserter(installed) ); }
64 void erase( ResObject::constPtr ptr_r )
65 { deleter()( ptr_r ); }
68 void erase( iterator first_r, iterator last_r )
69 { std::for_each( first_r, last_r, deleter() ); }
77 typedef pool::PoolTraits::ItemContainerT ContainerT;
78 typedef pool::PoolTraits::Impl Impl;
79 typedef pool::PoolTraits::Inserter Inserter;
80 typedef pool::PoolTraits::Deleter Deleter;
83 /** Pointer to implementation */
84 RW_pointer<pool::PoolTraits::Impl> _pimpl;
86 Inserter inserter( bool installed )
87 { return Inserter( *_pimpl, installed ); }
90 { return Deleter( *_pimpl ); }
92 ///////////////////////////////////////////////////////////////////
94 /** \relates ResPoolManager Stream output */
95 std::ostream & operator<<( std::ostream & str, const ResPoolManager & obj );
97 /////////////////////////////////////////////////////////////////
99 ///////////////////////////////////////////////////////////////////
100 #endif // ZYPP_RESPOOLMANAGER_H