1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/ResPoolProxy.h
12 #ifndef ZYPP_RESPOOLPROXY_H
13 #define ZYPP_RESPOOLPROXY_H
17 #include "zypp/base/PtrTypes.h"
19 #include "zypp/ResPool.h"
20 #include "zypp/ui/Selectable.h"
21 #include "zypp/ui/SelFilters.h"
23 ///////////////////////////////////////////////////////////////////
25 { /////////////////////////////////////////////////////////////////
27 ///////////////////////////////////////////////////////////////////
29 // CLASS NAME : ResPoolProxy
32 * \todo Make it a _Ref.
36 friend std::ostream & operator<<( std::ostream & str, const ResPoolProxy & obj );
38 typedef std::set<ui::Selectable::Ptr> SelectableIndex;
39 typedef std::map<ResObject::Kind,SelectableIndex> SelectablePool;
45 typedef SelectableIndex::iterator iterator;
46 typedef SelectableIndex::const_iterator const_iterator;
47 typedef SelectableIndex::size_type size_type;
50 /** Default ctor: no pool */
53 ResPoolProxy( ResPool_Ref pool_r );
59 /** True if there are items of a certain kind. */
60 bool empty( const ResObject::Kind & kind_r ) const;
64 { return empty( ResTraits<_Res>::kind ); }
66 /** Number of Items of a certain kind. */
67 size_type size( const ResObject::Kind & kind_r ) const;
70 size_type size() const
71 { return size( ResTraits<_Res>::kind ); }
73 /** \name Iterate through all Selectables of a certain kind. */
75 const_iterator byKindBegin( const ResObject::Kind & kind_r ) const;
78 const_iterator byKindBegin() const
79 { return byKindBegin( ResTraits<_Res>::kind ); }
82 const_iterator byKindEnd( const ResObject::Kind & kind_r ) const;
85 const_iterator byKindEnd() const
86 { return byKindEnd( ResTraits<_Res>::kind ); }
90 /** Test whether there is at least one ui::Selectable with
91 * an installed object.
93 bool hasInstalledObj( const ResObject::Kind & kind_r ) const
95 return( make_begin<ui::selfilter::ByHasInstalledObj>( kind_r )
96 != make_end<ui::selfilter::ByHasInstalledObj>( kind_r ) );
100 bool hasInstalledObj() const
101 { return hasInstalledObj( ResTraits<_Res>::kind ); }
104 /** \name Save and restore state per kind of resolvable.
105 * Simple version, no savety net.
108 void saveState( const ResObject::Kind & kind_r ) const;
111 void saveState() const
112 { return saveState( ResTraits<_Res>::kind ); }
114 void restoreState( const ResObject::Kind & kind_r ) const;
117 void restoreState() const
118 { return restoreState( ResTraits<_Res>::kind ); }
122 template<class _Filter>
123 filter_iterator<_Filter,const_iterator>
124 make_begin( _Filter filter_r, const ResObject::Kind & kind_r ) const
126 return make_filter_iterator( filter_r,
130 template<class _Filter>
131 filter_iterator<_Filter,const_iterator>
132 make_begin( const ResObject::Kind & kind_r ) const
134 return make_begin( _Filter(), kind_r );
138 template<class _Filter>
139 filter_iterator<_Filter,const_iterator>
140 make_end( _Filter filter_r, const ResObject::Kind & kind_r ) const
142 return make_filter_iterator( filter_r,
146 template<class _Filter>
147 filter_iterator<_Filter,const_iterator>
148 make_end( const ResObject::Kind & kind_r ) const
150 return make_end( _Filter(), kind_r );
154 /** Pointer to implementation */
155 RW_pointer<Impl> _pimpl;
157 ///////////////////////////////////////////////////////////////////
159 /** \relates ResPoolProxy Stream output */
160 std::ostream & operator<<( std::ostream & str, const ResPoolProxy & obj );
162 /////////////////////////////////////////////////////////////////
164 ///////////////////////////////////////////////////////////////////
165 #endif // ZYPP_RESPOOLPROXY_H